2013-11-15 2 views
1

Так у меня есть сайт, его структура состоит из различных шаблонов:наследование шаблонов из нескольких вложенных шаблонов

- index //the html skeleton, with script tags and css links 
- header //the header of the page 
- topnavigation //contains the main nav with the menu 
- content //this is where the dynamic content will be changed for different pages 
- footer //the footer 

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

res.render(content);  
content -> inherits footer 
footer -> inherits topnavigation 
topnavigation-> inherits header 
header -> inherits index 

Я думаю, что было бы гораздо более практичным и прост в обслуживании, если я мог бы что-то вроде:

res.render(content); 
content -> inherits dochead 
index -> includes header + topnnavigation + footer 
  • Я не прав?
  • Если я прав, как я могу это сделать?

Благодаря

ответ

3

Типичная extends установка нечто большее, как это: (для рабочего примера, вы можете увидеть, как документация Swig устанавливает свои макеты здесь: https://github.com/paularmstrong/swig/tree/master/docs/layouts)

  • skeleton.html HTML скелет с блоками:
    • {% block html %}
    • {% block css %}
    • {% block js %}
    • {% block body %}
  • base.html расширяет skeleton.html, базовый макет с блоками/субблоков:
    • {% block body %}
      • {% block header %} Включает некоторое содержимое заголовка по умолчанию.
        • {% block nav %} Включает основное навигационное содержимое.
      • {% block content %} Пустой
      • {% block footer %} Включает авторские права и т.д.
  • index.html расширяет base.html
    • {% block nav %} (контент для навигации, потенциально, в противном случае просто дайте base.html вынести свое содержание нав
    • Здесь вы также можете переопределить любые другие блоки, установленные в base.html. Если вам требуется больше контроля над шаблоном, подумайте о создании другого подмакета, который расширяет base.html, а затем, используя вместо этого index.html.
+0

спасибо, отличный ответ –

+0

, как вы справляетесь с подкаталогами? –

+0

Как бы вы это сделали, но поместили все шаблоны контента в свой собственный файл?Обычно я бы использовал include, но это нарушает наследование extends/block. Я бы предпочел сохранить отдельные компоненты моей страницы в своих собственных файлах, потому что в противном случае она становится неудобной. У меня есть что-то вроде 3 или 4 различных основных блоков контента (и в будущем он может расти и дальше). – MrHen

 Смежные вопросы

  • Нет связанных вопросов^_^