Forums / National / Russian / Модули и плагины / Attacher - релиз

Roffun
#44313 2019-07-15 17:49

Здравствуйте,

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

<!-- IF {PRJ_ID|att_count('projects',$this)} > 0 -->
<div data-att-display="all">
    <h3>{PHP.L.att_attachments}</h3>
    {PRJ_ID|att_display('projects', $this, '', 'attacher.display', 'all')}
</div>
<!-- ENDIF -->

В этом случае содержимое цикла будет в файле attacher.display.tpl.

Если используется плагин highslide, то для него есть свой шаблон: highslide.attacher.gallery.tpl, вызывается так:

<!-- IF {PRJ_ID|att_count('projects', $this, '', 'images')} > 0 -->
<div data-att-gallery="highslide" data-att-group="test">
    <h3>{PHP.L.att_gallery}</h3>
    {PRJ_ID|att_display('projects', $this, '', 'highslide.attacher.gallery', 'images')}
</div>
<!-- ENDIF -->

Чтобы не править в оригиналах, tpl файлы можно скопировать в одноименную папку в шаблоне, и в них править что нужно. Вообще вариантов много, в большинстве случаев достаточно использования функций плагина, при желании изменив код tpl шаблона. Для вызова первой прикрепленной картинки есть вариант вызова:

{PRJ_ID|att_get('projects', $this, '', '', 'first')|att_thumb($this, 840, 450, crop)}

Также можно при желании сделать не одну форму загрузки а несколько, передав параметр field. Например для первой картинки один загрузчик, для всех остальных второй, тогда не придётся выбирать первую или все кроме первой, достаточно будет вызвать обычный код с указанием имени поля.

Нумерация, описания добавленные в форму загрузчика, всё доступно в tpl файлах вызываемых через функции плагина, но внутри них недоступны теги извне. 

Функция att_get() получает сырые данные для 1 файла (первый, последний, или случайный). Но если нужно именно в цикле получить данные с помощью конструкции FOR, понадобится массив, который можно получить функцией att_get_all(). Она предназначена именно для этих целей. Если перевести код который указан в вашем примере в конструкцию Аттачера, и применить функцию att_get_all(), код будет примерно таким:

<!-- IF {PRJ_ID|att_count('projects',$this,'','images')} > 0 -->
<div data-att-gallery="highslide" data-att-group="my-img">
    <a href="{PRJ_ID|att_get('projects', $this, '', '', 'first')|att_thumb($this, 840, 450, crop)}" class="highslide" title="{PRJ_SHORTTITLE} г.{PRJ_CITY} - {PHP.L.Description_Market}">
        <img width="840" height="450" src="{PRJ_ID|att_get('projects', $this, '', '', 'first')|att_thumb($this, 840, 450, crop)}" alt="{PRJ_SHORTTITLE} г.{PRJ_CITY} - {PHP.L.Description_Market}">
    </a>
</div>
 
<div data-att-gallery="highslide" data-att-group="my-any-group">
    <!-- FOR {KEY}, {VALUE} IN {PRJ_ID|att_get_all('projects',$this, '', '')} -->
    <!-- IF {KEY} != 1 -->
    <a href="{VALUE.att_id|att_thumb($this, 840, 450, crop)}" class="highslide" title="{PRD_SHORTTITLE}  г.{PRD_CITY} - {PHP.L.Description_Market}">
        <img src="{VALUE.att_id|att_thumb($this, 840, 450, crop)}" alt="{PRJ_SHORTTITLE} г.{PRJ_CITY} - {PHP.L.Description_Market}">
    </a>
    <!-- ENDIF -->
    <!-- ENDFOR -->
</div>
<!-- ENDIF -->

Только приставки {PRJ_ нужно поменять на {PRD_ если используется другой модуль (в примере конструкция для модуля projects).

P.S. 

Скачайте обновлённую версию плагина  из репозитория Github, в ней уже есть эта функция.

Улетел на другую планету, а там почты нету.. https://www.cotonti.com/forums/45298?m=posts

Dit bericht is bewerkt door Roffun (2020-02-18 00:12, 5 jaren ago)