Node-Links (Kommentare, Weiterlesen) anpassen / bearbeiten
am 18.12.2007 - 01:16 Uhr in
Hallo,
ich habe bei meiner Suche http://www.drupalcenter.de/node/1645 gefunden. Nur leider bezieht sich das Beispiel (angepasste Version von http://drupal.org/node/44708) auf Drupal 4.7.
Mein Ziel: In der Teaser-Ansicht soll nur der Weiterlesen-Link angezeigt werden, und kein Link zu den Kommentaren.
Da ich es nicht anders geschafft habe, habe ich in der /modules/comment/comment.module herumgepfuscht: In der Funktion comment_link bei der 2. if-Abfrage [ if ($teaser) ] den Auführen-Block gelöscht, sodass nur noch else gilt.
Gibt es eine bessere Möglichkeit, zum gleichen Ergebniss zu kommen, aber ohne in den Core-Modulen zu editieren, sondern beispielsweise ein sitemodule oder die template.php zu benutzen?
Vielen Dank!
J-K
- Anmelden oder Registrieren um Kommentare zu schreiben
Wenn sich der Code, in dem
am 18.12.2007 - 10:54 Uhr
Wenn sich der Code, in dem Du rumgefuscht hast, sich in einer Theme Funktion befindet ist dies der Ansatz.
Also, eine der Moeglichkeiten ist das Theming mittels Template. Ausgangspunkt dabei sind Theme Funktionen. Im Code erkennbar durch
function theme_blabla()
Bei Theming spielen im Normalfall die Datei "template.php" und eine erstellte Templatedatei zusammen. Bsp. Templatedatei
blabla.tpl.php
Hier im Forum bzw. im Handbuch ist das Theming hinreichend erklaert.
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Da geht noch was.
Funktion comment_link verändern
am 18.12.2007 - 14:28 Uhr
[...] Theme Funktionen. Im Code erkennbar durch
function theme_blabla()
Soweit ich das sehe, ist die Funktion leider nicht themebar:
Sie heißt comment_link, aus /modules/comment/comment.module .
Weitere Vorschläge?
Danke!
J-K
Zusatzfrage
am 20.12.2007 - 11:05 Uhr
Ich habe im Moment ein ähnliches Problem. Es sieht so aus, als ob ich und möglicherweise auch du an der falschen Stelle anpackst. Deshalb meine Frage.
Ich style mit Contemplate und zusätzlichen div. Beim Teaseroutput gebe ich nur Bild an (um es mal zu übertreiben). Dennoch werden Head, Links usw. auf der Startseite ausgegeben, immerhin fehlen alle anderen Angaben inkl. Text.
Wie bekommt man die noch vorhandenen Angaben weg, wo muss man da ansetzen? Direkt im Node-Template oder sogar im Pagetemplate?
node.tpl.php
am 20.12.2007 - 13:48 Uhr
In der Datei node.tpl.php in Deinem Theme-Verzeichnis wird die Variable $links ausgegeben. Die kannst Du vor der Ausgabe nat. verändern bzw. gar nicht, sondern dafür etwas anderes ausgeben. Analog der Vorgang für einen bestimmten Node-Typ: dann verwendest Du dafür eben die Datei node-NODE_TYP.tpl.php
Zum Beispiel:
<div class="links">
<?php
if (!$page) { ?>
<a href="<?php print $node_url ?>" class="node_view_more" title="Zum Artikel">Weiterlesen</a>
<?php } else {
print $links;
}
?>
</div>
print_r($node)
am 20.12.2007 - 14:27 Uhr
Du kannst links einzeln als Variable benutzen in der node-typ.tpl.php indem du print_r($node) anschaust. Da siehst Du dann die Variabeln für links. Alternativ kannst du Contemplate benutzen (modul). Kann ich empfehlen, weil die damit sehr gut die Ausgabe für teaser, body & rss manipulieren kannst, bevor diese in die $content variable geschrieben wird, die dann in der node-typ.tpl.php steht. Wobei man bei contemplate ein wenig aufpassen muss, wenn man das Views modul nutzt. Da kann es bei node typen passieren, das die teaser nicht richtig dargestellt werden (z.B.) beim blog node typ. mit dem contemplate modul siehst du alle $node Variabeln - du kannst die teaser/body/rss einmal über das Drupal Admin Interface zusammenstellen oder in dateien speichern (steht alles in der Modulbeschreibung).
Links für alle Nodes kannst Du über die template.php steuern indem Du die Funktion überschreibst: function phptemplate_links_in_node
Wie Links aussehen können wenn du sie in der node-typ.tpl.php nutzt:
<div class="clear-block clear">
<?php if ($links): ?>
<div class="links inline node-links">
<a href="<?php print base_path() . $node->links['audio_download_link']['href'] ?>"
title="<?php print $node->links['audio_download_link']['title'] ?>"
class="audio_download_link">
<?php print $node->links['audio_download_link']['title'] ?></a>
<a href="<?php print base_path() . $node->links['forward_links']['href'] ?>"
title="<?php print $node->links['forward_links']['attributes']['title'] ?>"
class="<?php print $node->links['forward_links']['attributes']['class'] ?>">
<?php print $node->links['forward_links']['title'] ?></a>
<span class="delimeter">|</span>
<a href="<?php print base_path() . $node->links['print']['href'] ?>"
title="<?php print $node->links['print']['attributes']['title'] ?>"
class="print">
<?php print $node->links['print']['title'] ?></a>
</div>
<?php endif; ?>
</div>
so mache ich das immer :-)
-Jensi
Read More Tweak
am 20.12.2007 - 15:47 Uhr
Read More Tweak
http://drupal.org/project/ed_readmore
PS
1 Minute habe ich auf drupal.org benoetigt um mit einer Suche den Link bzw. das Modul zu finden.
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Da geht noch was.
ed_readmore
am 21.12.2007 - 13:01 Uhr
Achtung! Funktioniert nicht Richtig mit Views & dem Blog Modul bei Teaser ansichten. Habe es deshalb deaktiviert. Am sichersten ist es wirklich dies über die Node-Typ.tpl.php zu lösen.
Schonmal das Modul
am 23.12.2007 - 23:48 Uhr
Schonmal das Modul ThemeSettings probiert? http://drupal.org/project/themesettings, vielleicht gehts damit.
gruß pebosi
gruß pebosi
--
https://pebosi.net
Danke für alle Vorschläge!
am 29.01.2008 - 21:28 Uhr
Vielen Dank für alle Vorschläge.
Letztlich habe ich es aber doch bei einer Änderung im Core belassen; da ich zwecks Update-Vereinfachung jetzt das ganze mit CVS verwalte, ist das auch kein "Problem" mehr.
Außerdem muss man dann nicht nachträglich irgendwelche Variablen-Inhalte anpassen, sondern kann ihre Inhalte direkt bestimmen...