Probleme beim Theming bzw. mit der Ausgabe von Teasern
am 02.12.2015 - 16:37 Uhr in
Hallo zusammen,
ich habe die Administration oder besser Pflege einer Drupal-Website übernommen und bin gefragt worden, ob ich der vorhandenen Site eine weitere Rubrik hinzufügen könnte. Es ging darum, kurze Berichte über ein View erreichbar zu machen. Eigentlich kein Ding, allerdings hat derjenige, der die Website entwickelt hat (und dessen Auftrag abgeschlossen und kein Geld mehr für einen neuen Auftrag ... Ihr kennt das vermutlich ...), die Site so strukturiert, dass ich das View über eine page--NAME.tpl.php ausgeben muss. Das funktioniert soweit, dass die Seite, die das View ausgeben soll, auch im korrekten Design erscheint. Allerdings werden keine Daten angezeigt - Drupal weiß schlicht nicht, was es wohin schreiben soll.
Und ich auch nicht.
Ich habe damit die Grenzen dessen erreicht, was ich mir mit rudimentären php-Kenntnissen und Halbwissen über die Drupal-Innereien zusammenreimen konnte. Ich kann überhaupt nicht abschätzen, wie kompliziert es wird, meine Frage zu lösen. Welche php-Anweisung muss ich in das Template schreiben, damit das View dort ausgegeben wird.
Hier mal der Code:
<?php print render($page['header']); ?>
<div id="content" class="wrap">
<?php
$startsite = node_load(17);
?>
<div id="eltern_teaser">
<img src="sites/default/files/<?php print $startsite->field_teaser['und'][0]['filename']; ?>">
<div id="leseheld_avatar" class="leseheld_eltern">
<img src="sites/all/themes/leseheld/img/figur_elternseite.png">
</div>
<div class="lasche">LeseHeld Aktionen</div>
</div>
<div id="eltern_content">
<div class="content">
</div>
</div>
</div>
Wenn ich die Backend-Seite des Views aufrufe, sehe ich in der Vorschau, dass die beiden Beispiel-Artikel, die ich angelegt habe, im View angeteasert werden, wie ich mir das vorstelle.
Ich habe als Format HTML list und als Show Content | Teaser eingestellt. Dieser müsste im Code jetzt im div-Container <div class="content">
angezeigt werden. Aber welche Ausdrücke müssen dahin? In der Datenbank gibt es ein Feld field_data_body
und darin eine Spalte body_summary
. Eigentlich müsste ich doch die Felder im Template ansprechen, oder? Aber wie?
Ich wäre Euch ausgesprochen dankbar für Eure Hilfe.
Viele Grüße
Christoph
- Anmelden oder Registrieren um Kommentare zu schreiben
Probleme beim Theming bzw. mit der Ausgabe von Teasern
am 03.12.2015 - 06:52 Uhr
probier doch mal die angepasste page--NAME.tpl.php zu entfernen. Dann werden ja die Standardtemplates genutzt und Du kannst prüfen, ob überhaupt alle gewünschten Felder angezeigt werden.
Dann weißt Du auch an welcher Stelle genau Dein Problem sitzt.
Gruss
Katasun
Ergebnis ohne page--NAME.tpl.php
am 03.12.2015 - 10:54 Uhr
Hallo Katsun,
danke für Deine Antwort. Ohne die page--NAME.tpl.php zeigt Drupal mir nur den im css als Standrad definierten tiefblauen Hintergrund an. Im Quelltext bleibt der div-Container des Contentbereichs leer.
Ich glaube, dass ich mit der page--NAME.tpl.php auf dem falschen Dampfer bin. Ich habe mich von der Möglichkeit, ein View als Page oder als Block ausgeben zu lassen, irritieren lassen. Als ich gestern Abend mit den Stichworten view und tpl geoggelt habe, bin ich darauf gestoßen, dass Views natürlich ihre eigenen thembaren Templates haben. Auch ein paar Anleitungen dazu habe ich gefunden, aber noch ist mir das Ganze ein Rätsel. Ich weiß jetzt zwar, wie ich Templates für mein View anlegen kann, weiß aber nicht, wie ich html-Code und php-Code so unterbringe, dass das gewünschte Ergebnis erscheint.
Viele Grüße
Christoph
page--NAME.tpl.php
am 03.12.2015 - 14:57 Uhr
Zum Teil ist das mit den Templates zum verzweifeln, auch wenn man es schon eine Weile gemacht hat. Ich trage mir immer den Namen des Templates als reinen Text ein, um zu sehen, ob ich das richtige Template erwischt habe. Templates werden gecacht und zum Teil muss man den Cache mehrfach löschen, bis die gewünschten Änderungen eintreten.
Aber ich habe auch schon öfters einfach das Standardtheme aufgerufen - z.B Bartik um zu sehen, ob mein Problem überhaupt mit dem Theme zu tun hat. Das würde ich Dir vorschlagen, dann weißt Du, ob Dein Problem überhaupt am Theme liegt. Leerer DIV Container bedeutet ja, das keine Daten angeliefert werden.
Aber Grundsätzlich hast Du ein Standardtemplate das immer gilt. Davon fertigst Du ein spezielles Template für dein Problem an. In diesem speziellen Template ergänzt Du HTML oder PHP und fügst die gewünschten Änderungen ein. (
<h1>Hallo Template</h1>
zum Test einfügen )Auf youtube findest Du sicher gute Anleitungen.Katasun
View-Block wird in Garland (z.B.) ausgegeben
am 04.12.2015 - 10:47 Uhr
Danke, Katsun, für den Tipp, einfach mal das Template umzuschalten. In Garland zeigt mir das System das View als Block da an, wo ich es haben will. Der Quelltext gibt mir dazu div-Klassen aus, die in der css nicht definiert sind. Möglicherweise liegt da der Hund begraben. Ich werde die css entsprechend ergänzen, vielleicht löst das das Problem ja.
View-Block wird nur in Standard-Templates ausgegeben
am 04.12.2015 - 16:41 Uhr
Hallo nochmal,
ich habe jetzt verschiedene Möglichkeiten ausprobiert, um die Ausgabe des View im nennen wir es Theme1 zu erreichen. Es fruchtet nichts. Alle Änderungen, die ich in verschiedenen Views-Templates von Garland vorgenommen habe (views-view--aktionen-block.tpl.php und views-view-list--aktionen-block.tpl.php) werden im Garland-Theme ausgegeben, im Theme1 nicht. Der Quellcode der von Drupal bereitgestellten Seite sieht aus, als ob der Block gar nicht ausgegeben würde. Wie kann ich feststellen, woran das liegt?
In einem Page-Template für ein anderes View unter Theme1 findet sich folgender Eintrag:
<?php if ($page['all_books']): ?>
<?php print render($page['all_books']); ?>
<?php endif; ?>
"all_books" gibt es sowohl als View als auch als Region und findet sich dementsprechend im css wider. Im Quellcode der entsprechenden Webseiten-Ausgabe von Drupal wird das View innerhalb der Region "all_books" ausgegeben. Wie kann ich das für mein View-Block "Aktionen" erreichen? Einfach in der Block-Verwaltung in die entsprechende Region schieben, bringt jedenfalls nichts.
Ratlose Grüße
Christoph