|
|
27.05.2014, 19:32
|
|
maxonline
Maxonline

Зарегистрирован: 2009-01-12
Сообщений: 45
|
Как получить ID конкретного (текущего) объекта в Системных настройках компонента?
В системных настройках для поля "Множественной загрузки файлов" (МЗФ) прописывается шаблон для вывода картинок, которые загружаются через поле МЗФ. У меня выводятся на сайте анонсы статей блога в виде списка. В этом анонсе выводятся превью всех картинок этой статьи, загруженные в МЗФ.
Я хочу дать возможность просмотреть все эти картинки в большом формате прямо из анонса. Для этого использую jQuery фотоальбом.
У него есть параметр, который задает группу картинок, чтобы в фотоальбом для конкретной статьи попадали только картинки, которые загружены для этой статьи: rel='<название группы>'.
Поэтому мне для каждой статьи в шаблоне вывода МЗФ в Системных настройках нужно сформировать свой rel, например: rel='group1'; rel='group2' и т.д.
Но обращение $f_Row_ID к идентификатору конкретного объекта в Системных настройках не работает.
Как мне получить ID конкретного (текущего) объекта в Системных настройках?
Максим
|
|
|
27.05.2014, 20:56
|
|
Константин
Константин
Зарегистрирован: 2010-07-20
Сообщений: 210
|
$message
orlovkn
|
|
|
27.05.2014, 22:21
|
|
maxonline
Maxonline

Зарегистрирован: 2009-01-12
Сообщений: 45
|
Не видит эту переменную.
Максим
|
|
|
30.05.2014, 12:58
|
|
Руслан Густокашин
Студия Вэлпис
Зарегистрирован: 2012-02-06
Сообщений: 962
|
Константин не совсем внимательно прочитал, видимо, вашу задачу.
Так-то он прав, в системных настройках компонента именно переменная $message показывает номер текущего объекта. Но только на детальной странице материала.
А вам ведь надо выводить фотогалерею именно в объекте в списке.
Перенесите объявление шаблона отображения фотогалереи из системных настроек прямо в объект в списке и воспользуйтесь $f_RowID для определения текущего объекта. Проблема решится.
|
|
|
30.05.2014, 16:04
|
|
maxonline
Maxonline

Зарегистрирован: 2009-01-12
Сообщений: 45
|
Цитата:Перенесите объявление шаблона отображения фотогалереи из системных настроек прямо в объект в списке и воспользуйтесь $f_RowID для определения текущего объекта. Проблема решится.
Спасибо, Руслан. Я попробую Ваши рекомендации.
Вообще ребята из поддержки уже помогли в этом вопросе. Решение такое:
• в системных настройках прописали метку %ROWID% в том месте, где должен вставляться ID объекта; • в коде Объект в списке, где должны выводиться картинки пишем str_replace('%ROWID%', $f_RowID, $f_Files). $f_Files - имя поля Множественная загрузка файлов.
Все работает.
Максим
|
|
|
30.05.2014, 17:52
|
|
maxonline
Maxonline

Зарегистрирован: 2009-01-12
Сообщений: 45
|
Цитата:
А вам ведь надо выводить фотогалерею именно в объекте в списке.
Перенесите объявление шаблона отображения фотогалереи из системных настроек прямо в объект в списке и воспользуйтесь $f_RowID для определения текущего объекта. Проблема решится.
Руслан. Ваш вариант, к сожалению, не работает. Я проверил. Картинки просто не показываются.
Согласно документации, шаблон вывода файлов из поля Множественной загрузки файлов должен размещаться только в Системных настройках.
Поэтому остается рабочим только вариант, описанный мной выше.
Спасибо всем!
Максим
|
|
|
30.05.2014, 18:54
|
|
Nexwich
Панасин Александр

Зарегистрирован: 2011-04-05
Сообщений: 1037
|
Еще вариант создайте свой цикл
<?
$items = $nc_core->db->get_results("SELECT * FROM Multifield WHERE Field_ID=2567 AND Message_ID=".$f_RowID."", ARRAY_A );
foreach($items as $item){ ?>
<a href='<?=$item[Path]?>' rel='group<?=$f_RowID?>'><img src='<?=$item[Preview]?>' alt=''></a>
<? } ?>
Вместо 2567 введите id вашего поля
Модуль "Почтовые уведомления" – настройка email уведомлений на вашем сайте без программирования. Бесплатно. http://netcat.ru/products/CatStore/solution_242.html
|
|
|
02.06.2014, 07:51
|
|
Руслан Густокашин
Студия Вэлпис
Зарегистрирован: 2012-02-06
Сообщений: 962
|
Максим, точно, техподдержка права - совсем забыл, что "конвертация" в HTML-код этого блока происходит еще до вызова кода, указанного в "объекте в списке". Тогда мой вариант, действительно, не подходит. В общем-то идея с str_replace вполне грамотная, и грузить процессор будет явно меньше, чем мой вариант.
Решение Александра самое надежное - но, к сожалению, избыточное в плане нагрузки на SQL-сервер, так как сам неткат при инициализации объекта в списке и так выполняет свой SQL-запрос для чтения инфы об фотках, и плюс еще один свой самодельный запрос напишем - будет двойная нагрузка.
Так что лучше сделать как подсказали в техподдержке. Вариант с str_replace оптимален.
|