Blockregionen per CCK Feld ausblenden
am 11.02.2012 - 02:43 Uhr in
Guten Abend die Herr- und Damschaften oder fast schon guten Morgen :D
Also ich bin auf der Suche nach einer Möglichkeit Blockregionen direkt in einem Node deaktivieren zu können.
Ich hatte das ganze zu erst einfach mit CCK Checkboxen und if-Abfragen in der page.tpl gelöst. Das Funktioniert zwar, ist aber keine wirklich gute Lösung.
Die blöcke werden trotzdem gerendert und verbrauchen so unnötig ressourcen.
Wieso das ganze, wenn ich einfach in den Blockeinstellungen einzelne Blöcke für bestimmte Seiten deaktivieren kann?
Ganz einfach. Wenn ich 3 Blockregionen mit jeweils ein paar Blöcken habe und auf manchen Seiten sollen z.B. nur 2 von den Regionen angezeigt werden oder garkeine,
wird es ganz schnell unübersichtlich und nicht wirklich praktisch zu verwalten.
Desswegen kam ich auf die Idee ganze Blockregionen in den Nodeeinstellungen also beim Erstellen oder Bearbeiten eines Nodes ein- bzw. ausblenden zu können.
Beim Suchen bin ich auf die Funktionen "theme_blocks" und "block_list" gestoßen, welche die Blöcke rendern (siehe http://www.drupalcoder.com/blog/improve-drupals-performance-by-not-execu...).
Ich hab die beiden Funktionen in meine template.php übernommen und ein CCK Feld "field_hide_blocks" vom Typ Auswahlfeld angelegt.
Über eine if-Abfrage das rendern sämtlicher Blöcke zu verhindern ist garkein Problem nur leider nicht dass was ich will.
Ich bin noch nicht dahinter gekommen wie ich das Rendern einer bestimmten Region beinflussen kann.
Anders scheint es mir nicht möglich gezielt Regionen zu deaktivieren.
Meine PHP-Kenntnisse sind relativ gering, ich bin noch ziemlich am Anfang und würde mich freuen wenn jemand einen Tipp für mich hat wie ich das Ganze lösen könnte.
Wenn einer ein Modul kennt welches das regelt, dann immer her damit :D ich konnte leider nix finden.
- Anmelden oder Registrieren um Kommentare zu schreiben
In Drupal7 geht das mit der
am 12.02.2012 - 14:35 Uhr
In Drupal7 geht das mit der Funkton block_get_blocks_by_region bei Drupal 6 musst da wohl die einzelnen Blöcke mit der Funktion invoke_module die einzelen Blöcke auflisten in der Region auflisten.