Powered by Prisma CMS

Читайте все статьи на prisma-cms.com

26 окт. 2014 г., 12:12

Gallery не работает &activeCls

День добрый. Странная ситуация. Имеется вот такой код в шаблоне
[[!Gallery? &album=`1` &activeCls=`active` &thumbTpl=`NewGalItemThumb` &useCss=`1`]]

И простой шаблон в чанке NewGalItemThumb
div class="[[+cls]]" img src="[[+thumbnail]]" alt="[[+name]]" /div
Если я правильно понимаю документация, то [[+cls]] должно возвращать `active` один раз в самом начале но этого не происходит, а выводит класс по умолчанию "gal-item".
Что самое интересное, позавчера все работало, смог сделать карусель на Бутстрапе, но спустя сутки работать перестало.
Может кто нибудь сталкивался с подобноый ситуацией или может есть какие нибудь мысли ?
вышел из положения вот такой конструкциеей
📷
забыл что ваш движок теги хавает и просит еще... повторяю:
div class="[[+id:if=`[[+id]]`:is=`1`:then=`item activ`:else=`item`]]" img class="[[+imgCls]]" src="[[+thumbnail]]" alt="[[+name]]" / /div
А дайте ссылку на документацию, где указано, что можно передавать параметр activeCls. Я его в сниппете Gallery не наблюдаю. P.S. И хотите иметь полный контроль над Gallery, осваивайте это.
забыл что ваш движок теги хавает и просит еще... повторяю:
Да, дойдут руки, подправим. А пока, если что, выкладывайте листинги на гистхаб или типа того.
http://rtfm.modx.com/extras/revo/gallery/gallery.gallery
itemCls The CSS class to use for each item. gal-item activeCls The CSS class to add if the item is the "active" item. gal-item-active
п.с. за ссылку спасибо.
Что интересно, да, должен учитываться и выводиться. Вот такой код в нем есть:
$highlightItem = $modx->getOption($imageGetParam,$_REQUEST,false); /** @var galItem $item */ foreach ($data['items'] as $item) { $itemArray = $item->toArray(); $itemArray['idx'] = $idx; $itemArray['cls'] = $itemCls; if ($itemArray['id'] == $highlightItem) { $itemArray['cls'] .= ' '.$activeCls; }
Но, как следует из кода, этот класс будет выводиться только тогда, когда указан id элемента в запросе ($_REQUEST). Так что если вы рассчитываете на то, что будет выводиться активный просто при выводе галереи, получается, это не сработает. Ваша конструкция должна больше отвечать поставленной вами цели.
Все же конструкция не подошла, так так как [[+id]] который используется в условиях возвращает порядковый номер картинок в целом а не с начала альбома.
Что бы добиться добавления класса в [[+cls]] к первому элементу пришлось вмешаться в скрипт галереи
$item_id=0; // добавлена переменная foreach ($data['items'] as $item) { $itemArray = $item->toArray(); $itemArray['idx'] = $idx; $itemArray['cls'] = $itemCls; $item_id++; // увеличиваем if ($item_id == 1) { // проверяем является ли эллемент первым в массиве $itemArray['cls'] .= ' '.$activeCls;// добавляем класс } if ($itemArray['id'] == $highlightItem) { $itemArray['cls'] .= ' '.$activeCls; }
Возникает вопрос, можно было решить задачу как то боле правильно ?
Можно. Я же писал: хотите иметь полный контроль над Gallery, осваивайте это. А сниппет Gallery править - не православно. Хотя бы копию его тогда сделайте и творите с ним, что хотите.

Добавить комментарий