当前位置:  开发笔记 > 程序员 > 正文

如何更改upload.module生成的内容的#weight?

如何解决《如何更改upload.module生成的内容的#weight?》经验,为你挑选了1个好方法。

在我的Drupal驱动的网站上,我想列出节点页面顶部的可用下载(在一个狭窄的浮动内:右边

),而不是它们通常出现的底部.

在我的主题中,我已经覆盖了theme_upload_attachments()函数以生成

宽度为40%的函数,但这显示在页面底部.

在该upload.module文件中是控制页面上列出附件的位置的代码:

// function upload_nodeapi(), line #284 of upload.module
$node->content['files'] = array(
    '#value' => theme('upload_attachments', $node->files),
    '#weight' => 50,
);

如果我手动将这个#weight修改为-1,我的自定义附件列表会显示我想要的位置,浮动在内容区域顶部的右侧.

但是,我不想手动破解核心文件upload.module,因为我的更改将在下次应用升级时丢失(例如,对于安全补丁).

如何/在哪里修改content['files']主题代码中的#weight ?
或者,我是否采取了错误的方式?



1> Eaton..:

你需要一个模块才能做到这一点,而不仅仅是一个主题.模块可以实现hook_nodeapi(),这将使它有机会在呈现之前更改该$ node-> content数组的内容.例如,如果您的模块名为"upload_tweaker",则使用以下函数:

function upload_tweaker_nodeapi(&$node, $op) {
  if ($op == 'view') {
    $node->content['files']['#weight'] = -1;
  }
}

在此"nodeapi"事件期间,每个模块都会在更改节点时遇到问题; 如果要更改由一个模块添加的内容,则需要确保模块在其后加载.这可以通过命名类似'zzz',或通过更改站点数据库的系统表中的"权重"字段来完成.模块可以像表单元素一样加权.

api.drupal.org有更多信息.

推荐阅读
牛尾巴2010
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有