使用钩子在预告片中为链接添加一个类

时间:2013-04-25 00:03:28

标签: drupal drupal-7 hook hyperlink

我一直在寻找一整天,但我似乎无法得到(任何)钩子工作,特别是这个钩子。我想使用hook_link_alter将类(colorbox)添加到预告片上的链接。我能够通过破解核心来实现它,但当然我想要一个更好的解决方案。

node.module中的相关代码是:

if ($view_mode == 'teaser') {
$node_title_stripped = strip_tags($node->title);
$links['node-readmore'] = array(
  'title' => t('Read more<span class="element-invisible"> about @title</span>', array('@title' => $node_title_stripped)),
 'href' => 'node/' . $node->nid,    
  'html' => TRUE,
  'attributes' => array('rel' => 'tag', 'title' => $node_title_stripped),

);

}

我能够通过添加

来实现我想要的目标

将最后一行(包含文字)替换为:'attributes'=&gt; array('class'=&gt;'colorbox''rel'=&gt;'tag','title'=&gt; $ node_title_stripped),

请帮助

2 个答案:

答案 0 :(得分:1)

以下代码有助于:

function theme_preprocess_node(&$variables) {
  // if readmore link is set
  if (isset($variables['content']['links']['node']['#links']['node-readmore'])) {

    // remove the old link
    unset($variables['content']['links']['node']['#links']['node-readmore']);

    // Create new link variable
    $variables['content']['links']['node']['#links']['node-readmore-custom'] =  l(t('More >'), $variables['node_url'], array('attributes' => array('class' => t('colorbox'))));

  }
}

之后,您需要在适当的位置在主题下的node.tpl.php中添加此新变量。

希望这会有所帮助。

答案 1 :(得分:0)

我对钩子知之甚少,但我会使用Display Suite:http://drupal.org/project/ds

确保您还启用DS Extras,转到Structure-&gt; DS并创建CSS类“colorbox”

然后编辑内容类型,管理显示,选择“预告片”,转到底部并创建布局(一列)。

保存后,选择链接字段右侧的齿轮,并在布局下拉列表中选择“专家”,并在班级选择列表中选择“颜色框”。

点击更新并保存后,该字段应与该类一起呈现。