Forumlar / 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

Bu konu Roffun tarafından düzenlendi(2020-02-18 00:12, 4 yıllar önce)