MaxHub
Полезности по Maxsite CMS

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

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

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

Op 3 1809
Комментариев: 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. Да, любого.

Оставьте комментарий!

grin LOL cheese smile wink smirk rolleyes confused surprised big surprise tongue laugh tongue rolleye tongue wink raspberry blank stare long face ohh grrr gulp oh oh downer red face sick shut eye hmmm mad angry zipper kiss shock cool smile cool smirk cool grin cool hmm cool mad cool cheese vampire snake excaim question

Вход / регистрация или войти без комментирования
  Имя и сайт используются только при регистрации

Авторизация MaxSiteAuth. Войти через loginza

(обязательно)