Header nicht in Teaser anzeigen

am 11.03.2013 - 03:31 Uhr in
Moin Drupaler!
Meine Anrisstexte (Teaser) sind auf 200 Zeichen begrenzt und die einzelnen Artikel sind in Kategorien (Taxonomy) eingeordnet. Leider kommt es dennoch vor, dass Header (Überschriften), die kurz nach dem eigentlichen Anrisstext folgen, in diesen Kategorien ebenfalls angezeigt werden. Sieht deshalb unübersichtlich aus.
Wie kann man also Header in (Kategorie-)Teaser automatisch ausschließen?
Automatisch deshalb, weil dies für bereits bestehenden Artikel angewandt werden soll, also nicht mittels eines manuell in jedem Artikel zu setzenden Teaserbreaks "< ! --break -- >".
- Anmelden oder Registrieren um Kommentare zu schreiben
Teaser bestehen aus Header,
am 11.03.2013 - 09:46 Uhr
Teaser bestehen aus Header, Content und Footer. Das kannst du ausnutzen, um im Content- Bereich des Teasers Überschriften außer dem Title per CSS mit display:none zu unterdrücken. Du musst die betreffenden Klassen der HTML Elemente rausfinden. Die wären in etwa: node-deininhaltestyp , node-teaser und field-items. Wie das bei dir genau aussieht, kannst du mit Firebug ermittlen.
Dann schreibst du in deine .css Datei:
.node-deininhaltstyp .node-teaser .field-items h1, h2, ...., h6 { display:none; }
Wenn die Unterdrückung der h- Elemente für jeden Inhaltstypen gelten soll, kannst du .node-deininhaltstyp einfach weglassen.
Bei mir scheint es für den
am 11.03.2013 - 22:15 Uhr
Bei mir scheint es für den Teaser keine eigene Klasse zu geben. Mir wird auf der Kategorieseite angezeigt:
<div id="node-20526" class="node">
Mit den obigen Methoden funktioniert es nicht.
Alex v. B. schrieb Bei mir
am 12.03.2013 - 07:24 Uhr
Bei mir scheint es für den Teaser keine eigene Klasse zu geben.
Je nach Theme können die Bezeichnungen völlig anders lauten. Ist die betreffende Domain online erreichbar?
Nein, läuft in diesem Fall
am 12.03.2013 - 10:46 Uhr
Nein, läuft in diesem Fall nur über XAMPP.
Der Pfad zu solchen Kategorieübersichten lautet: /kategorie/thema/xyz
und die Einordnung erfolgt über taxonomy terms.
Ok, noch mal
am 12.03.2013 - 11:50 Uhr
Dass die HTML Elemente deiner Teaser keine Klassen haben sollen, kann ich nicht glauben. Mach mal folgendes:
Rufe eine dieser Taxonomie- Seiten auf
Lass dir im Browser per Rechtsklick den Quelltext anzeigen
Such dir einen Teaser Abschnitt wo du Title, den Anrisstext, ggf. submitted by etc. siehst
Mach einen großzügigen Screenshot davon, so dass man die HTML Struktur vernünftig sehen kann.
Lade den Screenshot hier hoch
Quelltext
am 12.03.2013 - 15:43 Uhr
<div id="container" class="withleft withright clear-block">
<div id="main-wrapper">
<div id="main" class="clear-block">
<div class="breadcrumb"><a href="/">Startseite</a></div> <h1 class="title">XYZ</h1> <div class="node" id="node-20533">
<h2 class="title">
<a href="/artikel/20533">Das ist der Titel des eingeordneten Artikels in Taxonomy</a>
</h2>
<div class="meta with-taxonomy">
<div class="taxonomy"><ul class="links inline"><li class="taxonomy_term_783 first"><a href="/kategorie/thema/xyz" rel="tag" title="">XYZ</a></li>
<li class="taxonomy_term_782"><a href="/kategorie/thema/abc" rel="tag" title="">ABC</a></li>
<li class="taxonomy_term_784 last active"><a href="/kategorie/thema/hij" rel="tag" title="" class="active">HIJ</a></li>
</ul></div>
</div>
<div class="content">
<p><strong>Das ist der Anrisstext, der auch im Header gezeigt wird. Darunter wird automatisch leider auch der erste Header angezeigt.</strong></p>
<h1>Einleitung</h1>
</div>
<div class="links">
<ul class="links inline"><li class="comment_add first"><a href="/comment/reply/20533#comment-form" title="Dieser Seite einen neuen Kommentar hinzufügen.">Kommentar schreiben</a></li>
<li class="node_read_more last"><a href="/artikel/20533" title="Den Rest von "Das ist der Titel des eingeordneten Artikels in Taxonomy" lesen.">Weiterlesen</a></li>
</ul> </div>
<style type="text/css">ol.footnotes{display: none;}</style>
</div>
</div>
</div>
Frage...
am 12.03.2013 - 16:20 Uhr
Welche Drupal-Version hast Du eigentlich?
Das läuft auf einer 6er
am 12.03.2013 - 17:22 Uhr
Das läuft auf einer 6er Version.
Hm, bin von D7 ausgegangen.
am 12.03.2013 - 18:34 Uhr
Hm, bin von D7 ausgegangen. So wird das in der Tat allein mit CSS nichts. Da müsstest du eine extra node-taxonomy.tpl.php mit der entsprechenden HTML Struktur und CSS Klasse erstellen, um die Anzeige der Header wie beschrieben zu unterdrücken. Ob das noch lohnt für D6 wegen ein paar Überschriften....
Bin ein bisschen draussen aus
am 12.03.2013 - 18:34 Uhr
Bin ein bisschen draussen aus D6 - aber kann man nicht den Teaser in der template.php einfach abschneiden mit:
$node = node_load($nid);
if (isset($node->teaser)) {
$node->teaser = substr($node->teaser, 0, strpos($node->teaser, '<h'));
}
oder so ähnlich (null ausprobiert jetzt)
Gruß
Christian
Klappt nicht
am 13.03.2013 - 22:13 Uhr
Nee, mit dem Code klappt es leider nicht.
Welcher Hook, welche
am 14.03.2013 - 07:54 Uhr
Welcher Hook, welche Fehlermeldung?
Nichts dergleichen
am 14.03.2013 - 13:21 Uhr
Ich habe den Code oben von Dir in template.php-Datei eingefügt. Funktioniert hat es nicht, eine Fehlermeldung gab es auch nicht.
Der Code gehört eigentlich in
am 14.03.2013 - 16:27 Uhr
Der Code gehört eigentlich in eine Node-Template-Datei. In der template.php muß er in eine proprocess_node-Fuktion eingebaut werden.
Beste Grüße
Werner
@Alex v. B.Sorry, ist immer
am 14.03.2013 - 17:54 Uhr
@Alex v. B.
Sorry, ist immer schwer zu sagen, wo die Leute gerade stehen und was man voraussetzen kann.
Hier nochmal der komplette Code für Deine template.php
function DEINTHEMENAME_preprocess_node(&$vars) {
$node = node_load($nid);
if (isset($node->teaser)) {
$node->teaser = substr($node->teaser, 0, strpos($node->teaser, '<h'));
}
}
DEINTHEMENAME natürlich ändern - bei mir läuft's.
Gruß
Christian
Da steckt der Teufel drin
am 15.03.2013 - 01:19 Uhr
Bei mir läufts damit leider nicht. Da tut sich nichts, nicht einmal eine Fehlermeldung gibt es. Caches habe ich natürlich auch schon geleert.