Как удалить throbber из ссылки Ajax на drupal 7?

#ajax #drupal #drupal-7

#ajax #drupal #drupal-7

Вопрос:

мы используем фреймворк drupal 7 ajax для загрузки контента на страницу. При нажатии на ссылку во время обработки запроса после ссылки появляется пульсатор.

Я не могу найти документацию о том, как установить или удалить пульсатор. В форме это выглядит действительно просто, но, используя ссылку ajax и пункт меню обратного вызова, я не могу найти никакой документации.

Я вижу, что существует переменная $settings, которую можно передать функции ajax_command_html, но я не вижу никаких документов о том, как она должна быть отформатирована.

Комментарии:

1. Не могли бы вы пояснить, что такое «throbber»? 😉

2. en.wikipedia.org/wiki/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.