К содержанию

Как задать шаблон создаваемого документа, исходя из шаблона родительского?

Здравствуйте!
Я работаю с небольшим проектом на MODX Revolution, и хотел бы узнать, как назначать шаблон для создаваемого документа исходя из шаблона родителя.
Более подробно, мне нужно следующее:
Допустим, у нас есть два шаблона: 1 и 2. При создании документа, или при сохранении:
1. Узнать шаблон родителя.
2. Если шаблон родителя имеет номер 1, то создаваемый документ получает шаблон 2.
Я попытался сделать плагин:
<?php
$parent = $resource->get('parent');
$parentTpl = $parent->get('template');

if($parentTpl == 1) {
  $resource->set('template', 2);
}
Но почему-то не работает. Можете подсказать. как исправить?
Буду благодарен за любую помощь!
Kiten
Kiten
29 марта 2020, 15:46
modx.pro
1 282
Реклама

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

Андрей
Андрей Старожил
29 марта 2020, 15:56
Можно использовать:
  1. Inherit Template
  2. Дополнение Collections, там также можно выставлять шаблон для дочерних
  3. Написать плагин на OnDocFormRender
  4. Делать через настройки форм, почему нет?
    Kiten
    Kiten Старожил
    29 марта 2020, 16:16
    Спасибо, а можете подсказать?
    Я попытался сделать плагин:
    <?php
    $parent = $resource->get('parent');
    $parentTpl = $parent->get('template');
    
    if($parentTpl == 1) {
      $resource->set('template', 2);
    }
    И назначить событие OnBeforeDocFormSave, но не сработало.
    Буду благодарен, если подскажете, как исправить
      Артем
      Артем Старожил
      29 марта 2020, 16:30
      потому что эта строка
      $parent = $resource->get('parent');
      возвращает id родителя, а не объект, поэтому в следующей строке вообще должен быть fatal error
      $parentTpl = $parent->get('template');

      сначала нужно получить объект родителя на основе его id
      $parentObj = $modx->getObject(modResource::class, ['id' => $parent]);
      а затем уже работать с этим объектом
        Kiten
        Kiten Старожил
        29 марта 2020, 16:47
        Спасибо большое!
          Сергей Шлоков
          Сергей Шлоков Эксперт
          29 марта 2020, 17:47
          Можно и так
          $parent = $resource->Parent;
      Kiten
      Kiten Старожил
      29 марта 2020, 16:11
      удалено
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        6