[gelöst]php Filter bei Blöcken
Eingetragen von Alex183 (35)
am 16.08.2011 - 21:00 Uhr in
am 16.08.2011 - 21:00 Uhr in
Hallo zusammen,
ich habe einen Block, den ich sowohl auf Seiten eines bestimmten Inhaltstypen (Blogeintrag) als auch auf der Startseite einblenden möchte.
Ich denke mal, dazu kann man die Option "Seiten, für die dieser PHP-Code TRUE zurückliefert (nur für Experten) " nutzen, aber wie könnte dieses Statement aussehen, damit der Block eben beim Inhaltstyp und bei der Startseite eingeblendet wird?
Danke schonmal für eure Hilfe,
Viele Grüße,
Alex
- Anmelden oder Registrieren um Kommentare zu schreiben
hi alex :) du brauchst nur in
am 16.08.2011 - 21:16 Uhr
hi alex :)
du brauchst nur in den filter
admin/structure/block/manage/views/dein-block-name/configure
bei
Diesen Block nur auf den aufgelisteten Seiten anzeigen
reinschreiben:
-------------------
blogeintrag
-------------------
ist ein alias für die
startseite..
juten abend
stef
PHP in Block
am 16.08.2011 - 21:23 Uhr
Hallo.
ich habe einen Block, den ich sowohl auf Seiten eines bestimmten Inhaltstypen (Blogeintrag) als auch auf der Startseite einblenden möchte. ... PHP-Code ... aber wie könnte dieses Statement aussehen, damit der Block eben beim Inhaltstyp und bei der Startseite eingeblendet wird?
Die Startseite ist schonmal einfach, da genügt ein einfaches
<?php return drupal_is_front_page(); ?>
als Statement. Für die Abfrage nach dem Inhaltstypen wird es jedoch ein wenig schwieriger:<?php
if ($node = menu_get_object()) {
$types = array('story', 'page', 'irgendwasanderes');
return isset($node->type) && in_array($node->type, $types);
}
?>
Kombiniert macht das dann dieses kleine Statement:
<?php
if (drupal_is_front_page()) {
return TRUE;
}
else if ($node = menu_get_object()) {
$types = array('story', 'page', 'irgendwasanderes');
return isset($node->type) && in_array($node->type, $types);
}
return FALSE;
?>
hth,
Stefan
Einstellungen
am 16.08.2011 - 21:25 Uhr
du brauchst nur in den filter
admin/structure/block/manage/views/dein-block-name/configure
bei
Diesen Block nur auf den aufgelisteten Seiten anzeigen
reinschreiben:
-------------------
blogeintrag
<front>
-------------------
Wie kommst Du denn darauf? Er will ja nicht auf den Pfad "blogeintrag" prüfen, sondern auf Beiträge des Inhaltstypen "blogeintrag".
hmmm
am 16.08.2011 - 21:36 Uhr
Vielen Danke rstmal für eure Antworten,
ich habe jetzt erstmal einen kleinen Umweg eingeschlagen.
In pathauto vergebe ich für jeden Node des Typs "Blogeintrag" den Pfad blog/blablabla
Im Block, den ich anzeigen möchte, habe ich den Filter auf
Diesen Block nur auf den aufgelisteten Seiten anzeigen
front
blog/*
gesetzt.
Funktioniert erstmal...kann man das so gelten lassen oder ist die Lösung über das php Skript besser?
lg Alex
PS wieso werden denn ´hier Sachen zwischen größer/kleiner Zeichen ausgeblendet :(
hallo stefanZitat:Wie
am 16.08.2011 - 22:06 Uhr
hallo stefan
Wie kommst Du denn darauf? Er will ja nicht auf den Pfad "blogeintrag" prüfen, sondern auf Beiträge des Inhaltstypen "blogeintrag".
autsch, sorry! da hab ich zu schnell schlecht gelesen..!
ich bin voreilig von einem pfad ausgegangen ...
gruss
stef
Das Problem war eben, dass
am 16.08.2011 - 21:40 Uhr
Das Problem war eben, dass ich nicht beides gleichzeitig setzen konnte... :(
Nur auf front und Typ Blogeintrag schließen sich ja aus...
Zitat: else if ($node =
am 16.08.2011 - 21:45 Uhr
else if ($node = menu_get_object())
Warum genau menu_get_object?
Kenne das nur mit $node=node_load(arg(1));
Hmm...sorry für die vielleicht dumme Frage aber will das ja irgendwie auch lernen :)
Gruß,
Alex
Wird in der Doku von arg
am 16.08.2011 - 21:48 Uhr
Wird in der Doku von arg empfohlen :)
http://api.drupal.org/api/drupal/includes--bootstrap.inc/function/arg/7
menu_get_object()
am 16.08.2011 - 22:02 Uhr
Warum genau menu_get_object?
Kenne das nur mit $node=node_load(arg(1));
[api:menu_get_object:7] liefert Dir das passende Objekt zum aktuellen Pfad. Wenn Du also einen Pfad wie z.B. "node/1" aufrufst, bekommst Du über [api:menu_get_object:7] das aktuelle Node-Objekt zurückgeliefert. Wenn Du allerdings einen Pfad aufrufst, der nicht direkt einen Beitrag anzeigt, bekommst Du von der Funktion nichts.
Das erspart den lästigen (und unschönen) Umweg über
<?php if (arg(0) == 'node' && is_numeric(arg(1))) { $node = node_load(arg(1)); }?
.Pfad
am 16.08.2011 - 22:06 Uhr
pathauto ... Funktioniert erstmal...kann man das so gelten lassen oder ist die Lösung über das php Skript besser?
Ja, das kann man durchaus so gelten lassen. Es funktioniert ja auch (ungefähr nach dem gleichen Prinzip).
PS wieso werden denn hier Sachen zwischen größer/kleiner Zeichen ausgeblendet
Schau mal in den Quelltext der Seite. Dort tauchen die Zeichen wieder auf. Dein Browser nimmt an, das wäre ein HTML-Tag. Da jedoch
<front>
in der HTML-Notation gänzlich unbekannt ist, zeigt der Browser den Text nicht an.Tipp: code-Tags (siehe Toolbar des WYSIWYG-Editors) verwenden.
Ah ok das hab ich jetz soweit
am 16.08.2011 - 22:19 Uhr
Ah ok
das hab ich jetz soweit verstanden denk ich :)
Vielen Dank nochmal an alle für die Hilfe :)
PS: Hoffentlich habe ich mit mit Drupal und php lernen nicht etwas zu viel vorgenommen ;)