Links nur im eigenen Profil sichtbar machen
Eingetragen von wanderfrosch (56)
am 14.03.2008 - 18:36 Uhr in
am 14.03.2008 - 18:36 Uhr in
Hallo,
ich versuche gerade (seit einiger Zeit) einen Link in das Benutzerprofil einzubauen. Dieser soll aber nur auf der Seite des eigenen Profils sichtbar sein. Aber irgendwie funktioniert das nicht.
Was vielleicht noch interessant ist, ich habe versucht den Code über Minipanels einzufügen.
<?php
global $user;
if ($user->uid == $node->uid){
return "<a href=\"test/node/add/biete\">--> hinzufügen</a>";
}
?>
Kann mir da jemand weiterhelfen???
- Anmelden oder Registrieren um Kommentare zu schreiben
Views ist Dein Freund.
am 15.03.2008 - 05:32 Uhr
Die Loesung ist ganz einfach:
1.
Der Inhalt welcher von der Seite gezeigt wird die Du als Tab im Userprofil einbinden willst wird als View - Seiten-View - erstellt.
2.
Als URL fuer diesen View verwendest Du user/$arg/meineseite
3.
Im Bereich der Seitenkonfiguration des View gibt es ganz unten den Link "Menü"
- Die beiden Optionen "Menü bereitstellen" und "Menü als Karteireiter bereitstellen" aktivieren.
- Mit "Karteireitergewichtung" kannst Du die Stelle bestimmen wo der Tab erscheinen soll, weiter links oder weiter rechts.
- Der "Menütitel" ist die Bezeichnung des einzufuegenden Tab.
Beim Link "Default Menu Tab" nicht aktivieren.
4.
Als Argument (bei der Viewkonfiguration) verwendest Du "Benutzer: UID ist der Autor".
5
Weiterhin koennte man auch wahlweise zu Pkt. 4. mit einem Filter auf die Inhalte eines Users einschraenken:
"Node: Autor ist der aktuelle Benutzer" oder "Node: Current User Authored or Commented".
6.
Meine Beschreibung geht davon aus das ein User Inhalte erstellen kann die mit dem View zusammengestellt werden. Gibt es fuer einen einzelnen User (noch) keinen Inhalt den der View anzeigen kann so ist folgendes moeglich, um dem User eine kleine Hilfe zu geben eine solchen Inhalt zu erstellen wenn er auf den Tab in seinem Profile klickt.
7.
Im Bereich der Seitenkonfiguration des View kann man unter dem Link "Leerer Text" eine Info mit einem Link zum Erstellen betreffender Inhalte bereitstellen.
Tipp:
Dabei beim Eingabeformat unter dem Textfeld darauf achten dass nicht die benoetigten Linktags weggefiltert werden.
Als Beispiel fuer ein solchen Eintrag fuer den leeren Text koennte stehen. Code:
<p> </p>
<p>In diesem Bereich gibt es noch keinen Inhalt. Um eine Seite in diesem Bereich zu erstellen <a href="/node/add/der-entsprechende-Inhaltstyp" target="_parent">hier klicken</a>.</p>
Den Namen des "der-entsprechende-Inhaltstyp" kann man im Bereich "Inhalte erstellen" erfahren.
8.
Solltest Du den Breadcrumb verwenden wollen wenn man auf den neuen Tab klickt bzw. wenn Du den Breadcrum beeinflussen willst wenn man auf den neuen Tab klickt kannst Du im View als "Argument Handling Code" entsprechend Einfluss auf den Breadcrumb nehmen.
Beispiel um einen Breadcrumb in einem View zu erstellen:
$arr = array(
l(t('Home'), 'node'),
l(t('User account'), 'user'),
'Mein Thema'
);
drupal_set_breadcrumb($arr);
Wobei "Mein Thema" dem Inhalt der Seiten entspricht wenn die einzelnen User auf den neuen Tab klicken.
Achtung:
Der Link "node" trifft nur zu wenn Du in der Administration "node" auch als Startseite festgelegt hast. Sonnst gilt fuer den Link "node" in der Breadcrumbdefinition das was als Startseite festgelegt wurde.
9.
Wenn Du den Breadcrumb auch noch beeinflussen willst wenn man auf Links von Inhalten auf der unter dem neuen Tab gezeigten Seite klickt kannst Du das Modul "custom_breadcrumbs" verwenden: http://drupal.org/project/custom_breadcrumbs
--------------------------------------------------------------------------------
So, ich hoffe das war Jetzt nicht zu viel auf Deine kurze Frage.
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Da geht noch was.
Views ist mein Freund...
am 15.03.2008 - 13:56 Uhr
...mit Freunden ist das immer so´ne Sache. :-))
Hallo quiptime,
erstmal Viiiielen Dank für die ausführliche, kompetente Antwort.
Nur leider hilft mir das nicht wirklich weiter.
Vielleicht habe ich mich nicht deutlich genug ausgedrückt.
Ich möchte innerhalb einen Panels einen Link einbauen.
Weil, TABs finde ich, für das was ich da vorhabe, eher unpassend.
Ich habe mal diesen Screenshot gemacht um die ganze Sache etwas zu verdeutlichen.
Also dürfte doch eine einfache if-Abfrage reichen ??? - grübel.
So nach dem Motto: "Wenn der eingeloggte User" == "dem angezeigten Profil ist" - dann zeige den Link" - sonst halt nichts.
So habe ich mir das zumindest vorgestellt und probiert.
Bei Panels: "Inhalt hinzufügen" >> "New custom content"
LG
Der Wanderfrosch
Wie Jetzt?
am 15.03.2008 - 14:03 Uhr
ich versuche gerade (seit einiger Zeit) einen Link in das Benutzerprofil einzubauen. Dieser soll aber nur auf der Seite des eigenen Profils sichtbar sein. Aber irgendwie funktioniert das nicht.
Was vielleicht noch interessant ist, ich habe versucht den Code über Minipanels einzufügen.
Das habe ich noch kapiert. Nach deinem letzten Post weiss ich nicht wo der Link, der nun doch kein Tab sein soll, erscheinen soll.
Meinst Du im Navigationsblock des jeweiligen User?
Nebenbei, die Hauptnavigation im Userprofil besteht aus Tabs.
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Da geht noch was.
Na so...
am 15.03.2008 - 16:01 Uhr
...wie es auf dem Screenshot zusehen ist (siehe den roten Kreis).
Ich wollte es halt nicht über Tabs machen, weil ich das nicht so Benutzerfreundlich finde.
Ich möchte den Link neben dem Thread in einem seperaten Panel stehen haben.
Ist der Screenshot bei Dir sichtbar???
Ich wills mal anders beschreiben.
- User A sieht in seinem Profil den Link.
- Geht er auf das Profil von User B sieht er den Link nicht.
Ich hoffe, ich habe jetzt die Verwirrung perfekt gemacht. ;-))
LG
Der Wanderfrosch
User Profile Template
am 15.03.2008 - 20:24 Uhr
Hallo,
ich versuche gerade (seit einiger Zeit) einen Link in das Benutzerprofil einzubauen. Dieser soll aber nur auf der Seite des eigenen Profils sichtbar sein. Aber irgendwie funktioniert das nicht.
Was vielleicht noch interessant ist, ich habe versucht den Code über Minipanels einzufügen.
<?php
global $user;
if ($user->uid == $node->uid){
return "<a href=\"test/node/add/biete\">--> hinzufügen</a>";
}
?>
Kann mir da jemand weiterhelfen???
Der Code von dir dient zum Vergleich des Users, der gerade einen Node ansieht, mit dem Autor des Nodes. Der global $user ist IMMER der gerade angemeldete User.
Was du möchtest ist etwas anderes.
Ich würde das über ein neues Profil-Template machen. Zuerst diesen Code in deine template.php schreiben:
<?php
function phptemplate_user_profile($user, $fields = array()) {
return _phptemplate_callback('user-profile', array('account' => $user, 'fields' => $fields));
}
?>
In der user-profile.tpl.php stehen dir jetzt 2 Variablen zur Verfügung:
$account ist der user, dessen Profil gerade auf der Seite angezeigt wird
$user ist der angemeldete User, der sich dieses Profil gerade anschaut.
Sind beide gleich, schaut sich ein Benutzer gerade sein eigenes Profil an und dann generierst du den Link.
vg
--
md - DrupalCenter
mdwp* :: Drupal Services
vg
md - DrupalCenter.de
mdwp* Drupal Consulting & Services
Genau das möchte ich
am 17.03.2008 - 10:06 Uhr
Hallo,
Der Code von dir dient zum Vergleich des Users, der gerade einen Node ansieht, mit dem Autor des Nodes. Der global $user ist IMMER der gerade angemeldete User.
Genau diesen Vergleich will ich halt anstellen.
Aber der von mir gepostete Code will nicht mitarbeiten.
LG
Der Wanderfrosch
Wo will der Code denn nicht
am 17.03.2008 - 10:20 Uhr
Wo will der Code denn nicht 'mitarbeiten'? Hast du den Code in die template.php geschrieben? Hast du ein neues User-Profil Template angelegt? So tut der Code ja noch nichts.
vg
--
md - DrupalCenter
mdwp* :: Drupal Services
vg
md - DrupalCenter.de
mdwp* Drupal Consulting & Services
Ich habe versucht den Code
am 17.03.2008 - 11:04 Uhr
Ich habe versucht den Code über bei Panels: "Inhalt hinzufügen" >> "New custom content".
Einzufügen.
Das sollte doch ( ...in meiner Theorie!? ;-) ) auch funktionieren.
Ich will das alles über Panels machen.
Nee
am 17.03.2008 - 14:09 Uhr
Mein Code ist für die template.php und ein neues User Profil Template gedacht.
vg
--
md - DrupalCenter
mdwp* :: Drupal Services
vg
md - DrupalCenter.de
mdwp* Drupal Consulting & Services