Linke und rechte Blöcke unterschiedlich (in HTML, kein CSS)
Eingetragen von ToaTs (127)
am 30.05.2007 - 09:40 Uhr in
am 30.05.2007 - 09:40 Uhr in
Wie kann ich es erreichen, dass in einem Theme die Blöcke der linken Sidebar anders sind als die der rechten Sidebar? Es soll also 2 block.tpl.php geben, eine für links und eine für rechts. Geht das irgendwie?
Die bekannte CSS-Lösung ist für meine Problemstellung leider nicht möglich (komplexer HTML-Code für jeden Block).
- Anmelden oder Registrieren um Kommentare zu schreiben
block.tpl.php
am 30.05.2007 - 10:21 Uhr
Nein, es gibt nur eine block.tpl.php. HTML-Code kann nie zu kompliziert sein, es sei denn er ist Fehlerhaft, um ihn mit CSS zu stylen.
vg
--
md - DrupalCenter
Erst suchen dann fragen
mdwp
Ich wünschte er wäre nicht
am 30.05.2007 - 10:37 Uhr
Ich wünschte er wäre nicht kompliziert, aber die PHPKIT-Templates (die ich portiere) sind mehr als inkompatibel zu Drupal. Aber das ist Drupal immer noch besser als Joomla. :-)
Es gibt doch auch sowas, wo man für bestimmte Bereiche diese überschreiben kann, z.B. block-0.tpl.php usw. Allerdings habe ich die Funktion nie so richtig verstanden. Kann man diese nicht irgendwie dafür "missbrauchen"?
Signatur:
Professionelle und gutaussehende Themes für Drupal:
http://grafix-community.com
Ja
am 30.05.2007 - 10:51 Uhr
Du kannst für jeden Block eine eigene Template Datei anlegen. Aber dort steht dir dann nichts anderes zur Verfügung als in der block.tpl.php auch. Hauptsächlich $block->subject und $block->content. Man kann jetzt bspw. für einen bestimmten Block den Titel weglassen. Man kann auch neue CSS Selektoren vergeben. Allerdings stehen einem auch mit einer block.tpl.php für jeden Block unterschiedliche Selektoren zur Verfügung.
Ich kann also nicht sehen, wie dir mehrere Block Templates bei deinem Problem helfen könnte.
Trotzdem ein guter Hinweis. Hatte ich gar nicht dran gedacht.
vg
--
md - DrupalCenter
Erst suchen dann fragen
mdwp
Abfragen des Bereichs in block.tpl.php
am 30.05.2007 - 10:57 Uhr
Gut, anderer Ansatz.
Nachdem ich wirklich nur $content und $subject brauche, jedoch die Darstellung der Blöcke links und rechts unterschiedlich ist (also anders formatiert), gibt es eine Möglichkeit in der block.tpl.php abzufragen, in welchem Bereich der Block dargestellt wird?
So könne ich abfragen, ob ich in der linken oder rechten Sidebar bin und den entsprechenden HTML-Code zurückgeben.
Oder gibt es noch andere Alternativen, die nur über Template-Dateien zu lösen sind (keine Hacks von Drupal selbst).
---
Professionelle und gutaussehende Themes für Drupal:
http://grafix-community.com
Dafür
am 30.05.2007 - 11:01 Uhr
Dafür ist es dann doch am Einfachsten du legst dir eine block-left.tpl.php und eine block-right.tpl.php an.
vg
--
md - DrupalCenter
Erst suchen dann fragen
mdwp
Sowas hatte ich doch gesucht
am 30.05.2007 - 11:07 Uhr
Genau sowas hatte ich ja gesucht. Ist dann also die block-left.tpl.php für die linke Sidebar, und die block-right.tpl.php für die rechte, oder muss ich dafür im Template noch etwas definieren? Das wär natürlich genau die Lösung, die ich haben wollte, wenn sie auch wirklich funktioniert. :-)
---
Professionelle und gutaussehende Themes für Drupal:
http://grafix-community.com
$block->region
am 30.05.2007 - 11:08 Uhr
Du könntest in der block.tpl.php Datei die Regionen (left, right etc.) abfragen und den HTML-Code entsprechend ausgeben.
<?php if ($block->region == 'left') { Dein HTML-Code } ?>
--
bv - drupalcenter.de
Re: $block->region
am 30.05.2007 - 11:54 Uhr
Du könntest in der block.tpl.php Datei die Regionen (left, right etc.) abfragen und den HTML-Code entsprechend ausgeben.
<?php if ($block->region == 'left') { Dein HTML-Code } ?>
Danke, das würde mein Problem lösen. Noch einfach wäre jedoch die block-left.tpl.php und block-right.tpl.php, sofern diese ohne Drupal-Hacks funktionieren.
EDIT:
Problem gelöst: http://drupal.org/node/104319
Re: $block->region
am 30.05.2007 - 12:07 Uhr
Noch einfach wäre jedoch die block-left.tpl.php und block-right.tpl.php, sofern diese ohne Drupal-Hacks funktionieren.
Klar, das funktioniert ohne Hacks. Einfach Dateien erzeugen und loslegen... :)
Danke an alle
am 30.05.2007 - 12:08 Uhr
Danke nochmal an alle für die Hilfe!
ToaTs
--
Professionelle und gutaussehende Themes für Drupal:
http://grafix-community.com
siehe: Handbuch
am 30.05.2007 - 21:36 Uhr
Moin!
Mal schnell ins Handbuch geschaut:
$block->region
gibt an, in welcher Region der Block angezeigt wird (in Deinem Fall ist da also 'left', bzw. 'right' wichtig).Somit kannst Du in der block.tpl.php je nach Seite unterschiedliche HTML-Ausgabe generieren lassen:
<?php
if ($block->region == 'left') {
if ($block->subject)
print '<h2>' . $block->subject . '</h2>';
print '<div class="block-content">' . $block->content . '</div>';
}
else if ($block->region == 'right') {
print '<div id="' . $block->id . '">';
if ($block->subject)
print '<div class="block-subject">' . $block->subject . '</div>';
print $block->content;
print '...was auch immer...';
print '</div>';
}
?>
nur mal so als (ungetestetes) Beispiel.
hth,
Stefan