لقد كان لدي فكرة مشرقة لتغيير أذونات المستخدم الخاصة بي حتى لا يتمكن الضيوف من رؤية التعليقات على العقدة. ليس لدي أي مشاكل مع طرق العرض حول موقعي ، حيث يمكنهم أن يروا بوضوح وجود تعليقات على العقد ، وسوف يكونون أكثر ميلًا للتسجيل. يبدو أن المشكلة تكمن في وصولهم إلى موقعي مباشرة إلى العقدة ، ولا يرون أي تعليق ، ويعتقدون أن "هذا هراء قليلاً ، فلنذهب".
هل هناك طريقة لإظهار مقدار التعليقات أسفل العقدة؟
أنصحك باستخدام 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; ?>
أينما تريد تحديد عدد التعليقات وحفظها. امسح ذاكرة التخزين المؤقت ثم قم بعرض التغييرات.
يمكنك استخدام $comment_count
في node.tpl.php .
$type
: Node type، ie story، page، blog، etc.$comment_count
: عدد التعليقات المرفقة بالعقدة.
تحديث لـ Drupal 7 استعلامك على template.php يجب أن يبدو:
$vars['num_comments'] = db_query("SELECT COUNT(cid) AS count FROM {comment} WHERE nid =:nid",array(":nid"=>$vars['nid']))->fetchField();
مقابل 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 }}
امسح ذاكرة التخزين المؤقت ثم قم بعرض التغييرات.
في Drupal 8 استخدم هذا مباشرة في قالب العقدة الخاص بك:
{{ node.comment.comment_count }}
لاحظ أنه لكي يعمل ، يجب أن يكون لديك حقل التعليق الافتراضي في العقدة الذي يدعى دائمًا التعليق.