Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Module ›

[gelöst] "Flag Links" im Block anzeigen $uid? $node->uid?

Eingetragen von Ionit (1798)
am 08.08.2010 - 23:35 Uhr in
  • Module
  • Drupal 6.x

Nabend schön,

ich versuche gerade die Flag-Links in einem Block anzeigen zu lassen damit ich sie besser im User-Profile nutzen kann.

Zuerst habe ich diese generelle Anleitung durchgelesen. http://drupal.org/node/295383 - damit schaffe ich es den Link über die node.tpl.php einzubinden und frei positionieren zu können.

Nun sollen die Links aber in den Block - dazu gibt es hier eine Anleitung http://drupal.org/node/554548

Ich verwende im Block folgenden Code

<?php
//If in single node page
if ( arg(0) == 'node' && is_numeric(arg(1)) && ! arg(2) ) {
 
//Load node to get nid
 
$node = node_load(arg(1));
 
//Print Flag link
 
print flag_create_link('bookmarks', $node->nid);
}
?>

Der Bookmark-Flag-Link wird aber nur im Node angezeigt - nicht auf der Profile-Page (ich nutze Content-Profile -> der Node ist ja gleichzeitg das Profile - er ist unter content/benny zu erreichen - das profile unter users/benny.)

Wenn ich nun content/benny aufrufe wird der Block mit dem Bookmark-Link angezeigt - rufe ich das Profile auf (users/benny) wird der Block nicht angezeigt.

Ich habe nun folgendes versucht
print flag_create_link('bookmarks', $node->uid);
print flag_create_link('bookmarks', $node->nid);
print flag_create_link('bookmarks', $account->uid);
print flag_create_link('bookmarks', $uid);

aber ich bekomme keine Ausgabe des Blocks im Profile.

Die Sichtbarkeit des Blocks wird nicht eingeschränkt/gefiltert.

Nun bin ich ratlos.

Wäre von Euch jemand so nett und könnte mir sagen was ich falsch mache?

Danke und Gruß

Matthias

‹ TinyMCE mit IMCE klappt nicht FCK-Editor zerstört vorhandene Node-Formatierung ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

node

Eingetragen von stBorchert (6003)
am 09.08.2010 - 07:47 Uhr

Hallo.
Hast Du Dir mal Debug-Ausgaben gemacht um zu schauen, ob da auch die korrekte Node geladen wird?

<?php
print arg(0);
if (
arg(0) == 'node' && is_numeric(arg(1)) && !isset(arg(2))) {
 
$node = node_load(arg(1));
  print
$node->nid;
  print
$node->title;
  print
flag_create_link('bookmarks', $node->nid);
}
?>

