Простой fetch по урлу и идентификатору объекта.
Чаще всего самый правильный путь - производить fetch по url, например:
// Добавляем к урлу текущего объекта
{def $business_resources_node = fetch(content, node, hash(node_path, concat($node.url, '/business-resources')))}
// Указываем полный урл
{def $hotels_node = fetch(content, node, hash(node_path, '/home/business_gallery'))}
Если же Вам нужен объект с конкретным идентификатором, можно использовать код ниже. Правда, лучше Вам так никогда не делать, потому как после пересоздания объекта в панели администратора, этот код перестанет работать.
{def $comment_node = fetch(content, node, hash(node_id, 350 ))}
Fetch по типу.
Давайте пойдем чуть дальше и попробуем произвести выборку объектов по типу:
// Откроем страницу NEWS
{def $news_page = fetch(content, node, hash(node_path, '/news'))}
// Выберем все объекты с типом HR_NEWS на странице NEWS
{def $events = fetch(content, list, hash(
parent_node_id, $news_page.node_id,
sort_by, array(attribute, false(), 'hr_event/date'),
class_filter_type, 'include',
class_filter_array, array('hr_event')
))}
Давайте сделаем еще пару примеров по выборкам объектов.
Fetch по приоритету.
{def $images = fetch(content, list, hash(
parent_node_id, $gallery_folder.node_id,
sort_by, array('priority', true()),
class_filter_type, 'include',
class_filter_array,array('image')
))}
Выборка первого из списка, согласно приоритету.
{def $announcements = fetch(content, list, hash(
parent_node_id, $announcements_node.node_id,
sort_by, array(priority, true()),
limit, 1,
class_filter_type, 'include',
class_filter_array, array('hr_announcement')
))}
Выборка объекта с глубиной, большей единицы.
{def $random_items = fetch(content, list, hash(
parent_node_id, $catalog_page.node_id,
depth, 2,
sort_by', array(priority, true()),
offset, rand(0, $total_count|sub($items_count|inc())),
limit, $items_count,
class_filter_type, 'include',
class_filter_array, array('hr_item')
))}
Пример выборки событий, которые разрешено публиковать на главной странице.
Давайте в качестве примера сделаем выборку объектов для главной страницы. Например, нам нужно отобразить в блоке "События" все события, отсортированные по дате. Код будет выглядеть так:
{def $events = fetch(content, list, hash(
parent_node_id, $home_page.node_id,
sort_by, array(attribute, false(), 'hr_event/date'),
class_filter_type, 'include',
attribute_filter, array(array('hr_event/on_the_homepage', '=', '1')),
class_filter_array, array('hr_event')
))}
А теперь давайте немного усложним задачу, и сделаем выборку событий, которые еще не произошли:
{def $currentdate = currentdate()}
{def $events = fetch(content, list, hash(
parent_node_id, $node.node_id,
class_filter_type, include,
class_filter_array, array('hr_event'),
attribute_filter, array(array('hr_event/date', '>=', $currentdate)),
sort_by, array(attribute, true(), 'hr_event/date')
))}
Выборка любых 3-х элементов, отсортированных по приоритету.
{def $available_properties_count = fetch(content, tree_count, hash(
parent_node_id, $available_properties_node.node_id,
class_filter_type, 'include',
class_filter_array, array('hr_available_property')
))}
{def $available_properties = fetch(content, list, hash(
parent_node_id, $available_properties_node.node_id,
sort_by, array('priority', true()),
offset, rand(0, $available_properties_count|sub(4)),
limit, 3,
class_filter_type, 'include',
class_filter_array, array('hr_available_property')
))}
Комментарии
Оставить комментарий
Для того чтобы оставить комментарий, авторизуйтесь.
Для того чтобы оставить комментарий, заполните поля, приведенные ниже.