2014-09-10 2 views
0

Я пытаюсь использовать следующий условный оператор в моем шаблоне:Условного использование site_url всегда ложно

{if "{site_url}" == "http://dev.site.com" } 
    true 
{if:else} 
    false 
{/if} 

Когда я проверяю вывод site_url в шаблоне я получаю http://dev.site.com, но это выражение всегда вычисляется неверно.

Я пробовал варианты без скобок и цитат без везения.

+0

Какую версию EE вы используете? Это похоже на проблему с порядком разбора. Порядок Parse был существенно обновлен в EE 2.9. Текущие документы: https://ellislab.com/expressionengine/user-guide/templates/template_engine.html условные выражения анализируются * перед * стандартными глобальными переменными, НО «По состоянию на 2.9.0 условные теги оцениваются при готовности». – AllInOne

+0

Это имеет большой смысл. Похоже, мы довольно устарели - 2.4. Любые советы по обходному пути для этой версии? В настоящее время мы не можем обновить. – Jon

ответ

2

Попробуйте добавить пользовательскую переменную в файл config.php (/ система/ExpressionEngine/конфигурации/папки):

//### Custom Variables ### 
global $assign_to_config; 
$protocol = (isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == "on") ? "https://" : "http://"; 
$assign_to_config['global_vars'] = array(
    "root_url"  => $protocol.$_SERVER['HTTP_HOST'], 
    "domain"  => $_SERVER['HTTP_HOST'] 
); 

Затем измените шаблон быть:

{if "{root_url}" == "http://dev.site.com" } 
    true 
{if:else} 
    false 
{/if} 

или

{if "{domain}" == "dev.site.com" } 
1

Вы можете получить лучший ответ в https://expressionengine.stackexchange.com/, но некоторые способы обойти проблемы порядка синтаксического анализа включают в себя:

  • PHP на входе
  • Передача переменных через встроенные шаблоны
  • low variables
  • писать свой собственный плагин
  • exp: запросы на звонки
Смежные вопросы