Layout's для front-end тем Есть решение

Добрый день. В документации есть такая тема Композитные макеты.

Но не совсем понятно о каких макетах идет речь?

О макетах приложения в backend?

Или всё таки можно использовать данную методологию к front-end?

Стоит задача использовать разные layout's для разных страниц/приложений. Можно ли решить данную задачу?

6 ответов

  • 2
    Михаил Ушенин Webasyst 24 февраля 2015 05:56 #

    Для фронтенда используйте механизм родительских тем дизайна.

    • +1
      Михаил Ушенин Михаил Ушенин Webasyst 24 февраля 2015 05:56 #

      В качестве примера посмотрите любую стандартную тему дизайна: Default, Custom, Clear и т. д.

    • +2
      fahrenheitindi@gmail.com fahrenheitindi@gmail.com 24 февраля 2015 06:05 #

      Так. Рано отметил как решение. Смотрите, есть родительский шаблон для приложения сайт. Для главной страницы "/" один дизайн, а вот для страницы "/contacts" совсем другой. Как в этом случае быть, когда в одном приложении требуется использовать разный дизайн СТРАНИЦ

  • 2
    Леонид Вакуленко Webasyst 24 февраля 2015 08:51 # Решение

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

    // Пример из shopFrontendAction
    $this->setLayout(new shopFrontendLayout());
    ...
    $this->setThemeTemplate('home.html');

    Лэйаут устанавливает внешний шаблон:

    // Пример из shopFrontendLayout
    $this->setThemeTemplate('index.html');

    Разработчик приложения может завести несколько разных классов-лэйаутов и использовать в них разные шаблоны из темы: index1.html, index2.html, index10.html. Или можно иметь один класс-лэйаут и разные шаблоны, используя ветвление if'ами.

    * * *

    Если речь не о собственном приложении, а об имеющихся site и shop, то логика там такая. Есть один шаблон-обвязка index.html. Внутрь него через переменную $content подключается то, что возвращают разные экшны приложения. ($content может быть как непосредственно в index.html, так и внутри под-шаблона, подключаемого через {include} - например, main.html)

    Такая схема - один файл обвязка, много всего разного внутри $content - задана жёстко, и обойти её без модификации PHP-исходников Сайта и Магазина нельзя. Но это обычно и не нужно. Всё решается CSS стилями и парой {if}'ов в index.html.

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите