我正在尝试为编辑按钮创建一个变量。在template.php中,我已经把这段代码
了function phptemplate_preprocess_node(&$vars) {
if ($user->uid == $node->uid || in_array('moderator', array_values($user->roles))|| $user->uid == 1){
$vars['edit'] = l('Edit', 'node/' . $node->nid . '/edit');
}
}
然后我在tpl文件中打印$ edit。它打印一个编辑链接,但网址如下:“node / 2%Fedit”。我做错了什么?
答案 0 :(得分:4)
正如abhaga指出的那样,$ node变量未被声明。在预处理器中,它们被设置为$ vars ['node']
在您的情况下,代码将是:
function phptemplate_preprocess_node(&$vars) {
if ($user->uid == $node->uid || in_array('moderator', array_values($user->roles))|| $user->uid == 1) {
$node = $vars['node'];
$vars['edit'] = l('Edit', 'node/' . $node->nid . '/edit');
}
}
答案 1 :(得分:1)
是node/2%Fedit
还是node/%2Fedit
? %2F
/
编码为HTML实体。由于某种原因,您的$node->nid
似乎是空的。你有$node
吗?
答案 2 :(得分:1)
如果您的代码仅用于向创作该节点的人显示“编辑”按钮,则可以使用访问权限更轻松地执行此操作。
关闭角色的管理节点,并为角色分配更细粒度的权限'编辑任何''编辑自己'等权限。这将实现您想要做的事情而无需编码。
这样,主持人角色中的某个人只能编辑他们创作的节点,您可以跨内容类型指定它。
如果是移动$ tabs / $ tabs2项的问题,我相信它们存在主题功能。