Регистрация
Регистрируясь, вы подтверждаете свое согласие с соглашением об использовании персональных данных.
Восстановление пароля

Как получить ID конкретного (текущего) объекта в Системных настройках компонента?

27.05.2014, 19:32
maxonline
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
maxonline

Зарегистрирован:
2009-01-12
Сообщений: 45

Цитата:
$message


Не видит эту переменную.

Максим
30.05.2014, 12:58
Руслан Густокашин
Студия Вэлпис

Зарегистрирован:
2012-02-06
Сообщений: 962

Константин не совсем внимательно прочитал, видимо, вашу задачу.
Так-то он прав, в системных настройках компонента именно переменная $message показывает номер текущего объекта. Но только на детальной странице материала.
А вам ведь надо выводить фотогалерею именно в объекте в списке.
Перенесите объявление шаблона отображения фотогалереи из системных настроек прямо в объект в списке и воспользуйтесь $f_RowID для определения текущего объекта. Проблема решится.
30.05.2014, 16:04
maxonline
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
maxonline

Зарегистрирован:
2009-01-12
Сообщений: 45

Цитата:

А вам ведь надо выводить фотогалерею именно в объекте в списке.
Перенесите объявление шаблона отображения фотогалереи из системных настроек прямо в объект в списке и воспользуйтесь $f_RowID для определения текущего объекта. Проблема решится.

Руслан. Ваш вариант, к сожалению, не работает. Я проверил. Картинки просто не показываются.
Согласно документации, шаблон вывода файлов из поля Множественной загрузки файлов должен размещаться только в Системных настройках.
Поэтому остается рабочим только вариант, описанный мной выше.
Спасибо всем! улыбка

Максим
30.05.2014, 18:54
Nexwich
Панасин Александр
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 оптимален.
198 196 2014-06-02 07:51:25 13665
Описание проекта