Перейти к публикации

Некорректно работает RSS для яндекс-новостей


Рекомендованные сообщения

Перевели сайт на DLE. Появился ряд существенных проблем в выводе RSS для яндекс-новостей.

description - должен быть в одно предложение. Однако он формируется на основе short-story, который зачастую больше (иначе невозможно читать категории на сайте).

html-теги - они присутствуют в яндекс-фиде (как и код картинки с описанием). Это недопустимо по условиям яндекса.

Описание картинки, кстати, достает и в других местах, но это не важно.

Сайт: rln dot ФМ

Дополнение: Что еще важно, нужно две RSS-ленты (1) для яндекс-новостей (2) Остальных новостных агрегаторов. Ибо, если выполнить пункт (1) из предыдущего поста, Рамблер-новости, например, вылетят.

Ссылка на сообщение
Поделиться на других сайтах

Это?

http://dle-news.ru/tips/228-ispolzovanie-rss-potokov-raznogo-tipa.html

"Яша" постоянно алгоритмы rss меняет, всегда подстраиваться нужно.

Ссылка на сообщение
Поделиться на других сайтах

Это?

http://dle-news.ru/t...znogo-tipa.html

"Яша" постоянно алгоритмы rss меняет, всегда подстраиваться нужно.

Спасибо! Второй RSS сделал, но от рудементов хтмл-форматирования и огромного description в нем это не избавляет.

Дополнение 2: Выяснилась еще одна проблема. Поскольку лент две, решил изначальную настроить как "полную" (Полный - выводит весь текст новости с сохранением форматирования и картинок). Но полный текст новости не выводится. Выводится short-story. С ходу в пхп файле RSS ленты не разобрался, поэтому исправить это вне админки не смог. А между тем подобные ошибки серьезно мешают сайту. Это может привести к вылету из всех новостных агрегаторов (добавление куда серьезная работа)

Дополнение 3: То есть, что нужно:

1) Нормальная лента для Яндекс-новостей (короткий Description, нет рудиментов хтмл в выводе)

2) Нормальная rss лента для других агрегаторов с полным выводом новости, можно с хтмл, но без этих Tbegin, иначе получается: http://news.rambler.ru/14679095/ (отсутствие пробела между первым и вторым предложением - не ошибка при наборе, это проблема. Первое предложение - подпись к картинке, которая почему-то лезет в любой(!) тип rss ленты)

Изменено пользователем gelogkh
Ссылка на сообщение
Поделиться на других сайтах

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

Про description, если чесно не понял, про "добавку" названия сайта?. ;) Их два не может быть. Либо прописывать к каждой новости в админке, либо с /engine/engine.php "похимичить"

if ($nam_e) {


	$metatags['title'] = $nam_e . $page_extra . ' » ' . $metatags['title'];

	$rss_title = $metatags['title'];


} elseif ($titl_e) {


	$metatags['title'] = $titl_e . $page_extra . ' » ' . $config['home_title'];


} else $metatags['title'] .= $page_extra;


if ( $metatags['header_title'] ) $metatags['title'] = stripslashes($metatags['header_title'].$page_extra);

Поищите поиском, тем полно должно быть на форуме.

Ссылка на сообщение
Поделиться на других сайтах

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

Про description, если чесно не понял, про "добавку" названия сайта?. ;) Их два не может быть. Либо прописывать к каждой новости в админке, либо с /engine/engine.php "похимичить"

if ($nam_e) {


	$metatags['title'] = $nam_e . $page_extra . ' » ' . $metatags['title'];

	$rss_title = $metatags['title'];


} elseif ($titl_e) {


	$metatags['title'] = $titl_e . $page_extra . ' » ' . $config['home_title'];


} else $metatags['title'] .= $page_extra;


if ( $metatags['header_title'] ) $metatags['title'] = stripslashes($metatags['header_title'].$page_extra);

Поищите поиском, тем полно должно быть на форуме.

Когда в новость вставляю картинку, а к ней прописываю описание, то html код картинки попадает в яндекс-новости, а ее описание идет обычным текстом перед основным текстом статьи: http://rln.fm/yandex-feed. (что интересно, если всю новость запихнуть в короткую новость, то код картинки не вставляется, а, вот, ее описание остается). При этом, если в статье была ссылка (a href), то ее код также влезает в яндекс-фид, что запрещено правилами яндекса. Все остальные хтмл-элементы режутся. Мне кажется, там где-то в коде надо исправить одну строчку, чтобы все заработало. Но где именно - не пойму.

Про description: там все аналогично, как и в поле для яндекса (лезут рудименты картинки, но без остатков html-форматирования).

Изменено пользователем gelogkh
Ссылка на сообщение
Поделиться на других сайтах

Нашел код в файле /modules/show.short.php. Опытным путем определил, что именно он отвечает за формирование текста новости для яндекса:


$row['full_story'] = preg_replace( "#<!--TBegin-->(.+?)<!--TEnd-->#is", "", $row['full_story'] );

	$row['full_story'] = trim (htmlspecialchars( strip_tags( stripslashes( str_replace( "<br />", " ", $row['full_story'] ) ), '<a>' ), ENT_QUOTES ) );

	if( $row['full_story'] == "" ) $row['full_story'] = $row['short_story'];


	$tpl->set( '{full-story}', $row['full_story'] );

Если честно, не пойму как он может не работать, но я очень плохо знаю регулярные выражения. Если кто-то сможет помочь, буду признателен. Напоминаю: нужно убрать из текста ссылки на картинки (с их хтмл-тегами) и описание картинок

Изменено пользователем gelogkh
Ссылка на сообщение
Поделиться на других сайтах

В общем, решил проблему. Добавил вторую строчку и отредактировал третью:


 $row['full_story'] = preg_replace( "#<!--TBegin-->(.+?)<!--TEnd-->#is", "", $row['full_story'] );

 $row['full_story'] = preg_replace( "#<span[^>]*?>.*?</span>#si", "", $row['full_story'] );

  $row['full_story'] = trim (htmlspecialchars( strip_tags( stripslashes( str_replace( "<br />", " ", $row['full_story'] ) ) ), ENT_QUOTES ) );

Ошибку вызывал span class="highslide-caption". Я его, очевидно, не совсем корректно вырезал (не знаю регулярных выражений), но до того момента как выйдет из отпуска техподдержка, думаю, сойдет. Спасибо за оказанную помощь!

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...