我知道我可以创建两种不同的字段类型并为它们分配不同的角色。 由于使用了视图,自定义搜索和gmaps,并且因为这将应用于Field集合,我真的需要这种方法解决问题。
我尝试创建自定义模块,限制角色人员只能将两个field_text插入节点,但管理员可以插入尽可能多的数量。 field_text值的数量设置为无限制,内容类型名称为youtube。 我发现这是drupal 6,但我不知道如何在drupal 7中编码。
function myformlimit_form_alter(&$form, &$form_state, $form_id) {
if ($form_id == 'youtube') {
global $user;
// Only allow to insert 2 text for role = staff
if (in_array('staff', $user->roles)) {
$text_limit = 2;
$form['#field_info']['field_text']['multiple'] = $text_limit;
$i = 1;
foreach ($form['field_text'] as $key => $value) {
if (is_numeric($key)) {
if ($i > $text_limit) {
unset($form['field_text'][$key]);
}
$i++;
}
}
}
}
}
答案 0 :(得分:1)
嗯,你在那里的一半。您可以使用以下代码来获取您的想法。
请注意,我将我的字段命名为field_test_field
,您可以将其替换为您的字段名称。
function myformlimit_form_alter(&$form, &$form_state, $form_id)
{
if($form_id == 'youtube_node_form')
{
global $user;
if(in_array('staff', $user->roles))
{
if($form_state['field']['field_test_field'][LANGUAGE_NONE]['items_count'] >= 2)
{
unset($form['field_test_field'][LANGUAGE_NONE]['add_more']);
}
}
}
}