Blöcke für bestimmte node-typen ausblenden?
am 14.12.2007 - 23:01 Uhr in
hallo,
ich möchte gerne bestimmte blöcke in meiner rechten spalte für bestimmte node-typen ausblenden. kann mir jemand den entpsrechenden php-code aufzeigen? kenne mich mit php gar nicht aus. oder gibt es auch eine lösung ohne php, wenn ich nicht jeden pfad händisch bei dem jeweiligen block eintragen will?
lieben dank
patcher
- Anmelden oder Registrieren um Kommentare zu schreiben

code
am 14.12.2007 - 23:17 Uhr
Dieser Code bei der Blockkonfiguration des betreffenden Themes im Feld "Nur anzeigen, wenn der folgende PHP-Code TRUE zurückgibt" gibt den Block bei den Inhaltstypen 'your_node_type' und 'other_node_type' nicht aus:
<?php
if (arg(0) == 'node' && is_numeric($nid = arg(1))) {
$node = node_load($nid);
return ($node->type != 'your_node_type' && $node->type != 'other_node_type');
}
return TRUE;
?>
Mein Code wuerde, das
am 14.12.2007 - 23:39 Uhr
Mein Code wuerde, das bereits gepostete Beispiel aufgreifend, so aussehen:
<?phpif (arg(0) == 'node' && is_numeric(arg(1))) {
$node = node_load(arg(1));
if ($node->type == 'nicht-anzeigen-node-type' || $node->type == 'weiterer-nicht-anzeigen-node-type' ) {
return FALSE;
}
}
return TRUE;
?>
Das || als ODER ist wichtig. Verwendet man statt dessen && als UND kann es nicht klappen. Es koennen ja nicht mehr als ein Nodetype gleichzeitg bei einer Node zustaendig sein.
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
super, danke euch. habe aber
am 15.12.2007 - 15:25 Uhr
super, danke euch.
habe aber auch noch eine nicht-php-lösung mit pathauto-moduld gefunden und dann einfach den "neuen" pfad beim block ausblenden lassen.
ist mir als php-laie sympathischer.
gut oder? ;-)
_______________________________
http://www.familiengruender.de | Vereinbarkeit von Beruf & Familie | Work-Life-Balance
Path Abhängigkeiten
am 15.12.2007 - 18:07 Uhr
gut oder? ;-)
Ja, alles ist gut, wenn Du damit zurechtkommst. Pathauto kann aber kitzlig sein. Ein Alias ist zudem und prinzipiell labiler als ein abgefragter Nodetyp, weil bei letzterem natürlich sich selbst dann nichts ändert, wenn die Eisenbahn drüberfährt. Hingegen brauchst Du nur die Situation, wegen irgend etwas einmal pathauto deaktivieren zu müssen (Upgrade u. dgl.) und schon wird die Sache labil, wenn Du kein gutes Gedächtnis hast. Deine Lösung ist, kurz gesagt, von Pathauto, aber noch mehr von Path abhängig. Die PHP-Lösung tut auch dann noch was Du willst, wenn Path deaktiviert ist. Damit ist sie robuster.
ok, dann ist es ja nochmal
am 15.12.2007 - 18:37 Uhr
ok, dann ist es ja nochmal ne überlegung wert ;-)
_______________________________
http://www.familiengruender.de | Vereinbarkeit von Beruf & Familie | Work-Life-Balance
und views?
am 15.12.2007 - 18:52 Uhr
das von euch aufgezeigte php funktioniert in den angegebenen nodes.
ein problem stellt sich mir aber noch: habe noch einige übersichtsseiten, die ich mit views als page darstellen lasse, hier sollen die blöcke auch ausgeblendet werden. können bestimmte views in das php auch noch integriert werden, neben den nodes?
_______________________________
http://www.familiengruender.de | Vereinbarkeit von Beruf & Familie | Work-Life-Balance
Die Views Uebersichtsseiten
am 16.12.2007 - 00:27 Uhr
Die Views Uebersichtsseiten haben ja eine konkrete URL. Die kann man ebenso und wenn ja dann den Block nicht anzeigen.
<?phpif (arg(0) == 'node' && is_numeric(arg(1))) {
$node = node_load(arg(1));
if ($node->type == 'nicht-anzeigen-node-type' || $node->type == 'weiterer-nicht-anzeigen-node-type' ) {
return FALSE;
}
} else if (arg(0) == 'myview_foo_url' || arg(0) == 'myview_bar_url') {
return FALSE;
}
return TRUE;
?>
In dem Beispiel sind myview_foo_url und myview_bar_url die im Page View definierten URL's/Pfade.
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
super
am 22.12.2007 - 14:15 Uhr
super danke!
_______________________________
http://www.familiengruender.de | Vereinbarkeit von Beruf & Familie | Work-Life-Balance
Das genannte Beispiel habe
am 03.02.2008 - 10:23 Uhr
Das genannte Beispiel habe ich folgendermaßen umgesetzt:
<?phpif (arg(0) == 'node' && is_numeric(arg(1))) {
$node = node_load(arg(1));
if ($node->type == 'acidfree' || $node->type == 'forum' ) {
return FALSE;
}
}
return TRUE;
?>
Leider verschwindet der ungeliebte Block nicht...
Was habe ich falsch gemacht? Weder beim Fotoalbum, noch beim Forum verändert sich die Ansicht.
Den Cache des Browsers habe ich inzwischen geleert. :-)
Inzwischen habe ich es auch
am 04.02.2008 - 08:55 Uhr
Inzwischen habe ich es auch mit anderen Themes ausprobiert. Auch dort funktioniert dieser Code nicht. Hat denn niemand einen Tipp, woran es liegen könnte?
Gute Beispiele
am 04.02.2008 - 19:26 Uhr
Die äussere Bedingung
(arg(0) == 'node' && is_numeric($nid = arg(1)))erfasst nur konkrete Forenbeiträge, nicht die Forenübersichtsseiten. Bei diesen hat arg(0) den Wert 'forum'.Und bei 'acidfree' gilt, wenn ich richtig sehe, dass die Alben- und Thumbnail-Previews zum Nodetyp 'album' gehören, das Einzelbild hingegen zum Nodetyp 'image'.
Hab 'album' und 'image'
am 04.02.2008 - 21:28 Uhr
Hab 'album' und 'image' ausprobiert. Leider will es einfach nicht...
Naja, werde halt jetzt keine rechten Blöcke mehr einstellen. Muss jetzt alles in die linke Sidebar rein...
Trotzdem vielen Dank!
Gruß
tom
Ohne rechte Seitenleiste sieht es unschön aus
am 10.02.2008 - 11:57 Uhr
Hat nicht doch jemand eine Idee, warum ich die Blöcke der rechten Seitenleiste nicht ausblenden kann? Die oben beschriebenen Vorgehensweisen führen IN ALLEN THEMES (auch den originalen) nicht zum Erfolg.
Ich wär euch seeehhhr dankbar für weitere Tipps... :-)
Das funktioniert ...
am 10.02.2008 - 21:29 Uhr
... zumindest bei mir:
<?phpif (arg(0) == 'node' && is_numeric(arg(1))) {
$node = node_load(arg(1));
if ($node->type == 'acidfree' || $node->type == 'forum' || $node->type == 'image') {
return FALSE;
}
}
if (arg(0) == 'forum') { // Forenübersichtsseiten
return FALSE;
}
return TRUE;
?>
bei, wie oben gesagt, gewählter Option: "Nur anzeigen, wenn der folgende PHP-Code TRUE zurückgibt (PHP-Modus für Experten)."
Schade
am 11.02.2008 - 17:32 Uhr
Ich habe jetzt noch einmal deinen Code kopiert und natürlich auch die Option "Nur anzeigen, wenn..." gewählt. Aber es will einfach nicht. Ich vermute, dass ich irgendwo in den Tiefen von Drupal noch einen Schalter umlegen muss...
Wäre schön, wenn es doch noch lösbar wäre. Aber ganz so schlimm ist es nicht: Meine sidebars sind inzwischen so schmal eingestellt, dass jetzt genug Platz in der Mitte ist, um Bilder und Foren ausreichend groß darstellen zu können.
Vielen Dank für eure Hilfe!
Was genau tut sich denn nicht?
am 11.02.2008 - 20:22 Uhr
Du bist sehr unbestimmt in Deiner Beschreibung. Geht denn gar nichts? Geht es nur teilweise? Also was genau geht/ geht nicht? (Und das mit diesem irrationalen "irgendwo in den Tiefen" lass' besser bei Windows, wo man ganz sicher solche Dinge zurecht sagen kann. Drupal ist ein OpenSource-CMS, sprich: es liegt nur an Dir, wie sehr Du in die "Tiefe" gehen willst bzw. an Einblick in Funktionalität interessiert bist.)
Praktische Frage: Hast Du die PHP-Tags
<?php ... ?>mitkopiert oder nur das, was dazwischen steht?Mein Ziel ist ja, den Block
am 12.02.2008 - 07:44 Uhr
Mein Ziel ist ja, den Block "Umfrage" an der rechten Seitenleiste auszublenden.
Ja, ich habe den GESAMTEN von dir geposteten Code übertragen. Mit <?... bis >
Es tut sich nichts heißt, dass der Block einfach nicht verschwinden will.
Mit meiner Bemerkung über die Tiefen des Systems meine ich, dass ich vermute, dass ich vielleicht bei der Installation des Grundsystems irgend etwas übersehen habe. Schließlich funktionieren ja auch keine Clean-URLs oder die Standard-Suche wenn man Strato als Hoster gewählt hat. (Ich überlege wirklich, zu wechseln, habe aber Angst, dass ich dabei mehr zerstöre, als jetzt geht...)
Bin halt noch ganz am Anfang von Drupal...
Test
am 12.02.2008 - 08:58 Uhr
Bringt folgender Code bei Dir den Block - in dieser Form natürlich auf jeder Seite - zum Verschwinden?:
<?phpreturn FALSE;
?>
Wenn ja, dann stimmt etwas an der Code-Logik oben nicht mit Deiner konkreten Umgebung zusammen und man könnte weitertesten.
Falls der Block aber weiterhin überall erscheint, müsste man wahrsch. vor Deiner Installation doch eher im weißen Kittel sitzen ...
Aaaargh! Dummheit muss bestraft werden!!!
am 12.02.2008 - 09:25 Uhr
Los prügelt auf mich ein! Ich bin ja sooo doof!!!
Ich verwende den FCKeditor. Dort gibt es einen Knopf "Quellcode". Den hätte ich viel früher einmal drücken müssen und danach erst den PHP-Code eingeben sollen.
Jetzt geht es auf jeden Fall! Viiieeelen Daaaaank tumblingmug und euch allen!
Ist mir wirklich ziemlich peinlich so doof zu sein... :-)
Ich hoffe, irgendwann einmal auch etwas an dieses Forum zurückgeben zu können...
Gruß von einem, der einen Riesenschritt weitergekommen ist!
*juhuuu*
Kommentar und zugehoerige Node ID - ermittelbar?
am 01.03.2008 - 21:54 Uhr
Das Ganze funktioniert. Aber mit 2 Ausnahmen:
1. Kommentar bearbeiten, comment/edit/xx
2. Kommentar loeschen, comment/delete/xx
xx ist die Komentar ID
In diesem Falle muesste man von der Kommentar ID ausgehend die Node ID ermitteln zu welcher der Kommentar gehoert und wie gehabt node_load
Und genau das versuche ich gerade.
Weiss Jemand wie man von einem Kommentar die Node ID ermitteln kann zu welcher ein Kommentar gehoert
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Hallo quiptime, Du lebst ja
am 02.03.2008 - 01:14 Uhr
Hallo quiptime, Du lebst ja noch. Schön, dass Du wieder da bist.
<?php$comment = db_fetch_object(db_query('SELECT nid FROM {comments} WHERE cid = %d', arg(2)));
print 'Node ID ist '. $comment->nid;
?>
wobei "arg(2)" klarerweise stellvertretend für die cid steht.
Danke Dir für Deine
am 02.03.2008 - 02:27 Uhr
Danke Dir für Deine Antwort. Klar lebe ich noch:
1. Unkraut vergeht nicht,
2. Einmal Drupal immer Drupal
Bis zu der Stelle, das Kommentare so wie Nodes ein Objekt zur Verfügung stellen war ich schon gekommen - ist ja naheliegend. Nur beim Rest hatte ich 'nen Klemmer. Ja ja, die Fetcher.
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Hallo, nochmal für einen
am 28.03.2008 - 17:33 Uhr
Hallo,
nochmal für einen Anfänger:
wie müßte der Code jetzt aussehen, wenn ich für ein Forum (forum), dessen Beiträge ( node/* ), usw. die Blöcke in der rechten Spalte ausblenden möchte?