Мой сайт о WordPress и PHP С Днем победы!
16 августа 2006

Делаем статический сайт! Шаблоны страниц

Читали 4338 раз
Рубрика: E-mail рассылка
Навигация: Главная » WordPress » E-mail рассылка

Объявление

Если вы еще не установили для себя блог-клиент для WordPress, то можете сделать это сейчас, поскольку у вас появилась возможность бесплатно протестировать его возможности. Для этих целей я специально создал Демо-блог. Установив программу, вы бесплатно получаете ключ к управлению этого блога. Тестируйте, пробуйте!

Делаем статический сайт!

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

Первым делом вы должны сделать файл index.php - это будет главная страница сайта. Вы оформляете его по своему желанию.

Если у нас будет использоваться единая навигация, то проще будет её сразу же прописать в файле sidebar.php. Если же вы хотите использовать какие-то различия, то можно будет это делать прямо в тексте в виде html-кода, либо исправляя файл шаблона страницы (об этом чуть позже).

В файле index.php прописываем:

<?php get_sidebar(); ?>

А в файле sidebar.php явно указываем ссылки на другие страницы.

<h3>Навигация</h3>
<p><a href="<?php echo get_settings('siteurl'); ?>/?pagename=about">О сайте</a> |
<a href="<?php echo get_settings('siteurl'); ?>/?pagename=page2">Страница 2</a> |
<a href="<?php echo get_settings('siteurl'); ?>/?pagename=page3">Страница 3</a> |
<a href="<?php echo get_settings('siteurl'); ?>/?pagename=page4">Страница 4</a> |
<a href="<?php echo get_settings('siteurl'); ?>/?pagename=page5">Страница 5</a>
</p>

Обратите внимание на то, как организованны ссылки. В качестве параметра используется pagename - короткое имя страницы: в режиме редактирования у вас доступно поле "Быстрый доступ". То есть для странички о сайте мы укажем "about", ссылки - "links" и т.п.

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

По-идее у нас должна быть отдельная страничка, которая будет заглавной. Можно, конечно прописать её прямо в index.php, но мы пойдем другим путем :-) . Мы будет проверять, если пользователь находится на главной, то будем выводить страницу с именем "first".

Проще будет сделать, если взять не короткое имя страницы, а её номер. В этом случае php-код будет совсем простой. Но, поскольку мы решили сделать навигацию именно по коротким именам, то в этом случае придется делать дополнительный запрос к базе данных.

Получается такой код:

<?php
if (is_home()) {
 global $wpdb;
 $p = $wpdb->get_results("SELECT ID FROM $wpdb->posts
                                    WHERE post_name = 'first'");
 if ($p) {
   foreach ( $p as $post ) {
   $ID = $post->ID;
   $post = get_post($ID);
   setup_postdata($post);
   }
 }
?>
... вывод содержимого ...
<?php } ?>

Разберем его:

  • В начале проверяем условие, что это действительно главная страница (is_home).
  • Дальше получаем доступ к базе данных ($wpdb).
  • И выполняем запрос, где в качестве аргумента выступает имя страницы "first". Вы можете изменить имя на любое другое.
  • Дальше проверяем был ли запрос успешен?
  • Если "да", то получаем результат в виде массива. Чтобы перебрать все его элементы, запускаем цикл foreach.
  • В теле цикла получаем номер записи (ID), значение всех полей ($post) и функцией setup_postdata устанавливаем эту запись текущей.

В конце, после вывода содержимого, нужно закрыть скобку первого условия (is_home). Сам же вывод делается "стандартно":

<p><?php the_date() ?> | <?php the_author() ?></p>
<h1><?php the_title(); ?></h1>
<div class="storycontent">
<?php the_content() ?>
</div>

Думаю, что этот код вам понятен: выводим дату, автора и текст записи.

Теперь мы должны сделать шаблон для вывода остальных страниц. Если вы помните, то для вывода постоянных страниц (post), WordPress использует файл post.php. Этим мы и воспользуемся.

Код по сути будет повторять предыдущий вывод, только добавляется условие на проверку существования записи:

<?php if (have_posts()) : the_post() ?>
<p><?php the_date() ?> | <?php the_author() ?></p>
<h1><?php the_title(); ?></h1>
<div class="storycontent">
<?php the_content() ?>
</div>
<?php else: ?>
<p><?php _e('Извините, ничего не найдено...') ?></p>
<?php endif ?>

Разберем строки:

  • Проверяем есть ли запись (have_posts)? Если есть, то получаем данные записи the_post.
  • Дальше выводим дату и автора.
  • После этого заголовок и текст.
  • Если же ссылка на страницу была ошибочной, то выведется сообщение об ошибке.

Таким образом всего тремя файлами (style.css, index.php, page.php и sidebar.php) мы сделали полный аналог любого статичного сайта, да еще и умудрились сохранить управление от WordPress ;-) !

