Drupal 6. Автоматический выбор термина при добавлении ноды.

Столкнулся вот с такой задачей, когда добавляешь новый материал чтобы при переходе по нужной ссылке выбирался нужный термин! Отдельный модуль для такого писать желания совсем не было, так что template.php  в помощь. Скажу честно, сам не ас потому ушло у меня на это в общем 1.5-2 часа. В долгих поисках на англоязычных форумах поддержки друпала наконец нашел то что мне нужно.Итак. Первым делом открываем template.php вашей текущей темы и добавляем в самый конец такой вот код:


function phptemplate_node_form($form) {
  if(arg(3) != '') {
    $form['taxonomy'][1]['#value'] = arg(3);
    return drupal_render($form);
  }
}

Поясню, phptemplate_node_form дает нам возможность изменить что-то в форме добавления материалов, далее идет проверка на то пустой ли третий аргумент, например для example.com/node/add/story/123  node это — arg(0), add — arg(1), story — arg(2) и 123 — arg(3) это и будет нашим заданным термином, вернее его идентификатором. Дальше меняем вывод формы с нужными параметрами: $form[‘taxonomy’] — модуль таксономии; [1] — номер словаря, для каждого словаря будет форма выбора; [‘#value’] — значение которое передаст форма, установив это значение заранее мы можем наблюдать как на странице добавления материала оно будет установлено по умолчанию. Дальше уже более понятно, drupal_render($form) — переделывает нашу измененную форму с новыми значениями.

И сам не пойму почему такой не сложный код так тяжело найти в интернетах…

Таким образом можно по-баловаться и с другими параметрами и зависимостями в форме добавления материалов. Надеюсь все ясно, если что жду ваших вопросов!

Drupal 6. Автоматический выбор термина при добавлении ноды.: 2 комментария

    1. zviryatko Автор записи

      Спасибо, но это я давно делал, там кстати не помешает проверка является ли значение числом, фукция is_numeric(), ну чтобы наверняка.
      И работать это будет только для текущей темы, т.е. если у тебя для страницы добавления ноды другая тема админки то код не сработает!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *