我不使用 Drupal 选项卡,因为它们会干扰我的 CSS,但我需要在该屏幕上显示编辑选项卡的功能,以便用户可以在查看节点后对其进行编辑。
关于如何做到这一点的任何想法?功能?tpl安置?谢谢!
3 回答
您可以在自定义模块中执行此操作,如下所示。
在您的custommodule.module 中,您实现了hook_preprocess_node()。在那里,您检查用户是否有权编辑节点并设置编辑链接。
function yourcustommodule_preprocess_node(&$vars) {
if (node_access("update", $vars['node']) === TRUE) {
$vars['edit_link']['#markup'] = l(t('Edit'), 'node/' . $vars['nid'] . '/edit');
}
}
在主题中的 node.tpl.php 模板中,您可以打印编辑链接(如果可用)。
<?php if (isset($edit_link)) : ?>
<p><?php print render($edit_link); ?></p>
<?php endif; ?>
如果您的主题文件夹中没有 node.tpl.php 模板,请从 modules/node 复制模板。
如果您使用视图格式“字段”,您可以添加的字段之一是“编辑链接”。它非常灵活;它会告诉你在链接中显示什么文本。这可能是首选。
如果您不使用“字段”格式,它会变得更加棘手,特别是因为您已经干扰了一些基本的drupal 样式。我需要有关您的视图和技能的更多信息,以推荐一种不会导致更多问题的方法。
作为旁注:我从外到内学习了 Drupal 主题,并且曾经使用会干扰底层 drupal 机制(如选项卡和上下文链接)的 CSS。我已经远离了那个;我发现我需要干扰原生样式的情况很少——对于那些我可以使用自定义 .tpl 来解决的情况。
编辑:啊。如果您不使用视图,自定义页面 .tpl 可能是最好的选择。如果您不熟悉,任何节点编辑链接的结构都是'/node/<NID>/edit'
(对于干净的 URL)或'/?q=node/<NID>/edit'
旧式 URL。根据路径别名的设置方式,'/<url-alias>/edit'
可能也可以工作,但以前的别名更可靠。
drupal.org 上的这个链接 提供了一些选项。
我认为您可以以您想要的任何方式为您的特定案例和主题页面编写主题文件(.tpl)