На время проведения реконструкции сайт переведён в режим "ТОЛЬКО ЧТЕНИЕ" (Read only). Приносим свои извинения!
MaxHub
Полезности по Maxsite CMS

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

Вопросы-ответы / 5 августа 2014

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

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

    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 - как раз такой, какой вам нужен для запуска двух компонентов. Решил опубликовать его, чтобы не заставлять повторять все шаги.

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

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

  3. Да, любого.