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 (1774)
am 08.08.2010 - 22: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 - 06: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 (1774)
am 09.08.2010 - 12: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 - 12: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 (1774)
am 09.08.2010 - 12: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 (1774)
am 09.08.2010 - 12: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 (1774)
am 09.08.2010 - 12: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 - 13: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 (1774)
am 09.08.2010 - 13: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 (1774)
am 09.08.2010 - 13: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 - 17: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 (1774)
am 09.08.2010 - 18: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

  • eMail-Adresse überprüfen ob diese auch tatsächlich existiert
  • Versenden von Anfragen per Webform
  • D 7.78 und eine sqlite Datenbank statt mySQL
  • [gelöst]Welche Tokens werden bei Images im Feld Dateiverzeichnis erlaubt
  • Modulupdate per Webinterace scheitert an authorize.php und access denied für Admin-User
  • Fehlermeldung nach Update auf PHP 7.4 - array offset on value of type null in geocoder_widget...
  • BEF Exposed Filter collapse funktioniert nicht mit Bootstrap Theme
  • content und media-files von drupal8 nach drupal9 migrieren
  • Notificationsnicht immer und gesammelt bei Update
  • Meldung zu Token im Statusbericht
  • Fehlermeldung: Deprecated function
  • Warning: call_user_func() expects parameter 1 to be a valid callback, class 'Drupal\node\Entity\Node' does not have a method 'ge
Weiter

Neue Kommentare

  • Danke für diese doch sehr
    vor 5 Stunden 29 Minuten
  • zu 1. Ja, ist er auch ;) zu
    vor 7 Stunden 32 Minuten
  • bei den meisten Hostern
    vor 21 Stunden 24 Minuten
  • wirklich sicherstellen kann man es nur,
    vor 21 Stunden 29 Minuten
  • Moin Moin vielen lieben Dank
    vor 1 Tag 3 Stunden
  • Auch,wenn es noch über
    vor 1 Tag 7 Stunden
  • Das steht über dem Bereich,
    vor 1 Tag 7 Stunden
  • Hallo Jenna, ich habe das
    vor 2 Tagen 4 Stunden
  • Ich hatte gehofft, bis auf
    vor 2 Tagen 4 Stunden
  • Wenn der Provider keine freie
    vor 2 Tagen 4 Stunden

Statistik

Beiträge im Forum: 245993
Registrierte User: 18832

Neue User:

  • finnster
  • Damian1802
  • MrWebMV

» Alle User anzeigen

User nach Punkten sortiert:
wla9012
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3916
ronald3831
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