ГлавнаяВёрстка WordPress › Как сделать карту сайта Без Плагинов?


Как сделать карту сайта Без Плагинов?


как сделать карту сайтаЛетнего настроения всем читателям — Sozdaiblog.ru!

Сегодня Вы узнаете, как сделать карту сайта без плагинов.

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

В принципе, так оно и было, и какое-то время я даже не искал возможные альтернативы. Всё работало и меня это устраивало. Возможно, что и сегодня я не опубликовал бы этот пост, если б не одно «НО».

Что же случилось?

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

Вот мне и пришлось икать способ вывода карты сайта без плагина. К счастью решение нашлось быстро, а реализовалось оно ещё быстрей.

Итак.

Карта сайта без плагинов.

Чтобы сделать карту сайта на WordPress без плагинов, Вам потребуется текстовый редактор Notepad++ и любой FTP-клиент. Лично я выбираю FileZilla (как настроить ftp-клиента).

Далее при помощи FTP-клиента докапываемся до папки с файлами Вашей активной темы оформления, находим там page.php и копируем (переносим, дублируем) на свой компьютер.

Файл page.php отвечает за вывод статических страниц Вашего Веб-ресурса. Из него то мы и будем делать карту сайта.

После копирования, меняем его название на map.php и закидываем обратно.

Теперь самое сложное. Вам придётся открыть на редактирование map.php и внести кое-какие изменения.

К сожалению, дать Вам универсальное решение невозможно, так как темы оформления у всех разные. Поэтому за пример я возьму код из темы заказчика. Вот то, что было до того, как я внёс изменения в map.php:

  <div id="content">
            <div id="content_inside">

                <div class="blog_box">

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

                        <h1><?php the_title(); ?></h1>

                        <?php the_content(); ?>

                        <br /><br />

                        <?php //comments_template(); ?>

                    <?php endwhile; else: ?>

                        <h3>К сожалению, по вашему запросу ничего не найдено.</h3>

                    <?php endif; ?>

                    <div class="clear"></div>
                </div><!--//blog_box-->

                <div class="clear"></div>

            </div><!--//content_inside-->

        </div><!--//content-->

<?php get_sidebar(); ?>
<?php get_footer(); ?>



А это то, что стало после редактирования:

<?php
/*
Template Name: Карта
*/
?>
<?php get_header(); ?>

        <div id="content">
            <div id="content_inside">

                <div class="blog_box">

    <h3>Все посты:</h3>
    <ul>
    <?php
    $cats = get_categories('exclude='); //***Сюда вставьте через запятую
     ID категорий, которые желаете исключить.
     Если таких категорий нет, то оставьте поле пустым.

    foreach ($cats as $cat) {
      echo '<li>'."\n".'<strong>Категория:</strong> '.$cat->cat_name.''."\n";
      echo '<ul>'."\n";

      query_posts('posts_per_page=-1&cat='.$cat->cat_ID); //-1 показывать все статьи категории.
               1 показывать последние статьи.

         while(have_posts()): the_post();
         $category = get_the_category();
            if ($category[0]->cat_ID == $cat->cat_ID) {?>
            <li><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></li>
       <?php }
        endwhile;
       ?>
      </ul>
      </li>
    <?php } ?>
    </ul>
    <?php
    wp_reset_query();
    ?>

                </div><!--//blog_box-->

                <div class="clear"></div>

            </div><!--//content_inside-->

        </div><!--//content-->

<?php get_sidebar(); ?>
<?php get_footer(); ?>



Что я сделал? Давайте разберёмся!

Для начала я связал новую страницу (map.php) с существующей темой оформления вставив в самое начало следующий код:

<?php
/*
Template Name: Карта
*/
?>



Затем я нашёл то место, где начинается вывод контента с применением определённого класса (class) присвоенного разработчиками. В моём случае:

<div class="blog_box">



Удалив все циклы контейнера (до закрывающего тега </DIV>) я вставил свой код:

<h3>Все посты:</h3>
    <ul>
    <?php
    $cats = get_categories('exclude='); //***Сюда вставьте через запятую
          ID категорий, которые желаете исключить.
           Если таких категорий нет, то оставьте поле пустым.

    foreach ($cats as $cat) {
      echo '<li>'."\n".'<strong>Категория:</strong> '.$cat->cat_name.''."\n";
      echo '<ul>'."\n";

      query_posts('posts_per_page=-1&cat='.$cat->cat_ID); //-1 показывать все статьи категории.
       1 показывать последние статьи.
         while(have_posts()): the_post();
         $category = get_the_category();
            if ($category[0]->cat_ID == $cat->cat_ID) {?>
            <li><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></li>
       <?php }
        endwhile;
       ?>
      </ul>
      </li>
    <?php } ?>
    </ul>
    <?php
    wp_reset_query();
    ?>



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

