Рекомендуется иметь поля "категория", в которых администратор может выбирать, какие голоса может выбрать пользователь


У меня есть тип контента, для которого требуется поле "категория"; это может быть как словарь таксономии, так и текстовое поле (с виджетом "Выбрать"), на самом деле это не имеет значения. (У меня не будет больше 5-6 голосов одновременно.)

Однако эти голоса могут меняться со временем, и обычные пользователи должны иметь возможность выбирать только несколько значений при создании нового узла.

Какова наилучшая практика для достижения этой цели?

Моя идея состоит в том, чтобы использовать словарь таксономии, где только администраторы могут вставлять новые голоса, но мне понадобится какой-то атрибут (например, логическое значение), который я могу использовать в модуле, чтобы фильтровать их в hook_form_alter(). Может ли это быть способом достижения этого с помощью Drupal?

Author: kiamlaluno, 2011-03-21

3 answers

Вы можете использовать поле ссылки на узел, где ваши "Голоса" являются узлами, которые могут создавать только администраторы, таким образом, вы можете ограничить максимальное количество "Голосов", разрешенных в настройках поля ссылки на узел, и вы можете отключить "Голоса", отменив их публикацию, или, если вам нужно логическое значение для вывода узла, вы можете просто добавить текстовое поле флажка на узле "Голоса" и использовать модуль пользовательских форматировщиков для отображения поля ссылки на узел, как вы хотите.

 1
Author: Decipher, 2011-03-22 02:02:24

Я бы использовал термины таксономии для голосов . Оттуда я вижу два варианта сохранения их включенных/отключенных состояний. Вы можете либо добавить пользовательскую таблицу (используя API схемы ) с tid и state столбцами. Или, если у вас есть только несколько включенных голосов, используйте переменную конфигурации (variable_get & cie.). В более позднем случае добавить страницу/форму конфигурации, чтобы администратор мог выбрать включенный голос, легко с помощью system_settings_form. Вы также можете изменить форму taxonomy_form_term на добавьте поле формы состояния и пользовательский обработчик отправки в термины из вашего словаря голоса.

Как только у вас сохранено включенное/отключенное состояние голосов, вы можете использовать hook_form_alter чтобы изменить поле формы таксономии и ограничить его допустимое значение. Вам нужно будет принять решение о том, что делать при редактировании существующего узла с использованием отключенного в данный момент голоса. Либо позвольте ему сохранить эти голоса, либо заставьте его использовать включенный.

 1
Author: Pierre Buyle, 2011-03-22 06:56:13

Каждый термин в словаре имеет "поле веса", позволяющее выполнять пользовательскую сортировку. Это может позволить вам установить определенный порядок терминов. Вы уверены, что вам нужно логическое значение? Я предполагаю, что это для активации и деактивации голоса, отображаемого в списке? Вы можете просто удалить термин, но это приведет к потере термина на узлах, которые его использовали.

Возможно, вам будет лучше с "вычисляемым полем", которое будет исправлено после публикации узла. http://drupal.org/project/computed_field

Разрешить администраторам редактировать таксономии, вероятно, безопаснее, чем разрешить им редактировать список выбора CCK.

 0
Author: Drew, 2011-03-22 01:51:39