К содержанию

Не могу получить значение placeholder. Тонкости работы парсера?

Уверен, вы мне подскажите, потому что я наверное один не понимаю всех этих тонкостей и нюансов работы различных парсеров и выставления плэйсхолдеров.
В чем проблема.
Есть шаблон, создан как статичный документ.
Вот на скрине его содержимое.

В нем вызывается сниппет (на скрине отображены сразу все варианты вызова, но конечно же я запускал их по одному)
в этом сниппете выставляется плэйсхолдер.
Смотрите скрин.

А ниже в шаблоне я пытаюсь значение получить (там тоже много вариантов написано, но я применял их по одному конечно)
Данные могу получить только через стандартный шаблонизатор, а очень хочется работать с этим плэйсхолдером через fenom, поскольку в коде будет много проверок, условий на наличие тех или иных настроек и хочется использовать ifы foreachи и прочие прелести фенома.

Есть идеи как получить плэйсхолдер в переменную fenom?
Спасибо.
Александр Мельник
Александр Мельник
30 июня 2022, 11:55
modx.pro
2 431
Реклама

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

Артур Шевченко
30 июня 2022, 12:02
А сниппет точно отрабатывает?
    Александр Мельник
    Александр Мельник Проверенный
    30 июня 2022, 12:04
    100 процентов. Если добавить var_dump($apsettings) в сниппете после получения данных, то они распечатаются как положено.
    Артур Шевченко
    30 июня 2022, 14:07
    Я ХЗ почему у тебя не работают плейсхолдеры, но я бы на твоём месте просто вернул массив и сохранил его в переменную.
    {set $settings = 'SnippetName' | snippet}
      Александр Мельник
      Александр Мельник Проверенный
      30 июня 2022, 14:45
      Да, это далеко не самый плохой вариант, спасибо.
      Роман
      Роман Старожил
      30 июня 2022, 15:28
      10 строка ошибка setPlaceholders
      Просто так вызови
      {$apsettings}
      А вообще массив бы туда запулил, в crm.settings.
      setPlaceholders и вызывал бы потом.
      $modx->setPlaceholders(array(
         'name' => 'John',
         'email' => 'jdoe@gmail.com',
      ),'crm.settings.');
        Александр Мельник
        Александр Мельник Проверенный
        01 июля 2022, 07:45
        признаюсь, не знал что существует метод setPlaceholderS, всегда пользовался setPlaceholder, но конкретно в моем случае это проблему не решает.
        Если я выставляю (неважно как) плейсхолдеры внутри сниппета, то ниже по коду я никак не могу получить их используя феном, только через [[+placeholder_name]]
        Если же я в шаблоне выставлю плейсхолдер не внутри сниппета а вот так
        {$_modx->setPlaceholder('name','value')}
        то такой плейсхолдер легко ловится на феноме
        {set $my_placeholder = $_modx->getPlaceholder('name')}
        Максим
        Максим Проверенный
        01 июля 2022, 21:22
        Попробуйте
        {$_pls['+appsettings']}
        или
        {$_modx->getPlaseholder('+appsettings')}
          Максим
          Максим Проверенный
          01 июля 2022, 21:34
          Установленные плейсхолдеры можно посмотреть так:
          print_r($modx->placeholders);
            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
            8