Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Themes & Theming ›

Wie kann ich etwas nach Kommentaren im Node anzeigen lassen?

Eingetragen von BeastInside (3)
am 16.05.2010 - 20:09 Uhr in
  • Themes & Theming
  • Drupal 5.x oder neuer

Hallo zusammen,

ich habe einige Stunden versucht, im Internet und hier im Forum gesucht, aber leider keine Lösung gefunden. Vielleicht hat von euch ja einer eine Idee, wie es geht oder kann sagen, dass ich die Suche aufgeben kann, weil es nicht funktioniert ;)

Ich möchte gerne nach den Kommentaren in einem Node etwas anzeigen lassen, und zwar nur dann, wenn auch Kommentare da sind und nur nach dem letzten Kommentar. Daher funktionierte Folgendes alles nicht:

  • Innerhalb der node.tpl kann ich nichts machen, da die Kommentare ja erst im Anschluss daran automatisch vom comments-module aufgerufen werden
  • Im Comments-Module habe ich zwar die Stelle gefunden, wo dann der Eintrag "Gesamtes Thema lesen" am Ende der max. 5 Kommentare aufgerufen wird, aber zum einen will ich nicht in einem Module rumwerklen.. und zum anderen wüsste ich technisch auch gar nicht, wie... ;)
  • Innerhalb der comments.tpl habe ich es nicht hinbekommen... schliesse ich da etwas an, gibt er das nach jedem Kommentar aus, es soll aber nur einmal und am Ende erscheinen. Ich dachte mir, man müsste irgendwie zählen können... aber das hab ich nicht hinbekommen :(

Also... ich möchte nur was anzeigen lassen, wenn es einen Kommentar gab und dann aber auch nur einmal und am Ende der maximal 1-5 angezeigten Kommentare (ist so im Modul eingestellt, max. 5).

Weiss jemand, ob und wie das geht? Kann ich das in der comments.tpl machen und dort eine "php if" machen auf Zählbasis der Kommentare? Falls ja.. wie? :)

Wäre prima, wenn jemand Rat weiß. Vielen lieben Dank!

‹ Zen Upgrade: Edit your subtheme's .info file Subtheme: Farbschema fehlt ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Der nachfolgende Code ist

Eingetragen von Fleshgrinder (31)
am 19.05.2010 - 19:39 Uhr

Der nachfolgende Code ist ungetestet, so oder so ähnlich sollte es aber funktionieren.

template.php

Nicht vergessen mytheme mit dem Namen deines Themes auszutauschen!

<?php
/**
* Intercept comment template variables
*
* @param $vars
*   A sequential array of variables passed to the theme function.
*/
function mytheme_preprocess_comment(&$vars) {
 
// Keep track the # of comments rendered.
 
static $comment_count = 1;

 
// Export variable so we are able to access it in our comment.tpl.php file.
 
$vars['comment_count'] =  $comment_count;

 
// Increase the counter.
 
$comment_count++;
}
?>

comment.tpl.php

<?php
// $Id: comment.tpl.php,v 1.4.2.1 2008/03/21 21:58:28 goba Exp $

/**
* @file comment.tpl.php
* Default theme implementation for comments.
*
* Available variables:
* - $author: Comment author. Can be link or plain text.
* - $content: Body of the post.
* - $date: Date and time of posting.
* - $links: Various operational links.
* - $new: New comment marker.
* - $picture: Authors picture.
* - $signature: Authors signature.
* - $status: Comment status. Possible values are:
*   comment-unpublished, comment-published or comment-preview.
* - $submitted: By line with date and time.
* - $title: Linked title.
*
* These two variables are provided for context.
* - $comment: Full comment object.
* - $node: Node object the comments are attached to.
*
* @see template_preprocess_comment()
* @see theme_comment()
*/
echo '<div class="comment';
if (
$comment->new) {
  echo
' comment-new';
}
echo
' '. $status .' clear-block">';
  echo
$picture;
  if (
$comment->new) {
    echo
'<span class="new">'. $new .'</span>';
  }
  echo
'<h3>'. $title .'</h3>';
  echo
'<div class="submitted">'. $submitted .'</div>';
  echo
'<div class="content">';
    echo
$content;
    if (
$signature) {
      echo
'<div class="user-signature clear-block">'. $signature .'</div>';
    }
  echo
'</div>';
  echo
$links;
echo
'</div>';

// Get maximum # of comments on a page.
$comments_per_page = variable_get('comment_default_per_page_' . $vars['node']->type, 1);

// If the count equals the per page setting of the comments, it's the last.
if ($comment_count === $comments_per_page) {
 
/**
   * @todo Do something.
   */
}
?>

  • Anmelden oder Registrieren um Kommentare zu schreiben

Schon mal vielen Dank für

Eingetragen von BeastInside (3)
am 19.05.2010 - 21:09 Uhr

Schon mal vielen Dank für deine Antwort & Mühe! Ich hab's probiert, klappt aber leider noh nicht, weil er scheinbar nicht "zählt". Habe zum Test auch einfach mal das $comments_per_page mit ner Zahl ersetzt, auch mit 1, aber es passiert nichts... weshalb ich glaube, dass der counter nicht hochgezählt wird. In der template php habe ich den Code von oben reingesetzt und nur das mytheme geändert.

Muss ich ggf. noch irgendwo/irgendwie das Hochzählen des Counters arrangieren?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Probiere mal

Eingetragen von Fleshgrinder (31)
am 19.05.2010 - 21:46 Uhr

Probiere mal folgendes:

