Поддерживает ли EE3 предварительную загрузку с заменой условными выражениями в сетках?

Я продолжаю сталкиваться с проблемами, используя preload-replace с условностями, которые находятся в поле сетки.

I have the preload: {preload_replace:staticchannelslug="gp"}

И я пытаюсь использовать его так:

        {page_header_{staticchannelslug}}

            

{if page_header_{staticchannelslug}:alt_title}...{if:else}...{/if}

{/page_header_{staticchannelslug}}

Это вызывает ошибку:

Что-то пошло не так, и этот URL-адрес не может быть обработан в настоящее время.

<Сильный> EDIT:

Ошибка при отладке:

У вас есть неверный условный код в вашем шаблоне. Просмотрите свои условные условия для незакрытой строки, недопустимых операторов, отсутствующих} или отсутствующих {/ if}.

     

Состояние Parser: Неожиданный «alt_title» (ПЕРЕМЕН); ожидаемый RD в шаблоне «страницы/общая страница» в строке 9.

// end edit

Если я не использую предварительную загрузку и не изменяю ее, я не получаю ошибок:

        {page_header_gp}

            

{if page_header_gp:alt_title}...{if:else}...{/if}

{/page_header_gp}

Я использовал этот же метод в течение многих лет в EE2, но просто сталкивался с проблемами с ним в EE3: /

Это тоже не работает, то же сообщение об ошибке:

        {if '{page_header_{staticchannelslug}'}

            {page_header_{staticchannelslug}}
                            ...
            {/page_header_{staticchannelslug}}

        {/if}

Любые идеи о том, что проблема здесь или что я могу пропустить?

Благодарю.

0
nl ja de
«Что-то пошло не так, и этот URL-адрес не может быть обработан в это время». это ошибка, которую я получаю при входе в систему как Super Admin. То, что я пытаюсь достичь, - это просто возможность повторно использовать код, просто изменяя пул в предзагрузке (например, в поле канала «общая страница» используется slug «gp», но поле канала «blog post» может использовать slug "bp" - page_header_gp vs page_header_bp ). Кроме того, я использовал этот метод для создания частичного фрагмента, а затем только изменить переменную slug на канал/шаблон. Надеюсь, это имеет смысл! На самом деле, как правило, время сбережения :)
добавлено автор Erik Öjebo, источник
Ах, да, с отладкой ... Я получаю следующее: У вас есть недействительный условный шаблон. Просмотрите свои условные условия для незакрытой строки, неверных операторов, отсутствующих} или отсутствующих {/ if}. Parser State: Неожиданный «alt_title» (ПЕРЕМЕННЫЙ); ожидаемый RD в шаблоне «страницы/общая страница» в строке 9. Я обновлю свое сообщение, чтобы включить это ...
добавлено автор Erik Öjebo, источник
Какую ошибку вы получаете, когда вы вошли в систему как супер-администратор? Замены предварительной загрузки - это действительно то, что они говорят: простой текст, который заменяется по всему шаблону до его выполнения, поэтому я ожидаю, что это сработает. Хотя, честно говоря, в ограниченном контексте выше, я не понимаю, что вы набираете, делая?
добавлено автор littlecharva, источник
Да, имеет смысл. Похоже, что у вас есть отладка, установленная в 0, как зарегистрированный супер-администратор, вы получите более описательную ошибку. Удостоверьтесь, что в вашем index.php не установлено значение $ debug, равное 0, и ваши системные настройки имеют «Включить отчет об ошибках?». установлено значение «да».
добавлено автор littlecharva, источник
Ок просто проверила ошибку на новой установке, копая!
добавлено автор littlecharva, источник

1 ответы

Это пример, вам нужно будет указать ваше условное выражение, поскольку это не истинная переменная. Начиная с версии 2.9.0, анализатор условных выражений научился вести себя и разбирал условные выражения, как только они были готовы. Поскольку то, что у вас есть в первом примере, не похоже на допустимую переменную, оно не знает, чтобы дождаться значения, прежде чем оценивать его. Другими словами, поскольку ваша переменная на самом деле является строкой, которую вы объединяете с другими переменными, вам необходимо использовать:

{if '{page_header_{staticchannelslug}'}

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

{preload_replace:replaced_var="image"}

....

{exp:channel:entries channel="blog"}
    {if "{blog_{replaced_var}:image}"}
        There's an image!
    {if:else}
        No image!
    {/if}
{/exp:channel:entries}

Если вы по-прежнему получаете сообщение об ошибке после этого шаблона, уменьшите свой шаблон дальше, чтобы убедиться, что у вас нет аналогичного условия где-то еще, в встраивании и т. Д.

1
добавлено