Zoomx получить данные родителя на странице товара

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

Кто нибудь в этой игре «Zoomx» проходил квест: «Получить данные родителя на странице товара»? в шаблоне product.tpl?

Да, можно попробовать вывести через «pdoCrumbs», или другие… А что-нибудь попроще, как например на fenom?

Вроде:

{7 | resource: 'tv_name'}

или

{set $parent_id = $_modx->resource.parent} //Получаем id родителя
{set $grand_parent_id  = $parent_id | resource : 'parent' } //Получаем id дедушки
{$grand_parent_id  | resource : 'pagetitle'} //выводим заголовок
Егор
24 мая 2024, 16:26
modx.pro
215
0

Комментарии: 6

Андрей Степаненко
26 мая 2024, 09:19
0
Для получения данных родителя на странице товара в шаблоне `product.tpl` с использованием Fenom, вы можете использовать следующий код:

{set $parent_id = $_modx->resource.parent} 
{set $grand_parent_id = $parent_id | resource : 'parent'} 
{$grand_parent_id | resource : 'pagetitle'}
Данный код выполняет следующие действия:
1. Получает ID родителя текущего ресурса.
2. Использует этот ID для получения ID «дедушки» (родителя родителя).
3. Выводит заголовок страницы «дедушки» по его ID.

Этот способ достаточно прост и позволяет получить необходимые данные без использования дополнительных сниппетов.

Если у вас есть вопросы или нужна дополнительная информация, пожалуйста, обращайтесь.
    Егор
    26 мая 2024, 09:26
    0
    ты бот что-ли? Или это так гпт ответил? Вопрос был не в том, как на феноме вывести, а как вывести в шаблоне с использованием smarty (без fenom).

    На данный момент, я смог получить id родителя, но как его использовать далее, чтобы получить pagetitle у родителя например, пока не пойму. Мб, заработался…
    {$parent_id = 'parent'|resource} //Получаем id родителя
    {$parent_id} // id родителя
      Андрей Степаненко
      26 мая 2024, 09:33
      0
      {set $parent_id = $_modx->resource.parent} 
      {set $grand_parent_id = $parent_id | resource : 'parent'} 
      {$grand_parent_id | resource : 'pagetitle'}
      чем ответ не устроил? Или чисто к словую smarty претензия?
        Егор
        26 мая 2024, 09:40
        0
        никаких претензий нет. Smarty не поддерживает "set" у него немного все иначе.
        Вы пишите мне в ответе то, что я написал в сообщении, в тексте вопроса. Я знаю как вывести это используя fenom, а как на smarty — нет.
          svvtx
          28 мая 2024, 00:51
          +1
          {$parent_id = 'parent'|resource} //Получаем id родителя
          {$grand_parent_id = $parent_id|field:'parent'} //Получаем id дедушки
          {$grand_parent_id|field:'pagetitle'} //выводим заголовок
          Не тестил, но должно работать.
          Как добавить модификатор field modzone.ru/blog/2020/12/19/zoomx-creating-smarty-plugins/
          Перед и после | в смарти нельзя ставить пробелы.
            Егор
            28 мая 2024, 02:09
            0
            Да, спасибо! Оно.
            Нужно было создать файл «modifier.field.php» и положить его в папку:
            «core/components/zoomx/smarty/plugins/» и все заработало.

            Содержимое файла «modifier.field.php»:
            <?php
            /*
             * Smarty plugin
             * -------------------------------------------------------------
             * Файл:    modifier.field.php
             * Тип:     modifier
             * Имя:     field
             * Назначение:  Get a field of the specified resource.
             * -------------------------------------------------------------
             */
            function smarty_modifier_field($id, $field)
            {
                global $modx;
            
                $id = (int)$id;
                if ($id && $resource = $modx->getObject('modResource', ['id' => $id])) {
                    return $resource->{$field};
                }
            
                return null;
            }

            или

            <?php
            // Плагин
            // Событие OnModxInit
            
            if ($modx->context->key !== 'mgr') {
                function fieldModifier($id, $field)
                {
                    global $modx;
                
                    $id = (int)$id;
                    if ($id && $resource = $modx->getObject('modResource', ['id' => $id])) {
                        return $resource->{$field};
                    }
                
                    return null;
                }
            
                // Регистрируем функцию модификатора
                $smarty = parserx();
                $smarty->registerPlugin("modifier","field", "fieldModifier");
            }

            (продублирую на всякий случай)

            {5|field:"pagetitle"}
            // Можно вернуть дефолтное значение
            {5|field:"pagetitle"|default:"Ресурс не найден!"}
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    6