<?php
/**
* Intercept comment template variables
*
* @param $vars
*   A sequential array of variables passed to the theme function.
*/
function mytheme_preprocess_comment(&$vars) {
 
// Keep track the # of comments rendered.
 
if (!isset($vars['comment_count']) || empty($vars['comment_count']) || $vars['comment_count'] <= 1) {
   
$comment_count = 1;
  }

 
// Export variable so we are able to access it in our comment.tpl.php file.
 
$vars['comment_count'] =  $comment_count;

 
// Increase the counter.
 
$comment_count++;
}
?>

PS: Du kannst auch den Vergleich noch anpassen, damit der Datentyp nicht mit beachtet wird.

<?php
// If the count equals the per page setting of the comments, it's the last.
if ($comment_count == $comments_per_page) {
 
/**
   * @todo Do something.
   */
}
?>

Oder Alternativ mit einem Typecast sicherstellen, dass der Datentyp passt.

<?php
// If the count equals the per page setting of the comments, it's the last.
if ((int)$comment_count === (int)$comments_per_page) {
 
/**
   * @todo Do something.
   */
}
?>

  • Anmelden oder Registrieren um Kommentare zu schreiben

Dank dir noch mal! Leider

Eingetragen von BeastInside (3)
am 26.05.2010 - 20:55 Uhr

Dank dir noch mal! Leider bekomme ich es damit nicht hin, er zählt einfach nicht und zeigt somit auch nichts an, habe alles Mögliche mit den Codes von dir versuchen.

Mal ein anderer Ansatz, vielleicht kannst du oder jemand anderes mir sagen, wie ich das bestehende Modul ggf. dafür einsetzen kann, um zu zählen... oder alternativ einen Code nicht im Template setze, sondern im Modul selbst (auch wenn ich es ja eigentlich nicht wollte ;) ).

Das ist der Auszug aus dem comments-Modul, der für mich interessant ist und wo ich mich gerne anschliessen möchte, heißt... genau danach möchte ich mich einklinken:

<?php

 
if ($cnt > 0) {
    if (
$lastnew > 0) {
      require_once
VBULLETIN_PATH .'/includes/functions_bigthree.php';
     
mark_thread_read($threadinfo, $foruminfo, $vbulletin->userinfo['userid'], $lastnew);
    }

   
$links['full_thread'] = array(
     
'title' => t('Read full thread'),
     
'href' => $vbulletin->options['bburl'] .'/showthread.php',
     
'query' => drupal_query_string_encode(array('t' => $node->threadid)),
     
'attributes' => array('title' => t('Jump to the first comment of this posting.')),
     
'absolute' => true,
    );
    if (
_comment_vb_can_reply($threadinfo)) {
     
$links['add_new_comment'] = array(
       
'title' => t('Add new comment'),
       
'href' => $vbulletin->options['bburl'] .'/newreply.php',
       
'query' => drupal_query_string_encode(array('do' => 'newreply', 'noquote' => 1, 't' => $node->threadid)),
       
'attributes' => array('title' => t('Add a new comment to this page.')),
       
'absolute' => true,
      );
?>

D.h. entweder möchte ich hier jetzt mit rein und wenn eben $lastnew > 0 ist eine Ausgabe machen... wobei es bei mir dran hapert, an welcher Stelle ich das wie setzen muss.. also wo ich jetzt nen echo xyz machen kann... oder wie kann ich das "$lastnew" ggf. als preprocessor in die template-datei und dann als Variable in die comment-theme datei übernehmen. Da scheitere ich leider total dran :( - Falls jemand Rat weiß, wäre das prima.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • Beim Aufruf einiger Inhalte erhalte ich folgende Fehlermeldung
  • Neuinstallation: vermutlich ein rewrite-Problem
  • Drupal CMS installieren
  • [erledigt]MP3 in Drupal 10 einbinden
  • (gelöst)Drupal 11 installieren
  • Titel ausblenden
  • Ich brauche dringen Hilfe zu Updates oder ggf. wwie geht Composer?
  • Dynamische Ansicht von Seiteninhalt (als Tabelle?)
  • Vergabe von Berechtigungen für bestimmte Rollen; mir fehlt der Haken bzw. das „Veröffentlicht“
  • Medien und andere Daten mit Feeds von Drupal 7 auf Drupal 10 migrieren
  • Rolle erstellen nicht zu finden
  • für drupal11 ein Slider Modul
Weiter

Neue Kommentare

  • Gefunden
    vor 4 Wochen 4 Tagen
  • Vielen Dank für die ausführlichen Hinweise...
    vor 5 Wochen 1 Tag
  • Mögliche Ursachen und nächste Schritte
    vor 5 Wochen 2 Tagen
  • Was für einen Server benutzt
    vor 7 Wochen 5 Tagen
  • Wenn die Subdomain auf
    vor 7 Wochen 6 Tagen
  • ordnerstruktur
    vor 8 Wochen 10 Stunden
  • Die Subdomain muß auf den
    vor 8 Wochen 2 Tagen
  • Verwende doch das Tag dafür,
    vor 11 Wochen 4 Tagen
  • Guckst du hier: step by step
    vor 11 Wochen 4 Tagen
  • Guckst du hier: step by step
    vor 11 Wochen 4 Tagen

Statistik

Beiträge im Forum: 250294
Registrierte User: 20532

Neue User:

  • DanielAltek
  • HilipPet
  • Henryskake

» Alle User anzeigen

User nach Punkten sortiert:
wla9466
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 17 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association