Drupal: таксономия: сделать словарь необязательным для определенного типа контента - PullRequest
2 голосов
/ 08 апреля 2011

Я понимаю, что мне нужно идти по пути hook_form_alter, однако это не слишком далеко, поначалу:

hook_form_alter(&$form, &$form_state){
  drupal_set_message($form['form_id']['#value']);
  switch ($form['form_id']['#value']){
    case 'partner_node_form':
       $form['taxonomy'][1]['#required']=FALSE;
       break;
  }
}

DSM выводит partner_node_form, и код срабатывает, когда я захожу в / node / add / partner, однако это не делает поле необязательным, и ему все равно дается красная звездочка.

Если я отправляю форму, произойдет сбой, заявив, что поле является обязательным, но теперь DSM выводит admin_block_theme_form вместо этого, что не позволяет моему альтер-коду даже работать.

Очевидно, я совсем растерялся, пожалуйста, помогите!

Ответы [ 2 ]

2 голосов
/ 08 апреля 2011

Я знал, что есть решение этой проблемы;).Нашел сегодня, когда работал над чем-то другим.

Установить content_taxonomy модуль.Как только вы это сделаете, у вас будет таксономия в качестве поля CCK во всех типах контента.Следовательно, вы можете сделать его необязательным для выбранного типа контента.У вас есть возможность выбрать словарь и, кроме того, вы можете использовать его как любое другое поле CCK.

0 голосов
/ 08 апреля 2011
define('MY_VOCABULARY', 1);

$form['taxonomy'][MY_VOCABULARY]['#required'] = 0;

это нормально работает в drupal 6. Какую версию drupal вы используете?

...