"Weiterlesen"- bzw. "read more"-Link deutlicher machen?
![](http://www.drupalcenter.de/files/noavatar_mini.gif)
am 02.09.2006 - 17:22 Uhr in
Nach dem einen gelösten Problem folgt das Nächste... :)
Sicherlich kennt hier (fast) jeder die Seite von Spiegel.de, nehme ich einfach mal an :)
Wenn man auf deren Startseite geht, dann erscheinen ebenso Artikel, die mit Teasern angezeigt werden. Der für mich markante Unterschied: Direkt am Ende des Teasers nach dem zuletzt angezeigten Wort erscheint ein Link "mehr...".
Hier finde ich, ist es direkt ersichtlich, dass der Artikel an dieser Stelle nicht abgeschlossen ist und man durch Klicken auf den entsprechenden Link den gesamten Artikel angezeigt bekommt.
Auf meiner Seite (http://www.hquadr.at) erscheinen, wie wohl bei den meisten Drupal-Installationen, am unteren Rand des Teasers ein kleiner Balken mit Optionen und der Anzeige der Kategorien, welcher der Artikel zugeordnet ist.
Wie mich meine Seitenbesucher hingewiesen haben und ich auch selbst finde: man muss sehr genau hinsehen, dass der Artikel noch länger ist.
Wie kann ich etwas vergleichbares, wie Spiegel.de es macht, schaffen? Meinetwegen statt "mehr..." eben "[...]" möglichst hinter dem zuletzt im Teaser angezeigten Wort? Hat jemand eine Idee?
Wäre dies hier: http://www.drupalcenter.de/node/1315
eventuell eine Lösung bzw. die von quiptime anderswo genannten Module aggregator2 und excerpt eine mögliche Lösungsmöglichkeit? Aus den entsprechenden Dokumentationen werd ich irgendwie nicht schlau...
Ich benutze Drupal 4.7.3 mit dem "Meta Theme" (http://drupal.org/node/43376)
Danke für Eure Tipps...
hquadrat
- Anmelden oder Registrieren um Kommentare zu schreiben
Teaser nicht themeable
am 02.09.2006 - 17:43 Uhr
Wenn der Teaser 'themable' wäre, könnte man die Funktion überschreiben. Ist er aber leider nicht, wenn ich das richtig sehe.
Sieh: http://api.drupal.org/api/4.7/group/themeable
Vielleicht geht es, wenn man theme_node überschreibt. Schau ich mir bei Gelegenheit mal an.
Aggregator2 nützt dir hier gar nichts und das excerpt Modul erzeugt die Teaser nicht automatisch.
md - drupalcenter
-----------------
www.mdwp.de
theme_node
am 02.09.2006 - 17:53 Uhr
Ich hab mir das hier - http://api.drupal.org/api/4.7/function/theme_node - mal angesehen.
Wenn man die Fuunktion in der template.php überschreibt, müsste das gehen.
md - drupalcenter
-----------------
www.mdwp.de
Übers Ziel hinaus geschossen
am 03.09.2006 - 14:00 Uhr
Da bin ich ein wenig übers Ziel hinausgeschossen.
Es geht auch einfacher. Schreib folgenden Code in die node.tpl.php Datei deines Themes:
<?php if (!$is_front): ?>
<div class="content">
<?php print $content ?>
</div>
<?php endif; ?>
<?php if ($is_front): ?>
<div class="content">
<?php print $content . '... <a href="/node/' . $node->nid. '">mehr </a>' ?>
</div>
<?php endif; ?>
Jetzt musst du noch dafür sorgen, dass der 'normale' read-more Link nicht mehr auftaucht.
Da ich das gerade für meine Site - www.go-with-us.de - auch mache, kommt die Lösung dazu bald.
md - drupalcenter
-----------------
www.mdwp.de
Read-more Link
am 03.09.2006 - 15:01 Uhr
So gehts. Schreib in deine template.php folgendes:
<?php
function phptemplate_links($links = array(), $delimiter = ' | ') {
/**
* catches the theme_links function and calls back a link.tpl.php file to determine the layout
*/
return _phptemplate_callback('links', array('links' => $links, 'delimiter' => $delimiter));
}
?>
Jetzt erzeug eine links.tpl.php und schreib da folgendes rein:
<?php
$delimiter = "|";
// Display the left cap of the 'button bar'
print "» ";
$link_count = count($links);
$current = 1;
foreach (
$links as $lnk ) {$key = strstr($lnk, 'Weiterlesen'); // does a search in the link
if ($key == FALSE) {
print $lnk;
}
// Only print the delimiter if not the last link
if ( $current < $link_count and $current > 1 ) {
print ' '.$delimiter.' ';
}
$current++;
}
?>
Diesen Code benutze ich jetzt auf www.go-with-us.de. Musst du bei dir evtl. Anpassungen machen.
Z.B. "Weiterlesen" durch "read-more" übersetzen.
Als Basis hierfür diente mir dieser Thread im Handbuch von drupal.org:
http://drupal.org/node/44708
md - drupalcenter
-----------------
www.mdwp.de
Hallo md, Vielen vielen Dank
am 04.09.2006 - 00:18 Uhr
Hallo md,
Vielen vielen Dank für die Hinweise! Ich werde das gleich nachher noch ausprobieren.
Irgendwie habe ich da wohl nach den falschen Stichworten gesucht gehabt.
Grüße, hQuadrat
--
www.hquadr.at
Hallo nochmals... Irgendwie
am 10.09.2006 - 01:10 Uhr
Hallo nochmals...
Irgendwie funktioniert Deine Lösung für mich nicht so optimal - oder ich mache da etwas falsch (?) und kenne mich da in PHP/CSS zu wenig aus... Entweder erscheinen bei mir die Links dann überall (also auch in Beiträgen, die schon auf Vollansicht sind) oder es gibt Fehler in der Darstellung meiner Seite. Der alte Link ließ sich zudem nicht ausblenden oder es verschwanden anstelle des einzelnen "Weiterlesen"-Links gleich alle folgenden Links (Kategorien, Kommentare zu dem entsprechenden Artikel).
Vorläufig werde ich nun wohl erst mal nach einer anderen Lösung suchen, z.B. die "Weiterlesen"-Links farblich hervorheben - sofern ich das bei dem relativ komplexen Theme, das ich verwende, irgendwie zustande bekomme... Faktisch steht der Link ja bereits da und wird korrekt dargestellt, nur ist er - so wie es auf meiner Seite momentan noch zu sehen ist - relativ leicht zu übersehen, wie mir meine Seitenbesucher berichtet hatten. Mal sehen, ob ich das hinbekomme und es dann wenigstens ein wenig deutlicher wird, dass der Artikel (so wie er auf der Startseite angezeigt wird) noch nicht komplett ist...
Dennoch erstmal vielen Dank für Deine Hilfe - ich werde damit weiter herumprobieren auf einer lokalen Installation, die nicht im Web erscheint. Vielleicht finde ich ja noch den "Haken" :)
Grüße, hQuadrat
--
www.hquadr.at
Bessere Lösung - externes Modul
am 13.11.2006 - 10:57 Uhr
Hallo,
ich wollte noch kurz auf eine recht geniale Lösung dieses Problemchens hinweisen - recht "einfach" und funktioniert wirklich genial. So ist es auch recht einfach, den "alten" read more bzw. Weiterlesen Link auszublenden:
http://www.angrydonuts.com/the_nuisance_of_the_read_more_fl
Hier arbeitet man quasi mit einem separaten Modul anstelle der node.tpl.php - schaut es Euch bei Interesse am besten selbst an...
Grüße, hQuadrat
--
www.hquadr.at
Prima
am 13.11.2006 - 11:09 Uhr
Danke für den guten Tipp. Kommt bei Gelegenheit in unser FAQ.
md - drupalcenter
--
www.mdwp.de :: www.go-with-us.de
Rauskramen
am 23.04.2009 - 01:00 Uhr
Da dieses Theme recht alt ist will ich es mit diesem Post hervorholen und gleich fragen ob es inzwischen eine einfachere Lösung gibt. Stehe vor dem selben Problem bei meiner ersten Drupalsite und zweiten überhaupt :)
Gruß
Kato
Fünf Minuten nach dem Post hatte ich eine Idee. Hat sich also erledigt.
Mit den drei hier:
<?php if($teaser && $readmore): ?>
<a href="<?php print $node_url; ?>" title="<?php print $title ?>">Weiterlesen</a>
<?php endif; ?>
<?php
print ('http://www.homepage.de/?q=comment/reply/' . $nid . '#comment-form');
?>
<?php if ($comment_count > 0): ?>
print $comment_count;
<?php endif; ?>
Für meine Zwecke reicht es. So kann ich alles einzeln dahin packen wo ich es hinhaben will.