Вывод на главной статичной страницы

Задача:
Сделать так, чтобы на главной странице выводилась статичная страница (Page)
Решение:
Для того, чтобы вывести на главной вместо постов статичную страницу, находим начало цикла (loop) в файле index.php (или home.php — если такой файл есть в теме) темы:

<?php while (have_posts()) : the_post(); ?>

И перед этой строчкой вставляем код:

<?php query_posts('page_id=7'); ?>

Где 7 — это id страницы (Page). Id страницы можно узнать в админке «Управление» — «Страницы»

или

<?php query_posts('pagename=about'); ?>

Где about — это slug (короткая ссылка) этой страницы.

Про query_posts: http://codex.wordpress.org/Template_Tags/query_posts

UPD
Если у Вас версия wordpress 2.1.x, то все намного проще — статичную страницу в качестве главной можно выбрать в админке.

После этого все мои динамические страниц стали ссылаться на эту страницу, а также получается что две статичные страницы с одинаковым содержанием 🙁

1. Эта статическая Страница стала главной страницей, почему бы всем другим страничкамна нее не сослаться? 🙂
2. Непонятно, подробнее напишите. Или покажите лучше.

Лучше подробнее напишу: динамические страницы – это категории, и теперь когда я нажимаю на категорию "новости" у меня вместо новостей выходит та самая страница.

возможно, у Вас в теме нет шаблона category.php или archive.php
Подробнее здесь: http://codex.wordpress.org/Template_Hierarchy

спасибо sonika, я понимаю только Великий и могучий Русский язык, потребность в установке страницы пока отпала, но в будущем появится… а у Вас на сайте нет описанной статьи на русском? может появится?

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

Спасибо, wordpress мне начинает нравится все больше.

Если у Вас версия wordpress 2.1.x, то все намного проще — статичную страницу в качестве главной можно выбрать в админке.

а где в админке это можно сделать?

Настройки — Чтение

спасибо!

Подскажите как в 2.3 сделать исключение рубрик на главной? Описанные выше методы-неработают.
А вывод какой-нибудь страницы на главной, работает, но не выводится панель с меню.

<?php query_posts(‘cat=-3’); ?>
это и кодекса по ссылке в первом сообщении этого топика.
Возможно и так будет работать (не пробовала):
<?php query_posts(‘cat=-3,-4’); ?>

В версии 2.3 надо указывать:
<?php query_posts(‘p=4’); ?>
4 – порядковый номер поста

Для рубрик код должен быть такой:

if ( is_home() ) {
    if ( $paged ) query_posts("cat=-7&paged={$paged}");
        else query_posts("cat=-7");
}

Это чтобы пагинация нормально работала.

Народ,
а как сделать, чтобы не выводилось:

Нет комментариев 
No comments yet.

RSS feed for comments on this post. 

Sorry, the comment form is closed at this time.
Народ, 
а как сделать, чтобы не выводилось:
Нет комментариев 
No comments yet.

RSS feed for comments on this post. 

Sorry, the comment form is closed at this time.

В шаблоне удалить записи, отвечающие за вывод этих фраз и все дела!

Вопрос к экспертам, а конкретно к sonika: а что делать если:
1. проблема как у Deeves (когда я нажимаю на категорию "новости" у меня вместо новостей выходит та самая страница)
2. в теме нет шаблона category.php или archive.php

Про иерархию понятно, но как быть если в теме изначально нет шаблонов? Неужели никак не повесить статическую страницу на главную? Не верю! Решение должно быть, но я его не знаю…. Подскажите кто может…

1. Видимо, в index.php отсутствует проверка, когда брать стат. страницу, а когда показывать "по умолчанию".
2. Создать путем копирования содержимого index.php.

Версия WP какая?

wordpress-2.2.3

как прописать то самое правило, не подскажете?
создать category.php или archive.php – это можно, но достаточно ли будет просто положить в папку темы? Или где-то нужно будет еще что-то менять?

Прошу прощения, разобрался… 😉

В 2.2 через админку можно назначить стат. страницу мордой, причем без всяких ухищрений и копаний в кодах. А заодно можно назначить страницу, которая будет показывать все новые записи так, как это делала морда, пока ее не переназначили.

То самое правило – if ( is_home() )

Достаточно просто создать файлы и положить в папку Темы, движок сам увидит и использует по назначению.

В 2.2 через админку можно назначить стат. страницу мордой, причем без всяких ухищрений и копаний в кодах. А заодно можно назначить страницу, которая будет показывать все новые записи так, как это делала морда, пока ее не переназначили.

То самое правило - if ( is_home() )

Спасибо за правило… 🙂

В том-то и была проблема, что через админку стат. страница и вывод записей в этой теме не работали! Видимо, просто кривая тема…

Для рубрик код должен быть такой:

if ( is_home() ) {
    if ( $paged ) query_posts("cat=-7&paged={$paged}");
        else query_posts("cat=-7");
}

Это чтобы пагинация нормально работала.

Максим!! Очень долго искал решение и вот – вроде нашел. НО заменил

<?php if (have_posts()) :  while (have_posts()) : the_post(); ?>

на

<?php if ( is_home() ) {
    if ( $paged ) query_posts("cat=-7&paged={$paged}");
        else query_posts("cat=-7");
} ?>

И не работает, загружается белый лист. Для какого WP это решение? У меня 2.2.2! Очень нужно решение этой проблемы давно.
Спасибо

Поставил так, и все заработало но чувствую что тут что то не правильно )))

<?php if ( is_home() ) { if ( $paged ) query_posts("cat=-7&paged={$paged}"); else query_posts("cat=-7"); } ?>

<?php if (have_posts()) :  while (have_posts()) : the_post(); ?>

Несказанно рад )) Даже навигация работает )) Ура – Спасибо 🙂

artem_dc, возьмите код отсюда, для посл. версий ВП работает:
Навигация при query_posts

artem_dc, возьмите код отсюда, для посл. версий ВП работает:
Навигация при query_posts

Спасибо большое, наконец та всё решилось!

Хотелось бы добавить: для исключения нескольких рубрик нужно использовать такой код

<?php query_posts($query_string.'&cat=-7,-8'); ?>

<?php if (have_posts()) :  while (have_posts()) : the_post(); ?>

sonika
И такой вопрос:
Навигация работает хорошо но при этом у ней появились пустые страницы! Так и у Вас дела обстоят?
Например в общем количестве в блоге контента на 4 стр, а в выводимых на главной рубриках контента на 2 стр. — но пейджнави показывает 4 страницы на 2 из которых есть контент а на 2 написано что, не чего не найдено.

у меня так с query_posts: http://www.sonika.ru/blog/wordpress/query-posts-navigation.htm

у меня так с query_posts: http://www.sonika.ru/blog/wordpress/query-posts-navigation.htm

Ответ получил от Вас неоднозначный!
Толи у вас всё хорошо работает с тем кодом что приведён у вас на сайте толи у вас работает так как я привёл пример выше.
Тогда задам вопрос ещё раз, с надеждой на ответ.
sonika у Вас при использование кода

<?php query_posts($query_string.'&cat=1'); ?>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>

Навигация и плагин wp-pagenavi работают должным образом и проблема описанная мной выше вам не известна?
П.С. При использовании кода с сайта "трампампам" навигация всегда показывала одни и теже стр. А тут проблема носит уже др характер.

У меня и wp-pagenavi и навигация «позже» «раньше» работает отлично при использовании <?php query_posts($query_string.’&cat=1′); ?> вместо <?php query_posts(‘cat=1’); ?> об этом так и написано: «нашла отличное решение проблем с навигацией при использовании query_posts»

Способ http://blog.trampampam.ru/wordpress/query_posts/ также решает проблему навигации.

Непонятно, что тут неоднозначного.

У меня и wp-pagenavi и навигация «позже» «раньше» работает отлично при использовании <?php query_posts($query_string.'&cat=1'); ?> вместо  <?php query_posts('cat=1'); ?>  об этом так и написано: «нашла отличное решение проблем с навигацией при использовании query_posts»

Способ http://blog.trampampam.ru/wordpress/query_posts/ также решает проблему навигации.

Непонятно, что тут неоднозначного.

Спасибо большое 😉 разобрался что да как, пришлось просто обновить WP до (2.3.1). Видимо это правильно не работает с версиями до 2.2.3

Но тут следующий возник нюанс: Если перечислять рубрики которые надо исключить то — посты выводятся в обратном порядке по дате (тоесть с начала выводятся самые старые) А ЕСЛИ перечислить только те которые надо выводить то — всё работает должным образом.

Для того, чтобы вывести на главной вместо постов статичную страницу

