gelogkh 0 Опубликовано: 11 июля 2012 Рассказать Опубликовано: 11 июля 2012 Перевели сайт на DLE. Появился ряд существенных проблем в выводе RSS для яндекс-новостей. description - должен быть в одно предложение. Однако он формируется на основе short-story, который зачастую больше (иначе невозможно читать категории на сайте). html-теги - они присутствуют в яндекс-фиде (как и код картинки с описанием). Это недопустимо по условиям яндекса. Описание картинки, кстати, достает и в других местах, но это не важно. Сайт: rln dot ФМДополнение: Что еще важно, нужно две RSS-ленты (1) для яндекс-новостей (2) Остальных новостных агрегаторов. Ибо, если выполнить пункт (1) из предыдущего поста, Рамблер-новости, например, вылетят. Цитата Ссылка на сообщение Поделиться на других сайтах
Captain 623 Опубликовано: 11 июля 2012 Рассказать Опубликовано: 11 июля 2012 Это? http://dle-news.ru/tips/228-ispolzovanie-rss-potokov-raznogo-tipa.html "Яша" постоянно алгоритмы rss меняет, всегда подстраиваться нужно. Цитата Ссылка на сообщение Поделиться на других сайтах
gelogkh 0 Опубликовано: 11 июля 2012 Рассказать Опубликовано: 11 июля 2012 (изменено) Автор Это? 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 ленты) Изменено 11 июля 2012 пользователем gelogkh Цитата Ссылка на сообщение Поделиться на других сайтах
Captain 623 Опубликовано: 11 июля 2012 Рассказать Опубликовано: 11 июля 2012 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); Поищите поиском, тем полно должно быть на форуме. Цитата Ссылка на сообщение Поделиться на других сайтах
gelogkh 0 Опубликовано: 11 июля 2012 Рассказать Опубликовано: 11 июля 2012 (изменено) Автор 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-форматирования). Изменено 11 июля 2012 пользователем gelogkh Цитата Ссылка на сообщение Поделиться на других сайтах
gelogkh 0 Опубликовано: 11 июля 2012 Рассказать Опубликовано: 11 июля 2012 (изменено) Автор Нашел код в файле /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'] ); Если честно, не пойму как он может не работать, но я очень плохо знаю регулярные выражения. Если кто-то сможет помочь, буду признателен. Напоминаю: нужно убрать из текста ссылки на картинки (с их хтмл-тегами) и описание картинок Изменено 11 июля 2012 пользователем gelogkh Цитата Ссылка на сообщение Поделиться на других сайтах
gelogkh 0 Опубликовано: 12 июля 2012 Рассказать Опубликовано: 12 июля 2012 Автор В общем, решил проблему. Добавил вторую строчку и отредактировал третью: $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". Я его, очевидно, не совсем корректно вырезал (не знаю регулярных выражений), но до того момента как выйдет из отпуска техподдержка, думаю, сойдет. Спасибо за оказанную помощь! Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.