В чем преимущества ОРИГИНАЛЬНОЙ структуры шаблона wordpress?


Предварительное условие: исходя из пользовательского мира PHP-приложений (с использованием symfony, zend и т. Д.), Для меня кажется неестественным разделять шаблоны так, как это делается в оригинальной теме wordpress. например, верхняя часть страницы находится в верхнем колонтитуле, в центре "индекс, страница..." и нижняя часть в нижнем колонтитуле.

Пример текущей структуры: index.php

[include header]
... main content...
[include footer]

И header.php

<html>
    <head>
      ....
    </head>
    <body>
      .....

И footer.php

       .....
   </body>
</html>

Я больше привык к структуре где у вас есть макет и внутри него есть другой (частичный) шаблон. пример: index.php шаблон

    <html>
      <head> [include header] </head> 
      <body> 
          [include body] [include    footer] 
      </body> 
    </html>

Поэтому я пытаюсь подумать о преимуществах оригинальной структуры шаблона wordpress.

Вопрос: Каковы ПРЕИМУЩЕСТВА ОРИГИНАЛЬНОЙ структуры шаблона wordpress в отличие от ВТОРОГО примера, который я описал выше?

Author: simple, 2012-04-06

2 answers

Во-первых, как подразумевает @Toscho, get_header() и get_footer() теги шаблонов просто включают файлы с именами header.php и footer.php соответственно. Оба тега шаблона вызываются из файлов шаблона , и вы можете разделить содержимое между файлом шаблона (index.php) и частью шаблона файла (header.php, footer.php) так, как ты захочешь. Таким образом, WordPress, безусловно, может приспособить ваш последний пример.

Тем не менее, реальная сила в стандарте, "WordPress" метод разделения контента происходит из иерархии шаблонов WordPress . В WordPress файл index.php на самом деле является последним используемым файлом шаблона . Это резервный файл шаблона по умолчанию, когда не найден другой, более специфичный файл шаблона:

WordPress Template Hierarchy

Так как любой из 7 (первичных) до 16 (вторичных) файлов шаблонов (и это только для общедоступной темы; специально разработанные темы могут содержать любое количество файлов шаблонов) будет использоваться, в зависимости от текущего контекста, метод разделения разметки "WordPress", минимизирующий количество дублированного кода.

Допустим, вы хотите изменить свой доктайп с переходного на строгий (или вы хотите перейти на HTML5), или вы хотите изменить заявление об авторских правах в нижнем колонтитуле вашего сайта. Используя метод разделения разметки "WordPress", вы вносите эти изменения в один файл . Используя последний метод разделения контента, вы вносите эти изменения от семи до шестнадцати (или более) раз.

Редактировать

Я подумал, что этот вопрос возникнет:

Я хочу услышать ваше мнение относительно следующей ситуации. Допустим, нам нужно включить "теги og (мета-теги Open Graph)", и у них другой формат для "индекса","single.php ""страница" "архив" шаблонов. Если у нас есть структура, подобная "оригинальной структуре темы wp", то мы должны использовать условные операторы (если...еще) в "header.php "файл, верно? И я думаю, все согласны с тем, что меньше "условных утверждений", лучшая производительность по запросу, верно?

У нас есть несколько вариантов:

  1. Используйте условные выражения запроса PHP непосредственно внутри header.php
  2. Используйте условные выражения запроса PHP в обратных вызовах, подключенные к wp_head (или wp_enqueue_scripts и т.д.)
  3. Используйте get_header( $context ), где $context основано на иерархии шаблонов и будет включать header-$context.php, если найдено, или header.php, если не найдено.

Но несколько вариантов на самом деле не решают ваш основной вопрос относительно снижения производительности. Лично я считаю, что снижение производительности незначительно, потому что все условные выражения запроса в любом случае кэшируются как часть кэша объектов запроса. Так что их вызов на самом деле не должен привести к значимому снижению производительности.

 7
Author: Chip Bennett, 2012-04-06 19:14:58

Здесь нет противоречия, вы можете использовать и то, и другое.

Пример

<!doctype html>
<html <?php language_attributes(); ?>>
  <head>
    <?php get_header(); ?>
  </head>
  <body>
    <?php get_template_part( 'content', get_post_format() ); ?>
    <?php get_footer(); ?>
  </body>
</html>

Преимущество системы WordPress заключается в том, что вы можете структурировать свои шаблоны по своему усмотрению.

 7
Author: fuxia, 2012-04-06 13:06:01