Включите страницу в шаблон скрипта в cms магнолии - PullRequest
1 голос
/ 05 декабря 2011

Как включить страницу из магнолии в скрипт шаблона магнолии?

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

Допустим, у меня есть 2 страницы с собственным шаблоном. Страница 1 содержит в своем дереве страницу 2. Я хочу включить в шаблонный скрипт страницы 1, страницу 2, но не работает.

Большое спасибо:)

ОБНОВЛЕНО

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

Итак, что я пытаюсь сделать, и я не знаю, правильный ли это подход, это создать шаблон страницы для заголовка. Этот шаблон не будет содержать ничего, или CSS, это просто код для заголовка. Следующее, что я хочу сделать, это создать страницу в магнолии с этой моделью в качестве заголовка. Затем я хотел бы включить страницу, которую я только что создал, в свою основную модель шаблона для проекта, но я не могу понять, как это сделать.

Я новичок в Magnolia cms, и сначала я попытался создать демонстрационный сайт, используя stk. Единственная проблема заключалась в том, что я не мог использовать jsp в качестве языка сценариев, или, по крайней мере, я не мог найти никакого решения в Интернете. Я действительно не знаю freemarker, но это не очень большая проблема. Я очень неохотно использую freemarker, потому что, возможно, в будущем в более сложном проекте мне могут понадобиться некоторые функции, которые freemarker не поддерживает, но jsp делает. Я хотел бы создать свой сайт, используя jsp, если это возможно с помощью магнолии.

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

Еще раз спасибо за ваше время:)

Ответы [ 2 ]

3 голосов
/ 06 декабря 2011

Если вы используете STK, см. Это руководство на повторное использование контента .

Если нет, взгляните на cms tag-lib , особенно на теги cms: loadPage и cms: setNode, с помощью которых вы можете получить фрагмент содержимого и установить его как переменную JSP / JSTL и затем отобразите его с помощью cms: includeTemplate.

Распространенным сценарием является «наследование» контента от родительской страницы, отличный пример тому - заголовок. То, что вы делаете, это для области, вы поднимаетесь по иерархии содержимого и визуализируете все с родительских страниц в их области с тем же именем. Таким образом, заголовок, который вы только добавили на верхнюю страницу, включается во все его дочерние элементы.

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

1 голос
/ 05 декабря 2011

Включение страницы в другую страницу на самом деле не работает.Страница 2 уже имеет свои собственные теги , свои собственные теги и свой собственный CSS, поэтому включать ее в оптовую продажу на другую страницу просто не имеет смысла.

Вы, однако, имеетепара вариантов:

  1. Использовать iframe.Это позволит вам включить всю страницу 2 в область страницы 1.
  2. Более поздние версии Magnolia позволят вам создать отдельный абзац, который вы затем сможете включить на другую страницу.(Например, вы можете увидеть один абзац из http://demopublic.magnolia -cms.com / demo-project / about / subsection-article.html в http://demopublic.magnolia -cms.com / demo-project / about / subsection-article / article / main / 0.html .) Для этого требуется знать немного о том, как структурированы данные, но это довольно полезный способ, позволяющий выборочно извлекать фрагменты страницы.
  3. Вы можете использовать API-интерфейс Magnolia в своем классе модели для извлечения данных с подстраниц, а затем сделать их доступными для шаблона представления.Это подход, который STK использует для создания тизеров, включающих контент со страниц, на которые они ссылаются, и, вероятно, это самый мощный и гибкий подход, но он действительно требует написания некоторого кода Java.(См. http://documentation.magnolia -cms.com / templating / stk / templating.html и http://documentation.magnolia -cms.com / reference / templating.html , чтобы узнать, как использовать этоподход.)
  4. (добавлено после того, как вопрос был отредактирован) Функциональность нижнего колонтитула, включенная в STK, делает это почти точно.Возможно, вам будет интересно взглянуть на это и посмотреть, как это реализовано там.

Надеюсь, это немного поможет!

...