Ієрархія шаблонів: плутати з index.php, front-page.php, home.php


36

Мені справді плутають 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. Будь ласка, не змішуйте моє запитання із шаблонами сторінок, я розумію їх, alHamduLILLAH.


Відповіді:


34

Логіка титульної сторінки є однією з найбільш заплутаних особливостей WordPress і її надзвичайно важко пояснити та узагальнити. Як згадувалося в коментарі, в той час я спалював нечесну кількість часу, щоб скласти свій логічний чіт-лист на першій сторінці .

Але оскільки це популярна тема, дозвольте мені спробувати відповісти на ці дуже конкретні питання, які у вас виникли.

Яка різниця між home.phpта index.php?

home.phpє шаблоном для індексу повідомлень (архів рідного типу "Post post", що є окремим випадком у WP). WP спробує знайти його за індексом публікацій, незалежно від того, відображаються вони в корені сайту або на спеціальній сторінці публікацій.

index.phpшаблон улов-all. Це остаточний вибір у всіх галузях ієрархії шаблонів і буде обраний, коли нічого іншого не підходить, як для архівів, так і для єдиних поглядів.

Лише індекс публікацій може використовувати 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.


28

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

Файл home.phpшаблону - це шаблон індексу публікацій блогу . Він завжди використовуватиметься для відображення індексу ваших записів у блозі, незалежно від того, відображається індекс повідомлень блогу на головній сторінці сайту чи на іншій сторінці.

У випадку, коли front-page.phpі home.hppіснують, і 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

Отже, якщо я маю на це право, не можна використовувати my-template-1шаблон, коли передня сторінка встановлена ​​на останні публікації, а використовувати, my-template-2коли фронт встановлений на статичну сторінку (без кодування)?
Джек Йоханссон

18

Все це виходить із ретельного читання Ієрархії шаблонів .

home.php використовується, якщо:

  • Титульна сторінка вашого сайту налаштована для відображення списку публікацій або
  • І тема має home.phpфайл

Якщо остання умова не виконана - тобто home.phpв темі немає файлу - тоді index.phpбуде завантажено.

front-page.php буде використовуватися, якщо:

Якщо остання умова не виконана - тобто front-page.phpв темі немає файлу - тоді index.phpбуде завантажено.

Підводячи підсумок

Якщо ви хочете налаштувати свій список публікацій, скористайтеся home.php.
Якщо ви хочете налаштувати статичну домашню сторінку, скористайтеся front-page.php.


2
home.phpбуде використовуватися для індексу публікацій блогу, незалежно від місця розташування. Якщо головна сторінка налаштована для відображення індексу публікацій блогу, вона home.phpбуде використана (якщо її front-page.phpнемає).
Чіп Беннетт

10

Коротко:

  • 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шаблон):

введіть тут опис зображення


3

взято з ієрархії шаблонів 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


2

Я вирішив перевірити, який шаблон використовується для кожної з наступних сторінок, коли встановлені різні параметри відображення передньої сторінки.

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

Результати досить довгі, але їх можна використовувати як довідник або шпаргалку.

Відображається передня сторінка

Джерело: Як шаблони Front-page.php та home.php відрізняються у WordPress?

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.