Codeigniter 4: Как создать RSS-канал с помощью PHP Codeigniter
![](/uploads/posts/2021-12/1639001779_codeigniter-4.webp)
Давайте начнем с пошагового руководства по созданию RSS-канала с использованием фреймворка PHP Codeigniter. Прочтите это туториал, и вы получите четкое представление о RSS-потоке и о том, как Это полезно.
Создайте таблицу trn_feed_article
Эта таблица содержит RSS-каналы, которые вы хотите объединить с помощью php.
CREATE TABLE trn_feed_article (
'article_id' int(10) unsigned NOT NULL auto_increment,
'article_name' varchar(100) NOT NULL,
'article_url' varchar(100) NOT NULL,
'article_descr' varchar(500) NOT NULL
PRIMARY KEY (article_id)
);
Создайте контроллер feed
Как вы знаете, feed - это не что иное, как представление вашего контента в виде xml, которое определено в универсальном формате rss.
Получить RSS-каналы из базы данных $query = $this->MiscellaneousModel->getFeedArticles();
Установите тип содержимого rss+xml header("Content-Type: application/rss+xml");
<?php
class Feed extends Controller
{
function Feed()
{
parent::Controller();
$this->load->model('FeedModel');
$this->load->helper('xml');
}
function index()
{
$data['encoding'] = 'utf-8';
$data['feed_name'] = 'makecodes.ru';
$data['feed_url'] = 'https://makecodes.ru';
$data['page_description'] = 'Добро пожаловать на страницу с URL-адресом канала MakeCodes.ru';
$data['page_language'] = 'ru-ru';
$data['creator_email'] = 'example@gmail.com';
$query = $this->FeedModel->getFeedArticles();
$data['ARTICLE_DETAILS'] = null;
if ($query) {
$data['ARTICLE_DETAILS'] = $query;
}
header("Content-Type: application/rss+xml");
$this->load->view('rss', $data);
}
}
Создайте rss.php как страницу представления
Здесь мы собираемся создать XML-файл динамически с содержимым нашего feed'а. Каждый тег элемента представляет элемент фида со ссылкой, заголовком и описанием поста.
<?php
echo '<?xml version="1.0" encoding="utf-8"?>' . "\n";
?>
<rss version="2.0"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:admin="http://webns.net/mvcb/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
<title>
<?php
echo $feed_name;
?>
</title>
<link>
<?php
echo $feed_url;
?>
</link>
<description>
<?php
echo $page_description;
?>
</description>
<dc:language>
<?php
echo $page_language;
?>
</dc:language>
<dc:creator>
<?php
echo $creator_email;
?>
</dc:creator>
<dc:rights>Copyright
<?php
echo gmdate("Y", time());
?>
</dc:rights>
<admin:generatorAgent rdf:resource="http://www.codeigniter.com/" />
<?php
if (is_array($ARTICLE_DETAILS) && count($ARTICLE_DETAILS)) {
foreach ($ARTICLE_DETAILS as $loop) {
?>
<item>
<title>
<?php
echo xml_convert($loop->ARTICLE_NAME);
?>
</title>
<link>
<?php
echo site_url('' . $loop->ARTICLE_URL);
?>
</link>
<guid>
<?php
echo site_url('' . $loop->ARTICLE_URL);
?>
</guid>
<description>
<?php
echo xml_convert($loop->ARTICLE_DESCR);
?>
</description>
</item>
<?php
}
}
?>
</channel>
</rss>
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.