Die Verwendung der Nid ist schon richtig (siehe http://api.lullabot.com/flag_create_link).

 Stefan

Tipp: Beachte die Verhaltensregeln des DrupalCenter.

Logo undpaul

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo Stefan. danke für die

Eingetragen von Ionit (1798)
am 09.08.2010 - 13:28 Uhr

Hallo Stefan.

danke für die Rückmeldung.

In PHP-Dingen bin ich leider vollkommen unbewandert.

Ich habe den Code

<?php
 
print arg(0);
  if (
arg(0) == 'node' && is_numeric(arg(1)) && !isset(arg(2))) {
   
$node = node_load(arg(1));
    print
$node->nid;
    print
$node->title;
    print
flag_create_link('bookmarks', $node->nid);
  }
?>

trotzdem einfach mal in node.tpl.php/user-profile.tpl.php reingepackt.

Dies gibt mir eine Fehlermeldung aus
Die Fehlermeldung lautet "Fatal error: Can't use function return value in write context in node.tpl.php on line 19"

Zeile 19 ist if (arg(0) == 'node' && is_numeric(arg(1)) && !isset(arg(2))) {

Ich hab leider überhaupt keinen Plan was das bedeutet bzw. wie ich den Fehler beheben kann.

Ich habe letzte Nacht ein Issue beim Flag-Modul reingestellt und das Problem geschildert - ich bekam dann eine Antwort von quicksketch(Lullabot)- dieser meinte folgendes ....

Zitat:

This restricts it to just node pages, where arg(0) == 'node' and arg(1) is the nid. If you're going to show it on user pages, arg(0) is "user".

Daraus schließe ich, dass der Code folgendermaßern aussehen muss.

<?php
//If in single node page
if ( arg(0) == 'user' && is_numeric(arg(1)) && ! arg(2) ) {
 
//Load node to get nid
 
$node = node_load(arg(1));
 
//Print Flag link
 
print flag_create_link('bookmarks', $node->nid);
}
?>

Ich habs natürlich so ausprobiert aber leider wird der Block mit den Flag-Links im User-Profile trotzdem nicht angezeigt.

Ich sehe im Moment leider nur große Fragezeichen - falls Du noch einen Tip hast würde ich mich freuen.

Danke und Gruß

Matthias

Drupal rockt!!!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Block

Eingetragen von stBorchert (6003)
am 09.08.2010 - 13:26 Uhr
Noob-Anfänger schrieb

...einfach mal in node.tpl.php/user-profile.tpl.php reingepackt.

Der Code ist für den Block gedacht. Genau dort hattest Du doch auch Deinen Code von oben, oder nicht?

 Stefan

Tipp: Beachte die Verhaltensregeln des DrupalCenter.

Logo undpaul

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hab ich natürlich auch

Eingetragen von Ionit (1798)
am 09.08.2010 - 13:38 Uhr

Hab ich natürlich auch ausprobiert.

Das gibt aber leider auch eine Fehlermeldung - wenn ich den Block mit Code speichern will, komme ich nichtmal mehr auf die "Blöckeseite" zurück! Auch das Profile kann ich nicht mehr aufrufen.

Fehlermeldung:
Fatal error: Can't use function return value in write context in E:\xampp\htdocs\projekt\includes\common.inc(1699) : eval()'d code on line 3

eval()'d code on line 3 ist wieder ...
if (arg(0) == 'node' && is_numeric(arg(1)) && !isset(arg(2))) {

Grübelnde Grüße

Drupal rockt!!!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo Stefan, ich habe bei

Eingetragen von Ionit (1798)
am 09.08.2010 - 13:47 Uhr

Hallo Stefan,

ich habe bei dem Code

<?php
print arg(0);
if (
arg(0) == 'node' && is_numeric(arg(1)) && !isset(arg(2))) {
 
$node = node_load(arg(1));
  print
$node->nid;
  print
$node->title;
  print
flag_create_link('bookmarks', $node->nid);
}
?>

mal das isset entfernt .....

Die Zeile sieht dann so aus
if (arg(0) == 'node' && is_numeric(arg(1)) && ! (arg(2))) {

Nun bekomme ich als Ausgabe das Wort "user" (ohne Anführungszeichen) - das ist aber reiner Text - kein Link - mehr wird leider nicht ausgegeben.

Grübel

Drupal rockt!!!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Rufe ich den Code im

Eingetragen von Ionit (1798)
am 09.08.2010 - 13:59 Uhr

Rufe ich den Code im Block

<?php
print arg(0);
if (
arg(0) == 'node' && is_numeric(arg(1)) && ! (arg(2))) {
 
$node = node_load(arg(1));
  print
$node->nid;
  print
$node->title;
  print
flag_create_link('bookmarks', $node->nid);
}
?>

im Contente-Profile-Node auf (content/benny)

wird mir folgendes ausgegeben

Rufe ich aber das richtige Profile auf (users/benny)

gibt es als Ausgabe nur

Drupal rockt!!!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Profil

Eingetragen von stBorchert (6003)
am 09.08.2010 - 14:16 Uhr

Das sagt uns also, dass arg(0) nicht den Wert "node", sondern "user" hat.
Dementsprechend musst Du erst noch den Profilnode laden.

<?php
if ($user = menu_get_object()) {
  if (isset(
$user->uid)) {
   
$type = 'profiltyp';
   
$node = content_profile_load($type, $user->uid);
    print
flag_create_link('bookmarks', $node->nid);
  }
}
?>

Problematisch ist jedoch, dass es mehrere Inhaltstypen geben kann, die als Profil dienen können. Normalerweise müsstest Du über alle verfügbaren Inhaltstypen iterieren und für die entsprechenden Typen den Bookmark-Link ausgeben.
Ich hab im Beispiel jetzt einfach mal "profiltyp" als Namen für den verwendeten Inhaltstypen angegeben.

hth,

 Stefan

Tipp: Beachte die Verhaltensregeln des DrupalCenter.

Logo undpaul

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo Stefan, nochmals danke

Eingetragen von Ionit (1798)
am 09.08.2010 - 14:33 Uhr

Hallo Stefan,

nochmals danke für Deine Mühe.

Leider gibt es mit der Version auch keine Ausgabe des Blocks bzw. des Flag-Links.

Unter content/benny wird der Link angezeigt - unter users/benny leider nicht.

Grübelnde Grüße

Drupal rockt!!!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Was ich mich gerade frage

Eingetragen von Ionit (1798)
am 09.08.2010 - 14:45 Uhr

Was ich mich gerade frage ...

Auf der Flag-Settings-Page admin/build/flags/edit/bookmarks kann man ja einstellen auf welchem Content-Type der Link angezeigt werden soll.

Mein Content-Type für Content-Profile heißt "model" und dort wurde natürlich ein Häckchen gemacht. Dort gibt es aber keine Option "Show on User-Profile" ...

Kann es sein, dass das Flag-Module damit nicht klar kommt - der Aufruf der Funktion erfolgt ja über das Profile und nicht über den Node (Content-Type Content-Profile "model")?

Wenn der Node (aktivierte Content-Type) aufgerufen wird, klappt ja alles bestens aber beim Profile scheint Flag die Ausgabe zu "verschlucken" - meiner bescheidenen Meinung nach.

Kann das sein?

Drupal rockt!!!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Lösung

Eingetragen von stBorchert (6003)
am 09.08.2010 - 18:46 Uhr

Hallo.
Probier mal folgenden Code im Block:

<?php
if (arg(0) == 'user' && is_numeric(arg(1))) {
 
$account = user_load(arg(1));
  if (isset(
$account->uid)) {
   
$node = content_profile_load('profile', $account->uid);
    print
flag_create_link('bookmarks', $node->nid);
  }
}
?>

Das funktioniert bei mir (mit dem Inhaltstypen "profile" als Profil-Inhaltstyp).

hth,

 Stefan

Tipp: Beachte die Verhaltensregeln des DrupalCenter.

Logo undpaul

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo Stefan, ich knie zu

Eingetragen von Ionit (1798)
am 09.08.2010 - 19:13 Uhr

Hallo Stefan,

ich knie zu Boden und huldige Dir ;-)

Es funktioniert perfekt ....

Einfach super!!!!!!!!

Besten Dank und schöne Grüße

Matthias

Drupal rockt!!!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • Grundsatzfrage
  • Drupal 9 Hosting
  • Seite auf Xamp wird nicht geladen
  • Anregung für die Installation von Drupal
  • [simplenews_stats] [D10] Keine Öffnungen/Ansichten der Newsletter werden gezählt
  • Theme Olivero - Rand entfernen?
  • Olivero veraendern
  • Upgrade Drupal 9 auf 10
  • Matomo(?) in Seite, aber Deinstalliert!
  • Upgrade Drupal 7 auf Drupal 9 / Inhalt erstellen zeigt nur Fehler an
  • Fehlermeldung nach Update auf Drupal 10
  • Wie Button erstellen?
Weiter

Neue Kommentare

  • Dschungel triffts ganz gut
    vor 11 Stunden 45 Minuten
  • Grundsatzfrage
    vor 1 Tag 7 Stunden
  • Schlichte Antwort: Ja, das
    vor 1 Tag 9 Stunden
  • Hallo! Welchen Host nutzt du
    vor 2 Tagen 14 Stunden
  • Also bei mir funktioniert es
    vor 2 Tagen 15 Stunden
  • Hat mir auch sehr geholfen,
    vor 2 Tagen 15 Stunden
  • Releases Stand 20-9-2023
    vor 3 Tagen 23 Stunden
  • Hi, Das ist leider nicht das
    vor 4 Tagen 18 Stunden
  • Wie plötzlich passierte
    vor 5 Tagen 22 Stunden
  • Sowas geht immer mit
    vor 1 Woche 21 Stunden

Statistik

Beiträge im Forum: 248812
Registrierte User: 19836

Neue User:

  • Thorsten Kötter
  • inklusion
  • sofortnovo

» Alle User anzeigen

User nach Punkten sortiert:
wla9334
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3845
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 4 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association