Решение проблемы с colorbox при ajax загрузке ноды

Главные вкладки

Аватар пользователя anothere64 anothere64 4 февраля 2017 в 16:59

Всем привет! История такая.. Drupal 7. Делаю фотогалерею, в которой есть категории. При выборе категории должны загружаться фотографии данной категории с помощью ajax. Я создал несколько views (отдельно на каждую категорию) и при нажатии кнопки загружаю в контейнер необходимую ноду. Выглядит это примерно так.

<div id="gallery-container"></div>
<script>
(function ($) {
    $(document).ready(function () {
      $('#gallery-container').load('/gallery/category_name #block-system-main');
    });
  }(jQuery));
</script>

При таком раскладе, все загружается, но не работает colorbox. Если я загружаю полностью страницу, то colorbox работает, но конфликтует с другим colorbox, который уже есть на страницу в другом блоке.

$('#gallery-container').load('/gallery/category_name');

Очень хочется решить эту проблему не костылями. Может есть модуль, который умеет загружать ноды ajax`ом или любой другой способ...

Комментарии

Аватар пользователя anothere64 anothere64 4 февраля 2017 в 17:26

В общем я думаю, что грузить целую страницу в другую - это не есть хорошо. Загружать только #block-system-main более правильно, как мне кажется... Но как тогда заставить работать colorbox?

Аватар пользователя bumble bumble 4 февраля 2017 в 18:03

Если Вы используете Views - он все сам умеет нормально Ajax'ифицировать.
Вам нужно было создать только 1 представление и добавить фильтр по категории. И выводить его передавая категорию в качестве аргумента.

Посмотрите этот гайд для примерного понимания работы.

Так же, поищите инструкции по Drupal AJAX API - у Вас не правильный (относительно Drupal) подход. Все подобные моменты имеют решения и описаны множество раз.

Аватар пользователя anothere64 anothere64 4 февраля 2017 в 20:27

Спасибо за ответ! Сделал, то что хотел, с помощью модулей

  • Better Exposed Filters
  • TVI: Taxonomy View Integrator
  • Views Load More

Создал словарь таксономии с категориями фотогалереи, сделал одну вьюшку и подключил к словарю, с помощью TVI, потом настроил вывод фильтра ссылками, с помощью Better Exposed Filters. Все работает идеально и даже в код лезть не пришлось. А ну и ссылка "Показать еще", с помощью модуля Views Load More.