Теперь наши действия очень просты. Идем в админ-панель и создаем нужные нам страницы (post) и указываем им короткое имя. Вы можете использовать этот шаблон сайта для быстрого создания любых статических страниц.

Если же кто-нибудь запутается, то на всякий случай я выложил на сайте готовый шаблон с этим примером: staticsite.zip(2 Кб, кодировка WINDOWS-1251).

Использование шаблонов страниц

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

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

<?php
/*
Template Name: Название шаблона
*/
?>

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

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru

10 комментариев к “Делаем статический сайт! Шаблоны страниц”

  1. Alexey:

    Установлен Ваш wordPress 2.04 win1251. Скачал пример, скопировал в папку шаблонов. На странице с шаблонами он есть. В списке шаблонов для статических страниц он не появился. Куда копать?

  2. Максим:

    Шаблон для статических страниц вы дожны сделать сами :) и поместить в каталог шаблона сайта.

  3. Alexey:

    в каталог шаблона сайта
    Вот этого я и не догнал, спасибо

  4. zhivi-strana:

    А как совместить статический сайт с динамическим?
    Мне не нравиться, что сайт загружает сразу все новостные статьи и статьи других категорий – повышение рождаемости, снижение смертности и т.д. я хочу, чтобы сайт загружался с строго определённой страницы. Как это сделать??? :roll:

  5. Максим:

    Создайте файл home.php и укажите в нем все необходимые условия.

  6. Лёша:

    Здравствуйте!

    Максим, к вопросу о заглавной странице, скажите, например у меня некая страница "X" должна грузиться заглавной, а не блог, может сразу в индексном файле шаблона что-то необходимо прописать?

  7. Максим:

    Ставите плагин. После этого в настройках нужной страницы (постоянной)прописываете короткую ссылку «home».

  8. жуковский:

    Просто супер. Огромное спасибо автору сайта за очень ценные материалы!
    Спасибо-спасибо-спасибо. :mrgreen:

  9. SextuS:

    А нельзя ли рассказать как к сайту на вордпресе, например к этому можно прикрутить ЖЖ?

    ЖЖ каким то макарычем можно прикручивать к сайтам, у ЖЖ такая опция есть, но как это сделать для Wordpress?

    Слово автору, если вы разбираетесь в вопросе. :lol:

  10. Александр:

    Подскажите пожалуйста.
    Подскажите, как сделать статический сайт, но так, чтобы все функции динамического сайта распространялись на статические страницы,
    т.е. облако тегов, поиск по сайту, или как из динамических страниц сделать статичный сайт с иерархическим меню :smile: .
    Заранее Спасибо.


Оставьте комментарий! (Вы согласны с правилами)

 

:mrgreen: :neutral: :twisted: :arrow: :shock: :smile: :???: :cool: :evil: :grin: :idea: :oops: :razz: :roll: :wink: :cry: :eek: :lol: :mad: :sad: :!: :?:

При добавлении кода (html, php) заменяйте < на &lt; и > на &gt;.
Внимание: антиспам - зверь! Копируйте своё сообщение перед отправкой. На всякий случай.