Возможно ли заставить работать плейсхолдеры в зарегистрированном коде?

При регистрации кода при помощи:
cssToHead — регистрация CSS кода в шапке страницы
htmlToHead — регистрация произвольного HTML в шапке страницы
htmlToBottom — регистрация произвольного HTML в подвале страницы
jsToHead — регистрация javascript файла в шапке страницы. Если передать параметром true, то можно регистрировать сразу код.
jsToBottom — регистрация javascript в подвале страницы. Если передать параметром true, то можно регистрировать сразу код.
Или
$_modx->regClientCSS
$_modx->regClientScript
$_modx->regClientStartupHTMLBlock
$_modx->regClientHTMLBlock
плейсхолдеры ни в MODX-вварианте — [[+placeholder]] или [[*placeholder]], ни на Fenom — {$placeholder} НЕ РАБОТАЮТ. В исходном коде и на странице отображаются в неизменном виде.

Можно ли заставить работать плейсхолдеры в зарегистрированном коде?
Дмитрий
06 апреля 2019, 15:11
modx.pro
1
376
0

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

Дмитрий
07 апреля 2019, 19:42
0
Неужели проблема нерешаема?
    Баха Волков
    08 апреля 2019, 00:26
    0
    Скорее всего решаема, только вот проблема не озвучена. В системе есть настройка fix_your_problems, попробуйте его включить, вдруг поможет
      Дмитрий
      08 апреля 2019, 04:09
      0
      Вроде описал, что плейсхолдеры отображаются в неизменном виде.

      Например, если прописывать регистрацию кода в чанке, который относится к сниппету.

      Есть вызов сниппета, там прописано:
      'tplForm' => '@FILE chunks/my_chank.tpl'
      В этом чанке все нужные плейсхолдеры работают.

      Регистрирую в этом чанке код html и js, указанными выше способами. Прописываю в нем (регистрируемом коде) в нужных местах плэйсхолдеры. Код регистрируется там где мне нужно, однако плэйсхолдеры не работают — остаются в неизменном виде.
      Сергей Шлоков
      08 апреля 2019, 09:12
      0
      Вы хотите, чтобы MODX распарсил теги в яваскрипт файле?
        Дмитрий
        10 апреля 2019, 16:58
        0
        Нет не в файле а в регистрируемом коде, который находится в чанке. Плейсхолдеры в чанке работают, ниже в этом же чанке прописываю регистрацию кода, в котором плейсхолдеры не работают.

        Вот комментарии:
        modx.pro/help/17975#comment-109213
        modx.pro/help/17975#comment-109225
          Сергей Шлоков
          11 апреля 2019, 08:05
          0
          Вообще теги остаются только при аякс запросах.

          В Вашем случае логичнее всего предположить, что Вы выставляете теги несуществующих плейсхолдеров.
            Дмитрий
            11 апреля 2019, 16:38
            0
            Плейсхолдеры рабочие, в чанке они работают.

            Есть чанк — my_chank.tpl, в нем прописываю:
            <b>{$placeholder}</b> // выводит значение плейсхолдера
            
            {$_modx->regClientHTMLBlock('
            <b>{$placeholder}</b> // тег плейсхолдера  выводится в неизменном виде - {$placeholder}
            ')}
            или так:
            {'<b>{$placeholder}</b>' | htmlToBottom : true} // тоже в неизменном виде
            {'<b>{$placeholder}</b>' | htmlToBottom} // тоже в неизменном виде
              Сергей Шлоков
              11 апреля 2019, 17:22
              1
              +1
              {('<b>' ~ $placeholder ~ '</b>') | htmlToBottom : true}
                Дмитрий
                11 апреля 2019, 19:32
                0
                Сергей, благодарю.
                Так плейсхолдеры работают.
                  Дмитрий
                  11 апреля 2019, 20:30
                  0
                  Сергей, а не подскажешь, возможно ли вывести значения плейсхолдеров без регистрации кода, прописав их в главном шаблоне?
                  Может не так выражусь, типа сделать их глобальными или хотя бы чтобы они работали не только в чанке, но и в главном шаблоне.
                    Александр Мельник
                    11 апреля 2019, 21:01
                    0
                    Дмитрий, мы тут все наблюдаем, зачем же Вам понадобилось парсить плейсхолдеры, которые внутри регистрируемого через методы кода, а Вы сразу же как нашлось решение, спрашиваете — а
                    возможно ли вывести значения плейсхолдеров без регистрации кода
                    Расскажите?
                      Дмитрий
                      11 апреля 2019, 21:14
                      0
                      Я недавно знаком с MODX, можно сказать, только учусь. Поэтому интересуюсь и такой возможностью.
                        Александр Мельник
                        11 апреля 2019, 22:27
                        0
                        А где вы отрыли вообще эту информацию о методах
                        $_modx->regClientCSS
                        $_modx->regClientScript
                        $_modx->regClientStartupHTMLBlock
                        $_modx->regClientHTMLBlock
                        и зачем вообще решили ими пользоваться? Я специально зашел на страницу документации по fenom
                        docs.modx.pro/komponentyi/pdotools/parser#%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD%D0%B8%D0%B7%D0%B0%D1%82%D0%BE%D1%80-Fenom
                        и нашел упоминание только об одном методе, значит вы явно отрыли их не на этой странице.
                        Я могу ошибаться, но считаю, что 99 процентов разработчиков вообще ими не пользуется для сайтов. Эти методы скорее нужны для написания компонентов и регистрации каких-то строго определенных скриптов.
                          Дмитрий
                          11 апреля 2019, 22:55
                          0
                          … и нашел упоминание только об одном методе, значит вы явно отрыли их не на этой странице.
                          Конечно не на этой странице, а вот здесь:
                          docs.modx.com/revolution/2.x/developing-in-modx/basic-development/snippets/adding-css-and-js-to-your-pages-through-snippets
                            Александр Мельник
                            12 апреля 2019, 07:41
                            0
                            Ну там видите как озаглавлена страница? Как подключать css и js изнутри созданного вами сниппета.
                            И это имеет смысл, поскольку обращение идет к объекту приложения $modx, который доступен только внутри сниппета.

                            А вот использовать эти методы для объекта $_modx на мой взгляд бесполезно, хотя мало ли…
        Sem
        Sem
        08 апреля 2019, 10:04
        0
        Как подключаете Вы — так работать не будет! MODX своим парсером, на сколько я знаю, не заглядывает в подключаемые таким образом js файлы, соответственно никаких плейсхолдеров не будет внутри.
        А вот если создать ресурс с типом js и внутри писать js-код с динамикой, а потом этот ресурс подключать по ссылке — вот так работать будет. Но сам такой подход уже попахивает не очень.
          Дмитрий
          08 апреля 2019, 12:09
          0
          Я же не писал, что файлы регистрирую. В файлах мне не нужно чтобы работало. Интересует в самом зарегистрированном коде.

          Регистрирую так:
          {$_modx->regClientHTMLBlock('
          <script>
          здесь js-код с плейсхолдерами
          </script>
          ......
          здесь html код с плейсхолдерами
          '}

          Однако плейсхолдеры не работают.
            Дмитрий
            24 мая 2019, 13:10
            0
            Вот так можно попробовать
            {$modx->setPlaceholder('namePlaceholder','text')}
            
            {$_modx->regClientScript('
            <script type="text/javascript">
                console.log("' ~ $_modx->getPlaceholder('namePlaceholder') ~ '");
            </script>')}
            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
            18