Drupal hook_theme()影响节点的显示顺序

Drupal hook_theme()影响节点的显示顺序,drupal,drupal-6,Drupal,Drupal 6,我有一个具有许多CCK字段的节点。我想对匿名用户隐藏一个字段。我发现大致有两种方法。首先,我用下面的代码尝试了theme_theme() function ssaa_theme1(&$existing, $type, $theme, $path) { return array( 'volunteer_node_form' => array( 'arguments' => array('form' => null),

我有一个具有许多CCK字段的节点。我想对匿名用户隐藏一个字段。我发现大致有两种方法。首先,我用下面的代码尝试了theme_theme()

function ssaa_theme1(&$existing, $type, $theme, $path) {
    return array(
        'volunteer_node_form' => array(
            'arguments' => array('form' => null),
        ),
    );
}


function ssaa_volunteer_node_form($form) {
    $out = '';
    if (user_is_anonymous()) {
        unset($form['field_active']);
    }
    $out .= drupal_render($form);
    return $out;
}
这个简单的代码工作得很好,但也产生了奇怪的结果。保存/预览按钮出现在表单顶部,我无法将其移动到底部。起初我怀疑是drupal_render()函数,但它没有改变顺序。当ssaa_志愿者_节点_form()函数为空时,会产生相同的结果

所以我尝试了第二个选项,它使用了hook\u form\u alter()并成功了。但我仍然想弄明白为什么第一种方法不能正常工作。我认为做我想做的事情更简单、更轻松


有什么想法吗?

我认为您可以使用CCK附带的内容权限模块来设置字段级权限。启用该模块后,您的所有字段都将显示在“权限”区域中,您可以拒绝那里的匿名用户的权限。我认为这是一种更容易实现的方法。

我认为您可以使用CCK附带的内容权限模块来设置字段级权限。启用该模块后,您的所有字段都将显示在“权限”区域中,您可以拒绝那里的匿名用户的权限。我认为这将是一个更容易实现的方法。

如果您只想拒绝用户使用这一字段,那么对其进行修改是有意义的。否则,我也建议您使用内容权限。它将使您能够在不需要文本编辑器的情况下为所有字段切换此类设置

CCK字段输入表单不能很好地接受
hook\u form\u alter()。可以说,它们是在循环后期插入到节点编辑表单中的

演示如何禁用CCK表单元素,使其适应您的需要


由于您有一个非常特殊的需求,您可能需要查看新模块。它仍在开发中(,我还没有尝试过),但它允许您在单个字段中选择内容权限。这可以防止您的权限屏幕变得混乱,所有新字段都默认为不可访问。

如果您只想拒绝用户使用这一字段,则可以对其进行更改。否则,我也建议您使用内容权限。它将使您能够在不需要文本编辑器的情况下为所有字段切换此类设置

CCK字段输入表单不能很好地接受
hook\u form\u alter()。可以说,它们是在循环后期插入到节点编辑表单中的

演示如何禁用CCK表单元素,使其适应您的需要


由于您有一个非常特殊的需求,您可能需要查看新模块。它仍在开发中(,我还没有尝试过),但它允许您在单个字段中选择内容权限。这可以防止您的权限屏幕变得混乱,所有新字段都默认为不可访问。

我最近在Drupal 6中遇到了同样的问题,您的问题是有效的

当我使用的dsm()函数显示$form对象(来自template.php)时,我发现按钮不知何故显示了0.0111的权重,一个浮点数

template.php中的hook\u主题()hook\u form()似乎行为错误。 使用hook_form,我没有对$form对象进行任何更改,返回drupal_render($form)时,保存/预览按钮位于顶部

对于需要使用这些挂钩的任何人,您还必须创建一个表单,用于设置按钮的重量。这可以抵消这个错误,让你的按钮再次回到底部

    $form['buttons']['#weight'] = 100;

注意:我无法在我的hook\u form()代码中设置权重,它必须在form\u alter

中,我最近在Drupal 6中遇到了相同的问题,您的问题是有效的

当我使用的dsm()函数显示$form对象(来自template.php)时,我发现按钮不知何故显示了0.0111的权重,一个浮点数

template.php中的hook\u主题()hook\u form()似乎行为错误。 使用hook_form,我没有对$form对象进行任何更改,返回drupal_render($form)时,保存/预览按钮位于顶部

对于需要使用这些挂钩的任何人,您还必须创建一个表单,用于设置按钮的重量。这可以抵消这个错误,让你的按钮再次回到底部

    $form['buttons']['#weight'] = 100;

注意:我无法在我的hook_form()代码中设置权重,它必须在form_alter

哇,我不知道该字段权限模块。听起来像“编辑自己的字段权限”这样的一些好处似乎非常值得。有了您建议的字段权限模块,它就完美地实现了。该CCK字段的默认值也起作用。我真的需要默认值工作。我尝试了内容权限模块,但是有太多的复选框需要检查(系统中有将近20种内容类型和8个角色),非常感谢!哇,我不知道那个字段权限模块。听起来像“编辑自己的字段权限”这样的一些好处似乎非常值得。有了您建议的字段权限模块,它就完美地实现了。该CCK字段的默认值也起作用。我真的需要默认值工作。我尝试了内容权限模块,但是有太多的复选框需要检查(系统中有将近20种内容类型和8个角色),非常感谢!我以前尝试过内容权限模块,但我放弃了检查数百个复选框。谢谢你的回答。我以前试过内容权限模块,但是我放弃了检查数百个复选框。谢谢你的回答。