覆盖Drupal 7主题功能

时间:2013-08-26 09:30:09

标签: function drupal-7 drupal-themes overrides

我是Drupal以及Drupal主题开发的新手。在学习如何覆盖drupal模板之后,我想知道如何覆盖drupal 7主题函数。从节点Using the theme layer,我学到了以下几点:

  1. 对于模块中的每个钩子,我们需要注册一个钩子函数
  2. 如果在函数的返回数组中定义了文件,那么它就是'模板'文件。 Otherwiaw实现是通过功能。
  3. 现在关注本书A definative guide to Drupal 7,以覆盖主题功能 1.复制 - 将主题功能粘贴到我的主题的template.php文件中 2.将文件名的开头从theme_更改为yourtheme_ 3.保存 举例来说,它会覆盖以下函数:

    function theme_more_link($variables) {
      return '<div class="more-link">' . l(t('More'), $variables['url'], array('attributes' => array('title' => $variables['title']))) . '</div>';
    }
    

    现在,如果我想覆盖comment_help()中的主题函数comment.module

    function comment_help($path, $arg) {
      switch ($path) {
        case 'admin/help#comment':
          $output = '<h3>' . t('About') . '</h3>';
          $output .= '<p>' . t('The Comment module allows users to comment on site content, set commenting defaults and permissions, and moderate comments. For more information, see the online handbook entry for <a href="@comment">Comment module</a>.', array('@comment' => 'http://drupal.org/documentation/modules/comment/')) . '</p>';
          $output .= '<h3>' . t('Uses') . '</h3>';
          $output .= '<dl>';
          $output .= '<dt>' . t('Default and custom settings') . '</dt>';
          $output .= '<dd>' . t("Each <a href='@content-type'>content type</a> can have its own default comment settings configured as: <em>Open</em> to allow new comments, <em>Hidden</em> to hide existing comments and prevent new comments, or <em>Closed</em> to view existing comments, but prevent new comments. These defaults will apply to all new content created (changes to the settings on existing content must be done manually). Other comment settings can also be customized per content type, and can be overridden for any given item of content. When a comment has no replies, it remains editable by its author, as long as the author has a user account and is logged in.", array('@content-type' => url('admin/structure/types'))) . '</dd>';
          $output .= '<dt>' . t('Comment approval') . '</dt>';
          $output .= '<dd>' . t("Comments from users who have the <em>Skip comment approval</em> permission are published immediately. All other comments are placed in the <a href='@comment-approval'>Unapproved comments</a> queue, until a user who has permission to <em>Administer comments</em> publishes or deletes them. Published comments can be bulk managed on the <a href='@admin-comment'>Published comments</a> administration page.", array('@comment-approval' => url('admin/content/comment/approval'), '@admin-comment' => url('admin/content/comment'))) . '</dd>';
          $output .= '</dl>';
          return $output;
      }
    }
    

    我该怎么办?它的名称不是从theme_开始的。

1 个答案:

答案 0 :(得分:1)

核心评论模块是uging hook_help函数。您必须在自定义模块中使用相同的功能。请注意,您应首先使用$output = "";

清除任何$ output数据