Уважаемая Соня, а как разрешить задачу если не "вместо", а "вместе". Голову уже сломал. У меня динамичная страница (ананосы последних записей), а над ними хочу вывести статичный контент с page 79. Но ничего не выходит. Попытка вставить до loop код <?php query_posts(‘page_id=79’); ?> приводит к выводу контента странички, но динамичные записи пропадают.
Помогите разобраться пожалуйста…:(

Zalman, после первого цикла с query_posts вставьте <?php rewind_posts(); ?>

Добрый день! Подскажите пожалуйста как можно все страницы сайта сделать статичными?
Заранее благодарю!
Мария

Простите разобралась!

У меня и wp-pagenavi и навигация «позже» «раньше» работает отлично при использовании <?php query_posts($query_string.'&cat=1'); ?> вместо  <?php query_posts('cat=1'); ?>  об этом так и написано: «нашла отличное решение проблем с навигацией при использовании query_posts»
.

Интересно, что если в запросе кроме &cat=1 присутсвует еще и указание кол-ва выводиміх постов, то все, все ламается… На второй странице получаем ошибку нахождения записей

Zalman, после первого цикла с query_posts вставьте <?php rewind_posts(); ?>

Я сделал шаблон category. Вывел статичный контент в верхней части шаблона:
<?php if ( is_category() ): ?>
<div class="entry">
<?php
$my_id = 34;
$post = get_post($my_id);
setup_postdata($post);
?>
<?php query_posts($query_string.’&cat=134′); ?>

<?php the_content(‘Далее…’); ?>
</div>
<?php endif; ?>

Внизу вывод навигации:
<div class="pagenavi"><?php if(function_exists(‘wp_pagenavi’)) { wp_pagenavi(); } ?></div>

И получилось так, что при переходе на последующие странички анонсы записей меняются, а верхний статичный выведеный текст остается. Получается дублирование контента, что не хорошо для SEО Скажите, как сделать так, чтобы поставить условие, чтобы контент выводился только на первой страничке?

Ужос! А еще ж небось и шапка дублируется, и сайдбар, и футер с копирайтами… Как же ж боги SEO стерпят такое неподобство?! 😀

Если не путаю, то глобальная переменная $paged содержит номер страницы. То есть что-то типа <? if ($paged > 1) …

Я напряг свои гуманитарные мозги и нашел код (может он не к селу и не к городу….)
<?php
if ($page < 1) {
$page = 1;
}
elseif ($page > $pages) {
$page = $pages;
}
?>

Если этот код –то куда его вставлять? Куда ее только не вставлял –ничего не меняется…. Полный пинцет…. Помогите пожалуйста, куда и какой код вставлять… Я сам понимаю, что надо задать какое-то условие, что если это первая страница категории 134, то должен выводиться статичный контент и анонсы. И это условие только для первой страницы, а для других (больше 1) –только анонсы.
Только вот на языке программирования увы… :rolleyes:

Ужос! А еще ж небось и шапка дублируется, и сайдбар, и футер с копирайтами... Как же ж боги SEO стерпят такое неподобство?! :D

Если не путаю, то глобальная переменная $paged содержит номер страницы. То есть что-то типа <? if ($paged > 1) ...

Есть ведь is_paged(), м?

Есть ведь is_paged(), м?

Та много чего есть. Всё не упомнишь – надо сорцы и/или Кодекс смотреть. А тут возникает вопрос: кому из нас оно больше надо? 😉

Та много чего есть. Всё не упомнишь - надо сорцы и/или Кодекс смотреть. А тут возникает вопрос: кому из нас оно больше надо? ;)

Это верно вы подметили 🙂

ну вот… лаконично меня на хер послали… 🙁

В Кодекс, уважаемый, в Кодекс. Взялись за программирование – извольте изучать матчасть.

спасибо вам более уважаемый ЮБ за подсказку. Сделал так:
<?php
if ($paged == 0|| $paged == 1){
$my_id = 36;
$post = get_post($my_id);
setup_postdata($post);
}
?>

и Все заработало как хотел.т.е. контент выводится на первой потом анонсы, а на следующих –только анонсы

Кстати а почему контент не выводится если прописывать?:
<?php
if ($paged == 0|| $paged == 1){
$my_id = 36;
$p = get_post($my_id);
echo get_the_title($p->ID);
echo get_the_content($p->ID);
}
?>

Кстати а почему контент не выводится если прописывать?:

Потому же, почему ключи от квартиры не подходят к замку зажигания автомобиля 🙂

Посмотрите в Кодексе, какие параметры кушает функция get_the_content().

