วิธีการแสดงความคิดเห็นโหนดใน node.tpl?


15

ฉันมีความคิดที่สดใสในการเปลี่ยนแปลงการอนุญาตของผู้ใช้ดังนั้นแขกจึงไม่สามารถเห็นความคิดเห็นบนโหนด ฉันไม่มีปัญหากับการดูเว็บไซต์ของฉันเนื่องจากพวกเขาสามารถเห็นได้อย่างชัดเจนว่ามีความคิดเห็นเกี่ยวกับโหนดและพวกเขาจะมีแนวโน้มที่จะลงทะเบียนมากขึ้น ปัญหาดูเหมือนว่าจะเกิดขึ้นเมื่อพวกเขามาถึงเว็บไซต์ของฉันโดยตรงไปยังโหนดพวกเขาไม่เห็นความคิดเห็นใด ๆ และคิดว่า "นั่นเป็นเรื่องที่น่ายินดีมาก

มีวิธีที่ฉันสามารถแสดงจำนวนความคิดเห็นด้านล่างโหนดหรือไม่

คำตอบ:


10

ผมขอแนะนำให้คุณใช้template_preprocess_node ()
นี่เป็นตัวอย่างพื้นฐานสำหรับ D8

function YOUR_THEME_preprocess_node(&$variables) {
  $variables['comment_count'] = $variables['node']->get('YOUR_COMMENT_FIELD')->comment_count;
}

และจากนั้นคุณสามารถใช้มันในnode.html.twigไฟล์ของคุณเช่น:

{{ comment_count }}

ตัวอย่างพื้นฐานใน D6 อยู่ด้านล่างคุณสามารถปรับแต่งได้ตามความต้องการ ในไฟล์ template.php ของคุณซึ่งอยู่ในไดเรกทอรีธีมของคุณให้เพิ่มบางอย่างตามบรรทัดของ (แทนที่ YOURTHEME ด้วยชื่อธีมของคุณ):

function YOURTHEME_preprocess_node(&$variables) {
  $nid = $variables['node']->nid;
  $variables['num_comments'] = db_result(db_query('SELECT COUNT(cid) AS count FROM {comments} WHERE nid = %d', $nid)) . ' comment(s) on this node';
}

และบันทึกไฟล์ ตอนนี้อยู่ใน node.tpl.php (หรือเทมเพลตเทียบเท่าใด ๆ node-mycontenttype.tpl.php ฯลฯ ) เพียงเพิ่ม:

<?php print $num_comments; ?>

ทุกที่ที่คุณต้องการให้มีการแสดงความคิดเห็นและบันทึก ล้างแคชแล้วดูการเปลี่ยนแปลงของคุณ


ฉันได้ลองปรับเปลี่ยนรหัสของคุณสำหรับ template_preprocess_node เป็น drupal 7 แต่ฉันได้รับข้อผิดพลาดนี้ข้อสังเกต: ตัวแปรที่ไม่ได้กำหนด: num_comments รวม () (บรรทัด 116
Alexander

คุณเปลี่ยนแปลงอะไรในขณะที่ปรับตัว แบบสอบถามฐานข้อมูลของคุณมีลักษณะเหมือนกับที่ระบุโดย @doterobcn ด้านล่าง
Laxman13

12

คุณสามารถใช้$comment_countในnode.tpl.php

$type: ประเภทโหนดเช่นเรื่องราวหน้าบล็อกเป็นต้น
$comment_countจำนวนความคิดเห็นที่แนบมากับโหนด


ฉันคิดว่า$comment_countนับจำนวนความคิดเห็นที่ผู้ใช้เห็น หากผู้ใช้ปัจจุบันไม่เห็นความคิดเห็นตัวแปรนั้นจะถูกตั้งค่าเป็นศูนย์
kiamlaluno

1
ใช่. และอื่น ๆ โดยตรง$node->comment_count
artfulrobot

4

อัปเดตสำหรับ Drupal 7 ข้อความค้นหาของคุณบน template.php ควรมีลักษณะดังนี้:

$vars['num_comments'] = db_query("SELECT COUNT(cid) AS count FROM {comment} WHERE nid =:nid",array(":nid"=>$vars['nid']))->fetchField();

0

สำหรับ Drupal 8:

function YOURTHEME_preprocess_node(&$variables) {
  $nid = $variables['node']->nid->value;
  $num_comment = db_query('SELECT comment_count FROM {comment_entity_statistics} WHERE entity_id = ' . $nid)->fetchAssoc();
  $variables['comment_count'] = $num_comment['comment_count'];
}

ตอนนี้ใน page.html.twig:

{{ comment_count }}

ล้างแคชแล้วดูการเปลี่ยนแปลงของคุณ


มันเป็นคำถามเชิงปฏิบัติที่เลวจริง ๆ โย่ db เช่นนั้นสำหรับบางสิ่งที่สามารถทำได้ง่ายกว่ามากโดยใช้ Drupal API: $ ตัวแปร ['โหนด'] -> รับ ('ความคิดเห็น') -> comment_count;
ipwa

@ipwa หากคุณรู้ชื่อช่องแสดงความคิดเห็นมิฉะนั้นจะไม่ใช่วิธีแก้ปัญหา
golddragon007

0

ใน Drupal 8 ใช้สิ่งนี้โดยตรงในเทมเพลตโหนดของคุณ:

{{ node.comment.comment_count }}

โปรดทราบว่าเพื่อให้การทำงานคุณจะต้องมีฟิลด์ความคิดเห็นเริ่มต้นในโหนดของคุณซึ่งเป็นชื่อความคิดเห็นเสมอ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.