- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Как удалить плохие SEO-ссылки и очистить ссылочную массу сайта
Применяем отклонение ссылок
Сервис Rookee
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Всем добрый день!
Появилась потребность отредактировать rss ленту. В ленте необходимо между тегами <yandex:full-text> и </yandex:full-text> выводить полное описание новости. Пользователям не обязательно видеть полное описание новости (это делается исключительно для Яндекса) - что бы он мог забирать новости в формате rss.
Сам я в этом не силен, на форуме пару таких тем нашел, но настроить так и не получилось. . Буду весьма благодарен за помощь. Вся проблема в теге <yandex:full-text> - он не хочет восприниматься.
Вот сам код ленты:
<?php
require_once "maincore.php";
header("Content-Type: text/xml");
echo "<?xml version=\"1.0\" encoding=\"".$locale['charset']."\"?>\n\n\n\n\n";
global $settings, $db_prefix;
$result = dbquery("SELECT * FROM ".$db_prefix."news ORDER BY news_datestamp DESC LIMIT 0, 10");
$numrows = dbrows($result);
echo "<rss version=\"2.0\">\n\n";
echo "<channel>\n";
echo "<title>".htmlspecialchars($settings['sitename']).". Новости</title>\n";
echo "<link>".$settings['siteurl']."</link>\n";
echo "<description>Новости</description>\n";
echo "<image>
<title>".htmlspecialchars($settings['sitename'])."</title>
<url>".$settings['sitebanner']."</url>
<link>".$settings['siteurl']."</link>
</image>";
echo "<language>ru-ru</language>\n\n";
for ($i=0;$i < $numrows;$i++) {
$data = dbarray($result);
if ($data['news_breaks'] == "y") { $data['news_news'] = nl2br($data['news_news']); }
echo "<item>\n";
echo "<title>".$data['news_subject']."</title>\n";
echo "<link>".stripslashes(htmlspecialchars($settings['siteurl']."news.php?readmore=".$data['news_id']))."&l
t;/link>\n";
echo "<description>".stripslashes(htmlspecialchars($data['news_news']))."</description>\n";
echo "<pubDate>".date("r",$data['news_datestamp'])."</pubDate>\n";
echo "<guid>".stripslashes(htmlspecialchars($settings['siteurl']."news.php?readmore=".$data['news_id']))."&l
t;/guid>\n";
echo "</item>\n\n";
}
echo "</channel>\n";
echo "</rss>";
?>
Ну во первых раздел не тот
Во-вторых у вас в коде вообще нет этого тега
В-третьих для большего гешефта mime-type корректней ставить application/rss+xml
В-четвертых для таких тегов неплохо указать бы пространство имен, как это делает яндекс. Внешний контейнер их лент выглядит так
В-пятых, в хелпе яндекса это все и еще много чего интересного написано ;)
В примере кода его не указал, т.к. не удалось сделать работоспособную версию.
Делал так:
echo "<yandex:full-text> ".stripslashes(htmlspecialchars($data['news_news']))."</yandex:full-text> \n";
Но к сожалению, не работает...
htmlspecialchars с большой вероятностью создаст кучу ошибок XML
stripslashes вообще там не нужен
для вставки html-кода в XML используется CDATA и ничего больше
Конкретней хотелось бы узнать что именно "не работает"
Про пространство имен также не забывайте
neolord, спасибо за помощь, инфа помогла. Теперь тег <yandex:full-text> работает, но в нем удается вывести не всю новость, а только ее анонс (первый абзац)
dimakritivkaya добавил 08.05.2009 в 02:20
Вот что удалось сделать. Единственная проблема в том что выводится не полная новость, а только первый абзац + не получается удалить картинки с самой новости.
<?php
require_once "maincore.php";
header("Content-Type: text/xml");
echo "<?xml version=\"1.0\" encoding=\"".$locale['charset']."\"?>\n\n\n\n\n";
global $settings, $db_prefix;
$result = dbquery("SELECT * FROM ".$db_prefix."news ORDER BY news_datestamp DESC LIMIT 0, 10");
$numrows = dbrows($result);
?>
<rss version="2.0" xmlns:yandex="http://news.yandex.ru">
<channel>
<title>Новости</title>
<link>http://www.test.ru</link>
<description>тут описание сайта</description>
<image>
<url>http://www.test.ru/images/design/logo.gif</url>
</image>
<?php
echo "<language>ru-ru</language>\n\n";
for ($i=0;$i < $numrows;$i++) {
$data = dbarray($result);
if ($data['news_breaks'] == "y") { $data['news_news'] = nl2br($data['news_news']); }
echo "<item>\n";
echo "<title>".$data['news_subject']."</title>\n";
echo "<link>".stripslashes(htmlspecialchars($settings['siteurl']."news.php?readmore=".$data['news_id']))."</link>\n";
echo "<yandex:full-text>".stripslashes(htmlspecialchars($data['news_news']))."</yandex:full-text>\n";
echo "<pubDate>".date("r",$data['news_datestamp'])."</pubDate>\n";
echo "<guid>".stripslashes(htmlspecialchars($settings['siteurl']."news.php?readmore=".$data['news_id']))."</guid>\n";
echo "</item>\n\n";
}
echo "</channel>\n";
echo "</rss>";
я не вижу чтобы вы воспользовались хоть чем то из моих советов =)
Засуньте новость в CDATA и все у вас будет работать. А абзацы - это может быть глюк конкретного аггрегатора
Просто не совсем понятно как это сделать, раньше подобным заниматься не приходилось. Так будет правильно?
echo "<yandex:full-text>".<![CDATA['news_news']]>"</yandex:full-text>\n";
dimakritivkaya добавил 08.05.2009 в 13:54
Все, лента работает, проблема решена. Спасибо пользователю Golovoed
dimakritivkaya добавил 09.05.2009 в 03:10
Есть некое поле с информацией news_news
Для вывода информации с поля используем echo "<yandex:full-text>".<![CDATA['news_news']]>"</yandex:full-text>\n";
А как быть в том случае, если при выводе информации с этого поля, выводятся также ссылки и картинки расположенные в этом поле. Как можно запретить вывод этих ссылок и картинок, при этом разрешить вывод самого теста новости?
вы этот CDATA неправильно пишете. На педивикии есть же пример.
Ссылки и картинки можно вырезать из текста регулярками, можно просто использовать striptags - вторым параметром указывается список разрешенных тегов. Есть резон оставлять только p,b,i,em,strong и br