Вот в основном то, чего я хочу достичь:
{exp:plugin1:method arg="{exp:plugin2:method}"}
Я пробовал несколько различных подходов.
Подход 1:
{exp:plugin1:method arg="{exp:plugin2:method}"}
Результат: Plugin1->method
arg
значение параметра - это строка {exp:plugin2:method}
, которая никогда не анализируется.
Подход 2:
Мое понимание порядка синтаксического анализапредполагает, что это может иметь разные результаты, но, по-видимому, это не так.
{preload_replace:replaced="{exp:plugin2:method}"}
{exp:plugin1:method arg="{replaced}"}
Результат: Параметр arg
имеет то же значение, что и подход 1.
Подход 3:
Сначала я определяю фрагмент (snip
), содержимое которого:
{exp:plugin2:method}
Затем в шаблоне:
{exp:plugin1:method arg="{snip}"}
Результат: То же, что и в подходах 1 и 2.
Подход 4:
Заметив, что плагины обрабатываются в том порядке, в котором они появляются, я даже тестировал, просто помещая экземпляр {exp:plugin2:method}
до звонка {exp:plugin1:method}
.Я думаю, что я мог бы обернуть этот первый вызов в плагин замены регулярных выражений, чтобы подавить вывод, но что он сначала запустит разбор плагина 2.
{exp:plugin2:method}
{exp:plugin1:method arg="{exp:plugin2:method}"}
Результат: Plugin1->method
Значение параметра arg
является временным хеш-заполнителем для вывода Plugin2->method
(я полагаю, MD5), что класс Template зарезервирован на более поздний срок.