如何在Drupal 7中更改单个节点的每页注释数?

时间:2015-02-12 02:23:04

标签: drupal drupal-7

我想仅针对单个节点更改每页的评论。让我们说一下内容类型的每页评论的默认数量"文章"是50,我想将此更改为10仅适用于nid = 171的文章。

$node = menu_get_object('node',1); if($node && $node->nid = 171) {......}

任何提示?感谢。

4 个答案:

答案 0 :(得分:1)

如果您想控制各个页面上的评论数量,我建议您安装Views模块,以便轻松创建任何事物列表,包括评论。使用Views,您可以为任何节点创建包含注释的块,并使用该块而不是常规注释块。 此外,您可以使用具有不同注释数的多个不同块,并将任何块添加到任何节点。使用Context模块也会有所帮助,它允许将块和其他元素分配给具有比Drupal核心块管理更复杂的控件的页面。

答案 1 :(得分:0)

退房可以对您有所帮助:

https://drupal.stackexchange.com/questions/7450/comment-per-page-settings

因为它是一个表单,你必须改变它并从代码中更改注释号。

答案 2 :(得分:0)

即使有点粗鲁,我也找到了解决方案。要禁用节点的默认注释,我在subtheme的template.php文件中使用了预处理函数,并且在comment-wrapper.tpl.php模板中使用了$content['comments']变量:

function MYSUBTHEMENAME_preprocess_comment_wrapper(&$vars){
$node = menu_get_object();
if($node):
if($node->type === 'forum' && $node->nid == 171):
unset($vars['content']['comments']);
endif;
endif;
}

请注意,我为评论包装变量/模板而不是节点vfariables /模板执行此操作,以便取消设置注释,但保留注释表单。

然后我创建了一个注释视图块,其中包含注释节点nid的过滤器。 这适用于我的目的,但如果你找到一个更优雅的方式让我知道。 :)

答案 3 :(得分:0)

我花了一些时间查看comment.module并在comment_form_node_type_form_alter

中找到了这个
$form['comment']['comment_default_per_page'] = array(
      '#type' => 'select',
      '#title' => t('Comments per page'),
      '#default_value' => variable_get('comment_default_per_page_' . $form['#node_type']->type, 50),
      '#options' => _comment_per_page(),
    );

所以我把它放在我的template.php

function THEMENAME_preprocess_page(&$variables){
  if (isset($variables['node']->type)) {
     if ($variables['node']->type == 'forum') {
         variable_set('comment_default_per_page_' . 'forum', 4);
     }
  }
}

它对我有用,我希望它有所帮助。