На этом редактирование окончено. Осталось показать карту сайта людям.

Для этого, обычным способом в WordPress, создайте новую статическую страницу.  Напишите необходимый заголовок и в режиме редактирования отыщите справа виджет «Атрибуты страницы». Из выпадающего списка выберите «Карта» и опубликуйте страницу:


как сделать карту сайта


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

При желании Вы можете добавить необходимые CSS стили, которые будут отличаться от тех, что в теме оформления. Но это уже другая история.

На сегодня, это всё. До новых встреч!

С уважением, Денис Черников!




Сделайте, пожалуйста, доброе дело, расскажите о блоге своим друзьям:




17 комментариевА что думаете Вы?

  1. Константин

    Спасибо Денис! Сейчас испытаю. Если бы еще миниатюры добавить, вообще бомба.

    [Ответить]

    Денис Черников ответил:

    Пожалуйста, Константин! Миниатюры чего добавить нужно?

    [Ответить]

  2. Олег

    А обновляться эта карта сама будет?

    [Ответить]

    Денис Черников ответил:

    А как по-другому?)))

    [Ответить]

  3. Никита

    А я просто вывел все записи (список записей блога) на одной странице без разбиения на рубрики, так как некоторые записи имеют принадлежность сразу к двум рубрикам (например, html и css).

    [Ответить]

    Денис Черников ответил:

    Это уже кому как удобней!

    [Ответить]

  4. Никита

    Кстати, хотел задать Вам вопрос: Влияет ли принадлежность статьи к двум и более рубрикам на отношение к блогум поисковиков? То есть не происходит ли дублирования контента, и т.д. Наверное лучше, чтобы запись была привязана строго к одной рубрике? Спасибо!

    [Ответить]

    Денис Черников ответил:

    Интересный вопрос, Никита! Если честно, то я не анализировал такие случаи, но склоняюсь к тому, что лучше размещать для одной рубрики.

    [Ответить]

  5. Татьяна

    Денис, а файл page.php после установления нового map удалять или нет? Я попробовала, оставила оба. Но страница с картой не отображается. Т.е. сам саqn работает, а когда открываешь карту, то выглядит так, когда все слетает. Т.е. вообще не загружает ничего.

    [Ответить]

    Денис Черников ответил:

    Татьяна, зачем удалять page.php, это же файл отвечающий за вывод страниц на Вашем ресурсе. Просто мы его взяли, как донора кода!

    Татьяна, что-то Вы где-то не учли или не туда прописали. Смотрите внимательней, данный способ проверен и отлично работает на одном из моих тестовых сайтов.

    [Ответить]

    Татьяна ответил:

    сделала. правда с другим, похожим очень на ваш, код и пришлось повозиться, буквально по строчкам вставляла. Горжусь собой ужасно :)

    Денис, вопрос не по теме — вот у вас плавающий подвал с кнопками внизу. Он у вас с какого-то другого ресурса подгружается или нет? Нашла сейчас один вариант, но там подгружается со стороннего ресурса, а код на сайте.

    У вас про этот ваш подвал нет ничего почитать?

    [Ответить]

    Денис Черников ответил:

    Молодец, Татьяна!

    Плавающий подвал реализован кодом и подгружается с моего блога! Про это я ещё не писал!

    [Ответить]

  6. Марина

    Денис, карта категорий получилась на УРА! Подскажите, а какой код добавить в файл Map.php , чтобы там же была и карта страниц? Заранее спасибо. Марина.

    [Ответить]

    Денис Черников ответил:

    Я рад!

    Добавьте wp_list_pages ('exclude='); перед $cats = get_categories ('exclude='); и всё будет хоккей!

    [Ответить]

  7. Екатерина

    Добрый день. Очень полезная статья, но, вот, у меня возникли пару вопросов, которые я никак не могу понять, возможно, вы мне подскажете?

    1.Я читала, что файл с картой сайта должен быть xml, а у Вас получается php или я что-то недопонимаю?

    2.При регистрации сайта в поисковиках, просят добавить ссылку на карту сайта. Как будет выглядеть та самая ссылка или где можно ее посмотреть.

    Делаю все, как у вас написано в этом посте. Спасибо за ответ

    [Ответить]

    Денис Черников ответил:

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

    1. У меня есть xml карта. Она редактируется с помощью плагина. А эта карта для людей, а не ПС!

    2. http:// Ваш сайт.ru/sitemap.xml она в корне сайта!

    [Ответить]

  8. Денис

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

    [Ответить]

Оставить комментарий!

Вверх