Как использовать 2 компонента JCarousel?

/ Просмотров: 3287

Как прикрутить второй компонент jCarousel на сайт, чтобы было 2 штуки. Например: 1 в шапке с дефолтными настройками, а вторая внизу меньше в 2 раза, другого цвета, с без кнопок и т.д.

Комментариев: 3 RSS

Ор, в общем случае, если нужно использовать вторую копию какого-либо компонента (стандартного или нестандартного), то алгоритм действий всегда один:

  1. нужно сделать копию папки компонента, изменить имя основного php-файла на новое имя - такое же как у папки. Например, скопировать папку \components\jcarousel\ в папку \components\jcarousel2\. Переименовать jcarousel.php в jcarousel2.php. Если есть файл options.ini - его трогать не нужно.
  2. нужно отредактировать файл options.ini - замените имена ключей опций на новые. Например в \components\jcarousel2\options.ini, у первой же опции есть строка:
  3. options_key ⁼ jcarousel

    Нас интересует переименование значения ключа опции так чтобы jcarousel стал, например, jcarousel2. Такое переименование нужно чтобы второй компонент получил возможность иметь свои опции. Иначе одни и те же опции будут использоваться двумя компонентами. Итак, вам нужно заменить в options.ini все ключи опций похожим образом, чтобы они отличались. Т.е. чтобы код выглядел так («...» - обозначу пропуск строк):

    options_key ⁼ jcarousel2
    ...
    options_key ⁼ jcarousel2_output
    ...
    options_key ⁼ jcarousel2_wrap
    ... и т.д.

    Кроме того нужно поправить название секции опций. Например, они должны стать такими (добавил цифру 2 к стандартным названиям):

    section ⁼ "JCarousel2"
    section_description ⁼ "Настройка JCarousel2"
  4. после этого нужно в файле jcarousel2.php переименовать названия рhp-переменных, css-классов, ini-опций, js-переменных на новые. Можно как и раньше - просто добавить цифру «2» в название.
  5. Этот этап ответственный! Менять нужно не всё подряд. Так, должны остаться нетронутыми названия js-файлов плагина. Например, в компоненте есть код подключения js-плагина:
    echo mso_load_jquery('jquery.jcarousel.js');
    Если сделать глобальную замену jcarousel на jcarousel2, то имя подключаемого файла изменится jquery.jcarousel2.js:
    echo mso_load_jquery('jquery.jcarousel2.js');
    В результате компонент просто перестанет работать.
    Также могут быть и вызов методов js-плагина (если таковые есть и содержат в себе название компонента).
    В любом случае, если что-то заменили зря - компонент не будет работать как надо, значит вам нужно вернуться и последовательно отменить замену чтобы найти ошибку.
  6. нужно сделать копию less-файла в папке \css-less\components\ с новым именем. Так, less-файл компонента jcarousel находится здесь - \css-less\components\jcarousel.less. Его нужно скопировать, например, в файл \css-less\components\jcarousel2.less
  7. Затем нужно заменить в новом файле упоминания css-классов на новые. В этом случае можно пользоваться глобальной заменой по тексту и просто заменить jcarousel на jcarousel2. Должно получиться что-то типа такого:

    div.jcarousel2-component {
    ...
     div.jcarousel2 {
    ...  
      ul.jcarousel2-list {
    ...
      }
    ...
     }
    ... 
     .jcarousel2-pagination {
    ...
     }
    }

После всего этого остаётся задать опции компонента через админ-панель и проверить правильность его работы.

Пока писал вам ответ у меня получилась второй компонент jCarousel2 - как раз такой, какой вам нужен для запуска двух компонентов. Решил опубликовать его, чтобы не заставлять повторять все шаги.

Скачать его можно здесь.

Спасибо за развернутый ответ, такие движения возможны в отношении любого компонента?