Иерархия шаблонов: путаница между index.php, front-page.php, home.php

16 авг. 2013 г., 23:07:05
Просмотры: 90.4K
Голосов: 47

Я действительно запутался с index.php, home.php и front-page.php. Во многих случаях, даже когда у меня был index.php, я перезаписывал его с помощью front-page.php. Но недавно я узнал о home.php.

  • В чем разница между home.php и index.php?
  • В каких случаях лучше использовать home.php вместо index.php?
  • В каких случаях идеально использовать front-page.php?
  • Когда я использую front-page.php, какую конкретную задачу тогда выполняет для меня index.php?

Я прочитал Иерархию шаблонов в Codex. Пожалуйста, не путайте мой вопрос с шаблонами страниц, я их понимаю, альхамдулиЛЛАХ.

1
Комментарии

Получил от @rarst это: https://www.rarst.net/wordpress/front-page-logic/. Может быть вам полезно.

Mayeenul Islam Mayeenul Islam
17 мая 2016 г. 11:19:16
Все ответы на вопрос 6
0
45

Логика главной страницы — одна из самых запутанных особенностей WordPress, и её крайне сложно объяснить и обобщить. Как я уже упоминал в комментарии ранее, я потратил огромное количество времени, чтобы собрать свою шпаргалку по логике главной страницы.

Но поскольку это популярная тема, позвольте мне попытаться ответить на ваши конкретные вопросы.

В чём разница между home.php и index.php?

home.php — это шаблон для архива записей (архива стандартного типа записи Post, который является особым случаем в WP). WordPress будет пытаться использовать его для отображения списка записей, независимо от того, отображаются ли они в корне сайта или на специальной странице записей.

index.php — это универсальный шаблон. Он является последним выбором во всех ветвях иерархии шаблонов и будет использоваться, когда ничего больше не подходит, как для архивов, так и для одиночных записей.

Только архив записей может использовать home.php, но все остальные контексты могут и будут использовать index.php.

В каких идеальных условиях следует использовать home.php вместо index.php?

Вы используете home.php для настройки архива записей.

Вы используете index.php, чтобы предоставить самый универсальный шаблон в вашей теме, подходящий для отображения чего угодно.

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

В каких идеальных условиях следует использовать front-page.php?

front-page.php используется для архива записей в корне или статической главной страницы, если она включена.

Это шаблон с высоким приоритетом, поэтому если тема включает его, вы не можете выбрать произвольный шаблон для статической главной страницы. По этой причине он почти никогда не включается в публично распространяемые темы (что правильно).

Лучшее применение для него — в частных проектах, поскольку его проще настроить, чем шаблон страницы.

Когда я использую front-page.php, какую конкретную задачу тогда выполняет для меня index.php?

index.php по-прежнему остаётся универсальным шаблоном для всех остальных случаев.

Если вы используете статическую главную страницу (к которой будет применяться front-page.php), то ваша страница записей будет пытаться использовать сначала home.php, а затем index.php.

26 авг. 2016 г. 19:31:21
1
31

Файл front-page.php является шаблоном главной страницы сайта. Он всегда будет использоваться для главной страницы вашего сайта, независимо от того, установлено ли значение get_option( 'show_on_front' ) в page или posts.

Файл шаблона home.php — это шаблон индекса записей блога. Он всегда будет использоваться для отображения индекса записей блога, независимо от того, отображается ли индекс записей на главной странице сайта или на другой странице.

В случае, если существуют оба файла — front-page.php и home.php, и параметр get_option( 'show_on_front' ) установлен в posts (т.е. главная страница сайта отображает индекс записей блога), файл front-page.php будет иметь приоритет над файлом home.php.

Файл index.php является шаблоном-заглушкой по умолчанию для всех контекстов в Иерархии шаблонов. Он используется только в том случае, если для текущего контекста не существует более специфичного шаблона.

Иерархия шаблонов для главной страницы сайта:

  • front-page.php
  • Если 'page' == get_option( 'show_on_front' ): иерархия страниц
  • Если 'posts' == get_option( 'show_on_front' ): иерархия индекса записей блога

Иерархия шаблонов для индекса записей блога:

  • home.php
  • index.php

Иерархия шаблонов для страниц:

  • Пользовательский шаблон страницы
  • page-{slug}.php
  • page-{id}.php
  • page.php
  • index.php
16 авг. 2013 г. 23:22:34
Комментарии

Итак, если я правильно понимаю, невозможно использовать шаблон my-template-1, когда главная страница настроена на отображение последних записей, и шаблон my-template-2, когда главная страница является статической (без написания кода)?

Johansson Johansson
30 мая 2017 г. 21:06:18
1
19

Всё это следует из тщательного изучения Иерархии шаблонов.

home.php используется, если:

  • Главная страница вашего сайта настроена на отображение списка записей, или
  • И в теме присутствует файл home.php

Если последнее условие не выполняется — то есть в теме нет файла home.php — тогда будет загружен index.php.

front-page.php будет использоваться, если:

Если последнее условие не выполняется — то есть в теме нет файла front-page.php — тогда будет загружен index.php.

Вкратце

Если вы хотите настроить отображение списка записей, используйте home.php.
Если вы хотите настроить отображение статической главной страницы, используйте front-page.php.

16 авг. 2013 г. 23:14:23
Комментарии

home.php будет использоваться для индекса постов блога, независимо от расположения. Если главная страница настроена на отображение индекса постов блога, то будет использоваться home.php (при условии, что front-page.php не существует).

Chip Bennett Chip Bennett
16 авг. 2013 г. 23:25:24
0
12

Коротко:

  • index.php — это шаблон-запасной вариант, который используется, если не найден подходящий шаблон
  • home.php — используется для блога (список последних записей)
  • front-page.php — используется для главной (лендинг-страницы)

Универсальный шаблон index.php

Файл шаблона index.php является запасным вариантом. Он используется в крайнем случае, когда нет других более подходящих шаблонов. Например, если у вас нет front-page.php или home.php, то будет использоваться index.php. Это также верно для отсутствующих archive.php, single.php и так далее.

Разница между front-page.php и home.php

Разница между шаблонами front-page.php и home.php заключается в том, что front-page.php, как следует из названия, используется в качестве главной страницы сайта, в то время как home.php предназначен для домашней страницы раздела Блог.

Какой шаблон будет использоваться для лендинг-страницы моего сайта?

Шаблон front-page.php, если он есть, будет использоваться для главной страницы сайта (например, http://www.example.com/). Если его нет, то вместо него будет использоваться home.php. Если отсутствуют оба шаблона — front-page.php и home.php — то будет использован запасной шаблон index.php.

Какой шаблон будет использоваться для страницы блога?

WordPress позволяет иметь страницу "Блог" (которая будет отображать последние записи) на отдельной странице, отличной от главной (например, http://www.example.com/blog/). Если у вас именно такой случай, то страница блога всегда будет использовать шаблон home.php. Если home.php не существует, то будет использован запасной шаблон index.php.

Как настроить главную страницу и страницу блога?

Чтобы настроить, какой контент отображать на главной странице, перейдите в Админку WordPress, раздел Настройки > Чтение. Там вы можете выбрать "На главной странице отображать" статическую страницу или последние записи.

Если вы выбрали отображение статической страницы на главной, то у вас также есть возможность указать, какая страница будет использоваться для блога (и для неё будет применён шаблон home.php):

Настройка главной страницы и страницы блога в WordPress

21 авг. 2013 г. 10:18:41
0

взято из Иерархии шаблонов WordPress

Отображение главной страницы

По умолчанию WordPress устанавливает главную страницу вашего сайта для отображения последних записей блога. Эта страница называется индексом записей блога. Вы также можете настроить отображение записей блога на отдельной статической странице. Файл шаблона home.php используется для вывода индекса записей блога, независимо от того, используется ли он в качестве главной страницы или на отдельной статической странице. Если home.php не существует, WordPress будет использовать index.php.

  1. home.php
  2. index.php

Примечание: Если существует front-page.php, он переопределит шаблон home.php.

Отображение фронт-страницы

Файл шаблона front-page.php используется для отображения фронт-страницы вашего сайта, независимо от того, отображает ли фронт-страница индекс записей блога (упомянутый выше) или статическую страницу. Шаблон фронт-страницы имеет приоритет над шаблоном индекса записей блога (home.php). Если файл front-page.php не существует, WordPress будет использовать либо home.php, либо page.php в зависимости от настроек в разделе Настройки → Чтение. Если ни один из этих файлов не существует, будет использоваться файл index.php.

1. front-page.php – Используется как для «ваших последних записей», так и для «статической страницы», установленных в разделе отображения фронт-страницы Настройки → Чтение.

2. home.php – Если WordPress не может найти front-page.php и в разделе отображения фронт-страницы установлено «ваши последние записи», он будет искать home.php. Кроме того, WordPress будет искать этот файл, когда страница записей установлена в разделе отображения фронт-страницы.

3. page.php – Когда в разделе отображения фронт-страницы установлена «главная страница».

4. index.php – Когда в разделе отображения фронт-страницы установлены «ваши последние записи», но home.php не существует, или когда установлена главная страница, но page.php не существует.

Как видите, существует множество правил, по которым WordPress выбирает путь. Использование приведенной выше схемы — лучший способ определить, что именно будет отображать WordPress.

Схема иерархии шаблонов: Иерархия шаблонов WordPress

7 нояб. 2015 г. 22:39:48
0

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

  • example.net
  • example.net/home/
  • example.net/blog/

Результаты довольно объемные, но могут использоваться в качестве справочника или шпаргалки.

Настройки отображения главной страницы

Источник: Чем отличаются шаблоны front-page.php и home.php в WordPress?

Примечание редактору: Я попытался скопировать и вставить таблицы здесь, но требуется формат markdown вместо HTML. Пожалуйста, преобразуйте в markdown, если это возможно.

25 апр. 2017 г. 04:26:27