2016-09-13 4 views
1

Backstory: Я занимаюсь этим сайтом последние 5 месяцев. У меня не было предыдущего опыта работы с Wordpress, но у меня были некоторые с HTML, CSS и PHP.Различные содержания Single.php в зависимости от страницы

У меня есть два разных способа отображения сообщений в моем пользовательском шаблоне Wordpress.

На странице «Услуги» сообщение загружается в динамический контент div, нажимая на различные кнопки. Каждая кнопка загружает другую должность в том же DIV, вызвав определенные почтовые идентификаторы:

<a 
href="#contentBox1" 
class="dem_buttons" 
onclick="loadPage1('<?php the_permalink(361) ?>')" 
target="#contentBox1"> 
</a> 

<div class="text-center clearfix" id="contentBox1"></div> 

На странице «Поиска» нет динамического контента дел. Каждый результат поиска состоит из изображения, названия и выдержки из сообщения. Сообщения появляются, нажимая на соответствующие заголовки после появления результатов поиска.

Вот проблема: если я не включаю заголовок и нижний колонтитул на single.php, пост будет загружен без стилей, навигационной панели и нижнего колонтитула после нажатия заголовка результата поиска. Мне нужно загрузить заголовок и нижний колонтитул на single.php из-за этой страницы поиска, но это означает, что будет второй верхний и нижний колонтитулы на динамическом содержимом div страницы «Услуги».

Я пытался, начиная с single.php:

<?php 
if (is_page([page id])) { ?> 

[single.php's content] 

<?php 
} else { 

get_header(); ?> 
[single.php's content] 
<?php get_footer(); 

} ?> 

ни к какому успеху. Я тоже опробовал! Is_page, но и не повезло.

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

ответ

0

Окончательное решение заключалось в том, чтобы переупорядочить части single.php, чтобы он использовался (или требовал) для отображения содержимого данной записи (названного здесь: postcontent.php).

// Pseudo code 

get_header() 
// postcontent.php is the body of the post 
include_once(postcontent.php) 
get_footer() 

Таким образом single.php имеет свой верхний и нижний колонтитулы, но «Услуги» Шаблон может включать в себя содержимое Поста непосредственно:

// Pseudo code 

// Template: Services 
get_header() 
// the content of the "Services" template 
services_content() 
// postcontent.php is the body of the post referenced 
include_once(postcontent.php) 
get_footer() 

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

+0

Я пробовал if (is_single()) {[контент с верхним и нижним колонтитулом]} else {[контент без заголовка и нижнего колонтитула]} безрезультатно. И да, я знаю об иерархии. Определение идентификатора для is_single ничего не сделало бы, поскольку идентификатор сообщения не является тем, что определяет почтовый контент. –

+0

Другая идея: создать файл содержимого для содержимого сообщения (то есть копии single.php, без заголовка/нижнего колонтитула, назовем его postcontent.php). Включите это в single.php (между верхним/нижним колонтитулом) - поэтому, когда вы вызываете его из «Поиск», single.php будет иметь верхний/нижний колонтитул и содержимое. Из вызова служб postcontent.php напрямую - поэтому верхний и нижний колонтитулы не включены, а только часть содержимого. Тогда вам не обязательно иметь условное выражение, только включить другой файл. –

+0

Это замечательное боковое мышление, спасибо! Я попробую, когда вернусь к работе завтра, и сообщите, если это сработает. Поскольку это, скорее всего, будет, я отмечу это как ответ. Спасибо! –

0

Я не уверен на стороне Wordpress на 100%, но возможно ли вы, возможно, перенести второй/первый заголовок в div с определенным идентификатором, а затем дать этому идентификатору стиль отображения нет? Как показано ниже:

HTML 

<header class='header'> ..... </header> 
<div id='hidden-header'> 
    <header class='header'> ..... </header> 
</div> 


CSS 

#hidden-header { 
    display: none; 
} 

Сообщите мне, если это помогает или нет, и, возможно, я могу увидеть, могу ли я найти что-то еще.

+0

Мне все еще нужен какой-то условный код, чтобы определить страницу, где заголовок будет видимым или скрытым. Тем не менее, опрятная идея. –

+0

А я вижу - моя ошибка! Ну, я посмотрю и посмотрю, что я могу найти, никаких обещаний, хотя, к сожалению! –

+0

_conditional код для определения page_ Попробуйте следующее: ' ' Поместите код между двумя строками, он будет отображаться только на этой странице. Вы можете добавить несколько страниц в 'is_page' или вы можете сделать'! Is_page' для любой страницы, кроме этой страницы. Ознакомьтесь с https://developer.wordpress.org/reference/functions/is_page/ для получения дополнительной информации, особенно посмотрите примечания, внесенные пользователем. – Stef

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