Пользовательские теги CMSMS ("CMS Made Simple") работают только в разделе <head>? - PullRequest
0 голосов
/ 06 февраля 2011

У меня действительно странная проблема с CMSMS - какого черта это ПОЛОВИНКА:

<head>
{if $current_step=='2' or $current_step=='4'}
HEAD_ON
{else}
HEAD_FAIL
{/if}
</head>
{if $current_step=='2' or $current_step=='4'}
NEITHER_ONE_OK
{else}
NEITHER_ONE_FAIL
{/if}
<body>
{if $current_step=='2' or $current_step=='4'}
BODY_OK
{else}
BODY_FAIL
{/if}
</body>

Возвращает:

HEAD_OK
NEITHER_ONE_FAIL
BODY_FAIL

Я использую последнюю версию CMSMS - 1.9.3. А CMSMS основан на smarty, что позволяет делать это в разделе CMSMS UDT:

$gCms->smarty->assign('current_step',"".htmlspecialchars($_GET['step_id'])."");

Полагаю, эта проблема была бы возможна, если бы CMSMS использовала некоторую методологию, которая сначала интерпретирует раздел body, затем компилирует UDT, а затем компилирует весь сайт.

Какие-нибудь решения? Спасибо.

Ответы [ 3 ]

1 голос
/ 25 января 2012

Да, есть решение.

Вам нужно захватить часть содержимого и другие вызовы с помощью smarty, чтобы переменные были доступны везде.

В верхней части шаблона используйте:

{capture assign='cc'}{content}{/capture}

И замените тег {content} для {$ cc}

Таким образом, любая переменная, определяющая вызов UDT для содержимого страницы, после обработки заголовка будет доступна для остальной части шаблона..

Проверьте это старое руководство, чтобы получить некоторую переменную от тела к голове, вы поймете, как она работает:

http://forum.cmsmadesimple.org/viewtopic.php?f=4&t=30475&sid=ed7e25c50612eb9f052ec4bee16d782c

1 голос
/ 25 февраля 2011

CMSMS обрабатывает шаблоны в почти обратном порядке.

Из заметок о выпуске для 1.4: http://www.cmsmadesimple.org/cgblog/818/Announcing-CMS-Made-Simple-1-4-Jamaica/

* We split the template into three pieces
a) Any text ontop of 
b) The section
c) the rest of the template (the body)
0 голосов
/ 06 апреля 2011

Ответ от команды разработчиков CMSMS: «CMSMS (по умолчанию) сначала обрабатывает материал выше, затем раздел, затем заголовок и склеивает результаты вместе перед выводом».

...