Уважаемый Ю.Б., возник следующий трабл…
Я сменил шаблон. В результате после прописания вышеуказанного кода выходит:
1) на первой странице выводится в верхней части статичный цепляемый контент из id который указано в коде, потом идут анонсы
2) на следующих страницах почему–то стали откуда-то тоже выводится в верхней части стат контент вообще произвольной страницы, потом идут анонсы.

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

<?php get_header(); ?>
<div class="main">
<?php get_sidebar(); ?>
<div class="g480">
<div class="topblok">
<?php if (have_posts()) : ?>
<?php $post = $posts[0]; ?>
<?php /* If this is a category archive */ if (is_category()) { ?>
<strong>Архив рубрики "<?php single_cat_title(); ?>" </strong>
<?php /* If this is a tag archive */ } elseif( is_tag() ) { ?>
<strong>Записи с меткой "<?php single_tag_title(); ?>"</strong>
<?php /* If this is a daily archive */ } elseif (is_day()) { ?>
<strong>Архив за <?php the_time(‘ j F Y’); ?></strong>
<?php /* If this is a monthly archive */ } elseif (is_month()) { ?>
<strong>Архив <?php the_time(‘ F Y’); ?></strong>
<?php /* If this is a yearly archive */ } elseif (is_year()) { ?>
<strong>Архив <?php the_time(‘Y’); ?></strong>
<?php /* If this is an author archive */ } elseif (is_author()) { ?>
<strong>Архив автора <?php the_author_posts_link(); ?></strong>
<?php /* If this is a paged archive */ } elseif (isset($_GET[‘paged’]) && !empty($_GET[‘paged’])) { ?>
<strong>Архив блога</strong>
<?php } ?>

</div>

<div class="blok">

<?php if ( is_category() ): ?>

<?php
if ($paged == 0|| $paged == 1){
$my_id = 394;
$post = get_post($my_id);

}
?>
<?php query_posts($query_string.’&cat=166′); ?>

<?php the_content(‘Далее…’); ?>
<?php endif; ?>

</div>

<noindex>

<div class="blok">
<?php while (have_posts()) : the_post(); ?>
<h2><a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"><?php the_title() ?></a></h2>
<div class="date">Опубликовал <?php the_author_posts_link(); ?> <?php the_time(‘ j F Y’); ?> в рубрике <?php the_category(‘, ‘) ?>. Комментарии: <?php comments_popup_link(‘0’, ‘1 ‘, ‘ %’); ?>
</div>

<?php the_content_limit(350, "Далее…"); ?>

<div style="clear:both;"></div>
<div class="more">
<a href="<?php the_permalink() ?>" title="читать запись полностью <?php the_title_attribute(); ?>">Далее</a>
</div>
<div style="clear:both;"></div>

<?php endwhile; ?>
</noindex>
</div>
<div class="pagenavi"><?php if(function_exists(‘wp_pagenavi’)) { wp_pagenavi(); } ?></div>

<?php else : ?>

я так думаю, что где-то есть какое-то наслоение….

в коде
if ($paged == 0|| $paged == 1) внес изменение if ($paged = 0|| $paged = 1) в результате на последующих страницах стал вытаскиваться не произвольный контент с других страниц, а такой же как на первой. Но проблема осталась в том, что на "последующих" страницах вообще не нужен статичный контент, а только продолжение анонсов… Помогите плиз разобраться…

Матчасть:
$paged == 0 – нестрогая проверка переменной $paged на равенство нулю
$paged = 0 – присвоение переменной $paged значения ноль

и чего мне делать? можете подсказать верный код? а то целый день на это убил так и не смог додуматься (надо было в политех идти учиться, а не на юридический :-)))

ну так как?

На Версии 3.0.1 в меню Параметры–>Чтение ставлю На главной странице отображать Статическую страницу, выбираю страницу он отображает на главной, но титла нету на главной, он просто пустой, как задать чтоб титл был как в Общих настройках, или руками для главной прописать? Ещё стоит плагин All in One SEO в нём пишу титл для этой станицы и почему то не отображает тоже.

Ку! Кто что подскажет по моему вопросу? 🙂

Я тоже делаю в меню Параметры–>Чтение ставлю На главной странице отображать Статическую страницу, так у меня Wp эту страницу добавляет в динамическое меню. Как исключить то?

Как исключить то?

параметром exclude в вызове wp_list_pages()

http://wphelp.ru/2008/homepage-static-info.htm

…вот здесь отличная и полезная инфа в тему беседы…

Anonymous
Отправить
Ответ на: