DIV-Ausgabe von Drupal anpassen / reduzieren
am 06.06.2007 - 15:19 Uhr in
Hallo zusammen,
kurz Frage: Kann ich die CSS-Ausgaben von Drupal etwas
reduzieren? Ich bin es gewohnt, recht sparsam mit Divs
umzugehen, zumal das auch den Überblick erhöht.
Hier ein Code-Beispiel eines kleines Menüs:
<div id="header-region">
<div id="block-menu-88" class="block block-menu">
<div class="blockinner">
<h2 class="title"> </h2>
<div class="content">
<ul class="menu">
<li class="leaf"><a href="/drupal5/Kunden">Kunden</a></li>
<li class="leaf"><a href="/drupal5/Partner">Partner</a></li>
</ul>
</div>
</div>
</div>
</div>Kann ich irgendwo diese Ausgaben mit einer Funktion wieder
überschreiben und reduzieren? Oder muss ich mich einfach
damit abfinden?
Danke für Eure Hilfe!
Gruß
Pfoto
- Anmelden oder Registrieren um Kommentare zu schreiben

du kannst natürlich 1. dein
am 06.06.2007 - 15:42 Uhr
du kannst natürlich 1. dein template beliebig angleichen 2. Auch ein eigenes template erstellen. dazu musst du in den themes ordener gehen, und da z.b. eine der vorhanden theme ordner kopieren. diese kannst du dann auch mit geringen html Kentnissen recht einfach angleichen.
da gibt es dann z.B. die page.tpl, die das rahmengerüßt der seite festlegt uvm.
Wenn dich die verschachtelung stört, kannst du sie meiner Meinung nach dort umstrukturieren.
Ich bin bereits dabei, ein
am 06.06.2007 - 16:13 Uhr
Ich bin bereits dabei, ein eigenes Template zu machen (gewzungenermaßen)
In meinem Header-bereich steht nur:
<?php if ($header): ?><div id="header-region">
<?php print $header; ?>
</div>
<?php endif; ?>
Ich kann hier also nichts weiter reduzieren,
die zusätzlichen DIVs kommen wohl aus dem "Inneren" von Drupal,
aber dem Überschreiben solcher Funktionen bin ich leider
nicht gewachsen.
Danke trotzdem; vielleicht weiß ja noch jemand Rat.
Gruß
Pfoto
Drupal leidet zum Teil schon
am 06.06.2007 - 16:46 Uhr
Drupal leidet zum Teil schon etwas an divitis. Zum Glück lässt sich das jedoch anpassen. Funktionen überschreiben ist nämlich gar nicht so schwer.
Inhalte fürs Theme werden in Drupal im Normalfall über theme_whatever() ausgegeben. Diese Funktionen lassen sich fürs jeweilige Template überschreiben. Ausführliche Infos gibts unter http://drupal.org/node/11811
Die vielen divs in deinem Beispiel (beschränkt sich übrigens nicht auf den header-Bereich sondern findet sich überall wo du Blöcke hast) werden durch folgende Funktion aus /includes/theme.inc generiert:
<?php/**
* Return a themed block.
*
* You can style your blocks by defining .block (all blocks),
* .block-<i>module</i> (all blocks of module <i>module</i>), and
* \#block-<i>module</i>-<i>delta</i> (specific block of module <i>module</i>
* with delta <i>delta</i>) in your theme's CSS.
*
* @param $block
* An object populated with fields from the "blocks" database table
* ($block->module, $block->delta ...) and fields returned by
* <i>module</i>_block('view') ($block->subject, $block->content, ...).
* @return
* A string containing the block output.
*/
function theme_block($block) {
$output = "<div class=\"block block-$block->module\" id=\"block-$block->module-$block->delta\">\n";
$output .= " <h2 class=\"title\">$block->subject</h2>\n";
$output .= " <div class=\"content\">$block->content</div>\n";
$output .= "</div>\n";
return $output;
}
?>
Diese Funktion überschreiben wir nun. Dazu musst du in der template.php im Verzeichnis deines Themes (Falls die Datei nicht exisitert, erzeuge sie) folgenden Code einfügen:
Du kannst die Ausgabe nun beliebig anpassen. Ich hab hier einfach den einen div rausgenommen.
<?phpfunction phptemplate_block($block) {
$output = "<div class=\"block block-$block->module\" id=\"block-$block->module-$block->delta\">\n";
$output .= " <h2 class=\"title\">$block->subject</h2>\n";
$output .= $block->content;
$output .= "</div>\n";
return $output;
}
?>
Fehlermeldung
am 06.06.2007 - 16:58 Uhr
Ich habe den Code exakt in die template.php geschrieben:
Nun erscheint folgende Fehlermeldung:
Fatal error: Cannot redeclare phptemplate_block() (previously declared in C:\xampplite\htdocs\drupal5\themes\engines\phptemplate\phptemplate.engine:325) in C:\xampplite\htdocs\drupal5\themes\zen_diff_css_tabs\template.php on line 280
Irgendwie nicht sehr aussagekräftig das Ganze...
Ich habe auch schon das exakte Original aus "/includes/theme.inc" hineinkopiert
(mit Ersetzung des "theme_" Prefix), aber es erscheint die selbe Fehlermeldung
Woran könnte das liegen?
Aussagekräftig genug. Da
am 06.06.2007 - 18:38 Uhr
Aussagekräftig genug.
Da steht, dass diese Funktion phptemplate_block() schon an einem anderen Ort definiert wird, nämlich in /themes/engines/phptemplate.engine bei Zeile 325
Ändere den Namen, dann klappts. Zum Beispiel so:
<?phpfunction namedeinesthemes_block($block) {
$output = "<div class=\"block block-$block->module\" id=\"block-$block->module-$block->delta\">\n";
$output .= " <h2 class=\"title\">$block->subject</h2>\n";
$output .= $block->content;
$output .= "</div>\n";
return $output;
}
?>
Ach, so simple war die Lösung...
am 06.06.2007 - 20:53 Uhr
Das Prinzip verstehe ich zwar nicht (einmal muss man den
Namen der Template-Engine angeben, ein anderes mal
einen beliebigen Namen...)
Aber egal, im Moment versuche ich erst mal, mich so gut es
geht in Drupal zurechtzufinden.
Ich danke Dir für Deine Hilfe!
Gruß
Pfoto
EDIT: Leider wird die Funktion nicht ausgeführt,
zumindest ist der Code noch in gleicher Länge wie vorher.
Nicht beliebig!
am 06.06.2007 - 21:46 Uhr
Bitte werwende für den Funktionsnamen: NAMEDEINESTHEMES!!!_block(.... !
Danke!!! Hatte Tomaten auf den Augen
am 07.06.2007 - 07:11 Uhr
Jetzt funktioniert es natürlich!