Вы здесь

Как сделать на странице создания материала вкладку с полями, подгружаемыми JavaScript'ом только после перехода на вкладку ?

0

У меня около 20 полей в материале, в том числе много рубрик которые выводятся Taxonomy Term Reference Tree Widget. Это, конечно делает загрузку медленной, во всяком случае на моем кмпьютере я замечаю что на таком сайте создание и редактирование материала тормозит.
Мне бы хотелось ускорить работу сайта. И я хочу вынести всякие мета-поля на вкладку Дополнительно, а на основной вкладке оставить только Название, Текст.
Это будет быстрее работать, если подгружать элементы формы, а также JS модуля term_reference_tree динамически.
Вкладку я сделаю Field Group.
Вопрос в том, как запретить загрузку элементов формы кроме этих двух и как их подгружать при переходе на вкладку Field Group "Дополнительно"?

Версия Drupal: 
7.x
Категория: 
AJAXNode API
Вопрос задан 14.11.2015 - 16:03

Ответы

0
  1. Добавить hook_form_alter который будет по умолчанию вырезать все поля с вкладки, которая должна подгружаться через ajax. А при передачи специального параметра в drupal_get_form будет вырезать все поля, кроме полей с этой вкладки. Этот параметр должен быть доступен в $form_state['build_info']['args'];
  2. Кастомный js который будет отправлять ajax запрос при первом клике на вкладку. Использовать Drupal.ajax().
  3. В hook_menu определить путь, на который будет отправлен ajax запрос. Последняя часть пути - id ноды. page callback должен вызывать drupal_get_form($type . '_node_form', $node, $special_param). $special_param как раз и есть тот специальный параметр для пункта 1. Нужно проверить node_form, не ожидает ли функция на месте $specila_param что то еще. Если да, то использовать drupal_get_form($type . '_node_form', $node, NULL, $special_param). Ну и возвращать результат в виде ajax commands.
Ответ дан 14.11.2015 - 16:37