[gelöst] PHP-Modus bei Block schlägt nicht an...
![](http://www.drupalcenter.de/files/noavatar_mini.gif)
am 15.10.2009 - 11:10 Uhr in
Hallo Community,
habe Blöcke, die in Abhängigkeit von Inhaltstypen angezeigt werden müssten.
Möchte dies über Blockeigenschaft->PHP-Code erreichen.
Habe dazu auch den Thread 12953 durchgelesen, aber nicht mal der einfachste Code funktioniert nicht:
<?php
if($node->type=='inhalt_xyz') return true;
?>
Wenn ich aber nur
<?php
return true;
?>
eintrage, dann klappt es (natürlich...).
Der Name des $types stimmt, gebe ihn zum Testen über die node.tpl.php aus.
sos'chen,
LG,
goisgo
- Anmelden oder Registrieren um Kommentare zu schreiben
Block
am 15.10.2009 - 12:35 Uhr
<?php
if($node->type=='inhalt_xyz') return true;
?>
Weiss denn der Block, was mit
$node
gemeint ist?Oder anders gefragt: wo steht, welche Daten in
$node
enthalten sind?Ich nehme mal an, Du verwendest kein
node_load
um die gerade angezeigte (oder eine beliebige andere) Node zu laden, oder?hth,
Stefan
--
sei nett zu Deinem Themer
Stimmt, habe das aber auch
am 15.10.2009 - 13:05 Uhr
Stimmt,
habe das aber auch schon mal so versucht:
<?php
if (arg(0) == 'node') {
$node = node_load(arg(0));
}
if($node->type=='inhalt_xyz') return true;
?>
Klappt aber auch nicht.
Könnte es am URL-Alias liegen, da ich ja überhaupt nicht mit node/12 etc. arbeite, sondern diese überschrieben werden?
LG,
goisgo
* EDIT *
Auch so kein Erfolg:
<?php
if(arg(0) == 'node' && is_numeric(arg(1))) {
$node = node_load(arg(1));
return $node->type = $type;
}
if($type=='inhalt_xyz') return true;
?>
Re: PHP-Modus bei Block schlägt nicht an...
am 15.10.2009 - 13:55 Uhr
<?php
if (arg(0) == 'node' && is_numeric(arg(1))) { // Bin ich auf einer Node-Seite?
$node = node_load(arg(1));
if ($node && $node->type == 'inhalt_xyz') { // Wurde der Node gefunden und hat er den richtigen Typ?
return true;
}
}
return false;
?>
--
Hm, sorry aber klappt auch
am 15.10.2009 - 13:58 Uhr
Hm,
sorry aber klappt auch nicht. Kann es an meiner URL Alias liegen?
node/14 => Historie/Geschichte
?
LG,
goisgo
Am Alias liegt's nicht
am 15.10.2009 - 15:22 Uhr
Kann es an meiner URL Alias liegen?
node/14 => Historie/Geschichte
Nein, der Alias wurde bereits in den eigentlichen Drupalpfad übersetzt
sorry aber klappt auch nicht.
Normalerweise mache ich keine Fehler :-) Streue ein paar Statusmeldungen ein:
<?php
drupal_set_message('1. Prüfung ob Block angezeigt werden soll.', 'warning');
if (arg(0) == 'node' && is_numeric(arg(1))) { // Bin ich auf einer Node-Seite?
drupal_set_message('2. Node-Seite wird angezeigt. Node wird geladen.', 'warning');
$node = node_load(arg(1));
if ($node && $node->type == 'inhalt_xyz') { // Wurde der Node gefunden und hat er den richtigen Typ?
drupal_set_message('3. Node wurde geladen und hat passenden Typ. Block soll angezeigt werden', 'warning');
return true;
}
elseif ($node) { drupal_set_message("3. Node hat falschen Typ: '$node->type'.", 'warning'); }
else { drupal_set_message("3. Node wurde nicht gefunden.", 'warning'); }
}
else { drupal_set_message("2. Keine Node-Seite.", 'warning'); }
return false;
?>
--
HAst du den Block auch in
am 15.10.2009 - 16:08 Uhr
HAst du den Block auch in eine Region gezogen?
----------------------------------------
http://tobiasbaehr.de/
Gelöste Forenbeiträge mit [gelöst] im Titel ergänzen
Das Verhältnis anderen zu helfen muss höher sein, als von anderen Hilfe zu erfragen/erwarten.
Hallo, also auch die
am 16.10.2009 - 10:37 Uhr
Hallo,
also auch die Statusmeldungen: Nichts kommt.... wo müsste die Meldung auftauchen?
Ja, er ist in einer Region.
Eigenartig oder?
LG,
goisgo
** Update **
Habe nun die Statusmeldungen über die node.tpl.php ausgegeben.
Wirklich, die Meldung zeigt
* 1. Prüfung ob Block angezeigt werden soll.
* 2. Node-Seite wird angezeigt. Node wird geladen.
* 3. Node wurde geladen und hat passenden Typ. Block soll angezeigt werden
Den gleichen Code habe ich im Block stehen. Aber er wird nicht angezeigt.
???
LG,
goisgo
Gelöst und Sorry...
am 16.10.2009 - 10:47 Uhr
Hallo,
ok der letzte Tipp von traxer hat mir geholfen.
Der Block wird jetzt angezeigt. Was ich nach dem letzten Versuch vergessen habe: Den richtigen Button beim Block zu wählen (also den PHP Ausgabe TRUE....). Bin jetzt glücklich und DANKE !
LG,
goisgo