#ajax #drupal #drupal-7
#ajax #drupal #drupal-7
Вопрос:
мы используем фреймворк drupal 7 ajax для загрузки контента на страницу. При нажатии на ссылку во время обработки запроса после ссылки появляется пульсатор.
Я не могу найти документацию о том, как установить или удалить пульсатор. В форме это выглядит действительно просто, но, используя ссылку ajax и пункт меню обратного вызова, я не могу найти никакой документации.
Я вижу, что существует переменная $settings, которую можно передать функции ajax_command_html, но я не вижу никаких документов о том, как она должна быть отформатирована.
Комментарии:
1. Не могли бы вы пояснить, что такое «throbber»? 😉
Ответ №1:
когда вы создаете элемент формы, вам необходимо определить свойство «прогресс»:
$mycheckbox=array(
'#type' => 'checkbox',
'#title' => 'Load it up',
'#ajax' => array(
'callback' => 'ajax_example_callback',
'wrapper' => 'checkboxes-div',
'effect' => 'slide',
'progress' => array('type' => 'none'),
),
);
Вы можете найти более подробную информацию и примеры здесь
Комментарии:
1. Существует множество документов о том, как вносить эти изменения в элементы, обрабатываемые FAPI, но почти ничего о том, как обрабатывать ссылку.
2. Правда, как упоминал мирзу, если вы не используете FAPI, drupal_pre_render_link() — лучший способ справиться с этим, на самом деле FAPI вызывает drupal_pre_render_link() для создания ссылок в любом случае, так что вы в основном просто переходите к важному слою, для тех, кто не знаком, просто отформатируйте свой массив ссылок, как и любой другой html-элемент, который вы планируете разрешать отображать drupal, т.Е.:
array('#href'=>'my_url','#title' => 'my link title', '#ajax'=>array('callback'=>'my_ajax_callback'));
и т.д.
Ответ №2:
Вы можете просто скрыть div.ajax-progress-throbber, установив для отображаемого значения значение none:
.ajax-progress-throbber {
display: none;
}
Модуль, подобный CSS Injector (http://drupal.org/project/css_injector ) может быть полезно.
Ответ №3:
Я нашел ответ на свой собственный вопрос. Важно понимать, что существует 2 способа отображения ссылок в Drupal 7. Первый использует старую функцию l (), а другой использует массив визуализации. Многие функции темы в Drupal используют старый стиль, и когда он используется, он не запускается через drupal_prerender_link(). Что и выполняет предварительную обработку элемента, который передает настройки из php на уровень js.