Как вывести ленту новостей из RSS блога на статическую страницу сайта
Появилась задача вывести ленту новостей из блога на WordPress на статической странице сайта. В PHP я не шарю и поэтому стал искать готовое решение. Все, что удавалось найти — решения внутри WP, т.е. вывод записей на статической странице блога посредстовом базовых PHP-функций движка. Но мне это не подходило.
Дело в том, что один мой лендинг, сверстаный на HTML+CSS с помощью фреймворка Bootstrap 3 (очень мне нарвится он), постепенно оброс дополнительными страницами и естественным путем превратился в сайт. Ну а раз уж это полноценный сайт, то и поисковый трафик на него получать хочется, и с соцсетей по-больше трафа хочется, и пользователя по-дольше удерживать надо бы. Короче придумал я на поддомене сделать новостной блог.
Блог на WordPress потому, как я с ним вопервых, хорошо знаком, ну а во вторых, постить на нем очень удобно. Новости пока — чистый копипаст, и по этой причине размещены на поддомене, дабы основной не схлопотал бан от поисковиков за неуникальный контент. Насколько я знаю, фильтр на поддомен не распространяется на основной домен, хотя посмотрим…
Искал я искал и, к счастью, наткнулся на это решение с помощью библиотеки SimplePie, которая как раз таки и подтягивает анонсы из RSS. Спасибо добрым людям за статью и за библиотеку! На основе этого попытаюсь реализовать новостную ленту из блога на статической странце.
К делу!
Скачать библиотеку и загрузить в корневой каталог сайта. Для этого необходимо создать две папки: одну я назвал simplepie вторую cache. В первую папку загрузить файл autoloader.php и папку library из скачанного архива. Вторую папку нужно создать именно с названием cache и расположить именно в корневом каталоге (пытался разместить внутри папки simplepie, но как изменить к ней путь в этом случае так и не нашел). Папке cache также нужно назначить права записи — обычно это 777.
В самом верху страницы (до <!DOCTYPE html>) на которой будут выводиться новсти из RSS блога (у меня это главная страница сайта index.html) надо прописать:
1 2 3 4 5 6 7 |
<?php require_once('siplepie/autoloader.php'); $feed = new SimplePie(); $feed->set_feed_url('http://site.ru/feed/'); //здесь адрес фида $feed->init(); $feed->handle_content_type(); ?> |
Создаю отдельный файл newsfeed.php который подключу в нужном месте страницы index.html с помощью команды
1 |
<?php include "news-feed.php" ?> |
Внутри файла размещаю стандартный код. который предоставляет в качестве примера SimplePie:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<div class="header"> <h1><a href="<?php echo $feed->get_permalink(); ?>"><?php echo $feed->get_title(); ?></a></h1> <p><?php echo $feed->get_description(); ?></p> </div> <?php /* Here, we'll loop through all of the items in the feed, and $item represents the current item in the loop. */ foreach ($feed->get_items() as $item): ?> <div class="item"> <h2><a href="<?php echo $item->get_permalink(); ?>"><?php echo $item->get_title(); ?></a></h2> <p><?php echo $item->get_description(); ?></p> <p><small>Posted on <?php echo $item->get_date('j F Y | g:i a'); ?></small></p> </div> <?php endforeach; ?> |
После этого можно уже наблюдать на странице ленту новостей. Остается только красиво оформить все это дело. У меня получилось вот так:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
<div id="newsmain"> <div class="container"> <div class="row"> <div class="col-xs-12 col-sm-12 col-md-12 col-lg-12"> <h2>Новости мира Криптовалют и Blockchain</h2> <hr> </div> </div> <div class="row"> <?php foreach ($feed->get_items(0, 4) as $item): ?> <div class="col-lg-3 col-md-3 col-sm-6 col-xs-12 news"> <div class="thumbnail"> <div class="caption"> <p class="date"><?php echo $item->get_date('j.m.Y'); ?></p> <h3><a href="<?php echo $item->get_permalink(); ?>"><?php echo $item->get_title(); ?></a></h3> <p><?php echo $item->get_description(); ?></p> <p><a href="<?php echo $item->get_permalink(); ?>">Читать далее...</a></p> </div> </div> </div> <?php endforeach; ?> </div> </div> </div> |
Для меня оказалось сюрпризом, что в RSS не отдается изображение статьи, а очень хотелось, чтобы по мимо текстового превью на главной странице сайта была еще и миниатюра картинки. К счастью на Вордпресс множество вопросов решается с помощью плагинов и проблема с картинкой в RSS не исключение. Я выбрал RSS Image Feed.