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 - 19: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 - 18: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 - 20: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 - 20: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 - 19: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

  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • [gelöst] Anzeigeformat Text mit Bild in einem Artikel, Drupal 11
  • Social Media Buttons um Insteragram erweitern
  • Nach Installation der neuesten D10-Version kein Zugriff auf Website
  • Composer nach Umzug
  • [gelöst] Taxonomie Begriffe zeigt nicht alle Nodes an
  • Drupal 11 + Experience Builder (Canvas) + Layout Builder
  • Welche KI verwendet ihr?
  • Update Manger läst sich nicht Installieren
Weiter

Neue Kommentare

  • melde mich mal wieder, da ich
    vor 1 Woche 2 Tagen
  • Hey danke
    vor 1 Woche 3 Tagen
  • Update: jetzt gibt's ein
    vor 1 Woche 4 Tagen
  • Hallo, im Prinzip habe ich
    vor 2 Wochen 1 Tag
  • Da scheint die Terminologie
    vor 2 Wochen 1 Tag
  • Kannst doch auch alles direkt
    vor 2 Wochen 6 Tagen
  • In der entsprechenden View
    vor 2 Wochen 6 Tagen
  • Dazu müsstest Du vermutlich
    vor 2 Wochen 6 Tagen
  • gelöst
    vor 5 Wochen 2 Tagen
  • Ja natürlich. Dass ist etwas,
    vor 5 Wochen 3 Tagen

Statistik

Beiträge im Forum: 250233
Registrierte User: 20450

Neue User:

  • Mroppoofpaync
  • 4aficiona2
  • AppBuilder

» Alle User anzeigen

User nach Punkten sortiert:
wla9461
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 16 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