2010-11-11 5 views
1

У меня есть блог, http://sweatingthebigstuff.com, и я хотел бы добавить дополнительную строку в нижнем колонтитуле, которая будет отображаться только на главной странице. Я нашел этот код, но он не работает для меня. У меня неправильный синтаксис или есть что-то еще, что я могу попытаться заставить это работать?Главная страница Только Footer

<?php if (is_home()) { ?> 
text 
<?php } ?> 

Вот где footer.php называется

<?php include (TEMPLATEPATH . '/sidebar1.php'); ?> 

<div class="cleared"></div> 

<?php get_footer(); ?> 

А вот код сноска:

текст 2


Контакт | Отказ от ответственности | Заявление о конфиденциальности
Copyright © 2009-2010 Потоотделение. Все права защищены.

, а затем некоторое количество дерьма.

ответ

1

is_home() - метод, который должен возвращать true или false. Вам нужно каким-то образом реализовать этот метод. Если blogspot не реализует этот метод для вас, вам нужно сделать это самостоятельно. Для вашего сайта я думаю, что эта функция будет делать то, что вы хотите:

<?php 
function is_home(){ 
    $r = $_SERVER['REQUEST_URI']; 
    return $r == '/' || $r == '' || $r == '/index.php'; 
} 

if(is_home()) { 
?> 
text 
<?php } ?> 

И где вы хотите колонтитула, говоря:

<?php include 'footer.php'; ?> 

вместо строки:

<?php get_footer(); ?> 

Я считаю, ваша проблема в том, что get_footer() читает нижний колонтитул как текст, поэтому он не выполняет PHP заранее. Если вы сделаете это так, вы можете добавить столько же PHP в заголовок, сколько хотите.

+0

В вашей системе есть недостаток, потому что я вижу ваш php-код, когда смотрю на ваш источник документа. Либо у вас нет правильного расширения в вашем файле, либо вы не делаете что-то правильно, потому что php-код не выполняется. – Samuel

+0

Файл должен быть прав, потому что текст отображается, но отображается везде. – Daniel

+0

Нет, это ложь. Текст отображается, поскольку браузер просто игнорирует недопустимые теги. В качестве теста попробуйте положить « привет, мир». «hello, world» все равно будет отображаться, даже если он недействителен. Если вы перейдете на страницу и просмотрите источник, вы увидите, что ваш PHP не выполняется, он просто выводится как HTML. И я просто протестировал вашу страницу, скопировав все, и, увы, она отображает только «текст», когда на главной странице. – Samuel

2

is_home() устанавливает глобальный var, который, похоже, не перезагружает себя или не переоценивает, wp выглядит странно.

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

<?php wp_reset_query(); 
if (is_home()) { ?> 
text 
<?php } ?> 

Теперь РНР работает, в идеале, вам нужен код выше.
текст

Я просто сделал просмотреть исходный код, и я могу ясно видеть код PHP, который не должен быть виден, так как она предназначена для разбора на стороне сервера. В источнике просмотра не должно присутствовать следующее: неправильный файл редактируется?

<p> 
<?php if (is_home()) { ?> 
text 
<?php } ?> 
<wp_reset_query()> 
<br /> 
<br /> 

Нижний колонтитул.Файл PHP должен находиться в папке сор-содержание/темы/nameofyourtheme

+0

конец моего кода footer.php? – Daniel

+0

после того, как вы вызвали is_home(), чтобы обеспечить следующий вызов, запрос сбрасывается. Или вы могли бы поставить его перед этим.Посмотрите, работает ли это. – Aesphere

+0

это ничего не делал. – Daniel

0

Там нет ничего плохого с синтаксисом, и когда я просматривать исходный код страницы, я вижу «текст»

Что такое расширение файла страницы нижнего колонтитула? если это «footer.php», тогда я не должен видеть условия открытия и закрытия для php(). PHP не будет работать, если расширение файла не является «.php»

как к предыдущему ответу:

<?php wp_reset_query();?> должны идти ДО <?php if(is_home()){?>text<?php } ?> в этом сценарии. is_home() зависит от того, что петля присутствует на странице. Возможно, где-то вы использовали пользовательский запрос, или один из ваших плагинов использовал пользовательский запрос, который нарушил выборки запросов по умолчанию. Как я уже сказал, используйте оператор сброса перед оператором if.

+0

Спасибо, но это все еще не устраняет проблему. Он все еще отображается на каждой странице. – Daniel

0

Вам нужно изменить код, чтобы включить проверку на is_front_page() так:

<?php 
    $ishomepage = (is_home() || is_front_page()); 
    switch($ishomepage) 
    { 
     case true : 
      echo 'Your homepage-only snippet of text goes here'; 
      break; 

     case false : 
     default : 
      // Do nothing... or do something else... 
      break; 
    } 

?> 

Ссылка: WordPress Codex: is_front_page()

По умолчанию WP установки не имеют домашнюю страницу определен, он использует свой index.php и проверяет наличие других шаблонов, таких как шаблон home.php, в качестве отправной точки (home.php, только если ваша тема имеет его.) Ниже приведена диаграмма из их онлайн-документов, показывающая, как работает их иерархия: WordPress Template Hierarchy.

По умолчанию WordPress показывает ваши последние сообщения на главной странице вашего сайта. Но многие пользователи WordPress хотят иметь статическую фронтную страницу или страницу всплеска как переднюю страницу. Этот «статический фронт » выглядит обычным для тех, кто хочет не иметь «блога», посмотреть на свой сайт, давая ему более CMS (систему управления контентом).

Если вы хотите узнать, как установить статическую домашнюю страницу, прочитайте эту статью и следуйте инструкциям: Creating a Static Frontpage. Когда вы устанавливаете статическую главную страницу, is_home() будет работать так, как ожидалось.

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