Вход • Регистрация

Вывод полного текста новости в RSS

  • 20 сентября 2013 г.
  • Пытаюсь адаптировать RSS под Яндекс.Новости. Вот этого не хватает:
    Цитата
    <yandex:full-text> - для экспорта полного текста сообщений. Обязательный элемент!
    Кроме стандартных элементов RSS 2.0, для экспорта Данных используется специальный элемент <yandex:full-text>, который должен содержать полный текст сообщения. Полный текст сообщения необходим для индексирования поисковым роботом и на Яндекс.ру размещаться не будет.

    Подскажите пожалуйста, что надо добавить в news.rss.php?
    • 20 сентября 2013 г.
    • Очевидно, yandex:full-text и надо, к полному тексту новости
      • 20 сентября 2013 г.
      • Спасибо, кэп ;)
        • 23 сентября 2013 г.
        • Да я не ерничал, я что-то запамятовал, что в rss новостей нет полного текста, а глянуть не глянул Я думал, что только тег надо добавить вокруг и все.
    • 20 сентября 2013 г.
    • Добавить в запрос к базе данных вывод полного текста и добавить этот тег в вывод новости
      Код
      $result = DB::query("SELECT e.id, e.created, e.[name], e.[anons], e.cat_id, e.site_id, e.[text] FROM {news} AS e"
      .($this->diafan->_user->id ? " LEFT JOIN {access} AS a ON a.element_id=e.id AND a.module_name='news'" : "")
      ." WHERE e.[act]='1' AND e.trash='0'"
      ." AND e.created<=%d AND e.date_start<=%d AND (e.date_finish=0 OR e.date_finish>=%d)"
      ." AND (e.access='0'"
      .($this->diafan->_user->id ? " OR e.access='1' AND a.role_id=".$this->diafan->_user->role_id : '')
      .")"
      ." AND e.site_id IN (".implode(",", $site_ids).")"
      ." ORDER BY e.created DESC, e.id DESC LIMIT ".$limit, $time, $time, $time);
      $last = '';
      $items = '';

      while ($row = DB::fetch_array($result))
      {
      if (! $this->diafan->configmodules("cat", "news", $row["site_id"]))
      {
      $row["cat_id"] = 0;
      }
      $link = $this->diafan->_route->link($row["site_id"], "news", $row["cat_id"], $row["id"]);
      if(! $link)
      {
      continue;
      }
      if (empty($last))
      {
      $last = date("D, d F Y H:i:s T", $row['created']);
      }
      $items .= "
      <item>
      <title>".$this->diafan->prepare_xml($row['name'])."</title>
      <link>".BASE_PATH_HREF.$link."</link>
      <description>".$this->diafan->prepare_xml($row['anons'])."</description>
      <yandex:full-text><![CDATA[".$this->diafan->prepare_xml($row['text'])."]]></yandex:full-text>\n
      <pubDate>".date("D, d F Y H:i:s T", $row['created'])."</pubDate>"
      .($this->diafan->configmodules("comments", "news", $row["site_id"]) ? "
      <comments>".BASE_PATH_HREF.$link."</comments>" : "")."
      </item>";
      }
      • 21 сентября 2013 г. , редакция: 21 сентября 2013 г.
      • Спасибо большое! Из какой версии файл news.rss.php в данном случае приведет? У меня в 5.0 немного не так, но принцип вроде бы ясен.
  • 21 сентября 2013 г. , редакция: 21 сентября 2013 г.
  • Сделал немного иначе, может кто-нибудь подскажет, можно ли так.
    Было:
    Код
    $result = DB::query("SELECT id, created, [name], [anons], cat_id, site_id FROM {news} WHERE [act]='1' AND trash='0'"
    ." AND created<'%d' ORDER BY prior DESC, created DESC, id DESC LIMIT ".$limit, time());

    Сделал:
    Код
    $result = DB::query("SELECT id, created, [name], [anons], [text], cat_id, site_id FROM {news} WHERE [act]='1' AND trash='0'"
    ." AND created<'%d' ORDER BY prior DESC, created DESC, id DESC LIMIT ".$limit, time());

    Т.е. добавил [text]
    Так же добавил:
    Код
    <yandex:full-text>".prepare($row['text'])."</yandex:full-text>

    Валидность у Яндекса файл проходит. Но вдруг что-то не так. И вот теперь не знаю, как сделать так, чтобы файл RSS для Яндекса был доступ по адресу /news/yandex/rss/ т.к. хочу оставить обычный вариант по адресу /news/rss/
    • 23 сентября 2013 г.
    • Ну да, все верно. В запросик добавить поле [text], затем его вывод. Вы всё и так знали
  • 23 сентября 2013 г.
  • Виталий, а вот по этому вопросу:
    Цитата
    И вот теперь не знаю, как сделать так, чтобы файл RSS для Яндекса был доступ по адресу /news/yandex/rss/ т.к. хочу оставить обычный вариант по адресу /news/rss/

    Или это жутко сложно?
    • 23 сентября 2013 г.
    • Как вариант rewrite через .htacess
      • 23 сентября 2013 г.
      • Не понятно. Дело то не в конкретном адресе, а в двух вариантах RSS. Один обычный, второй для Яндекс.Новости и по разным адресам.
    • 24 сентября 2013 г.
    • Цитата
      Или это жутко сложно?

      Это жутко просто. Только адрес немного не такой будет.
      Копируете файл news.rss.php в news.rssyandex.php и все.
      По адресу /news/rss/ будет содержимое news.rss.php
      А по адресу /news/rssyandex/ будет содержимое news.rssyandex.php
      • 24 сентября 2013 г.
      • Виталий, спасибо! Вот и получили руководство, как легко и просто подстроиться под требования Яндекс.Новости. :)
  • 24 ноября 2017 г. , редакция: 24 ноября 2017 г.
  • Сейчас появилось в Яндексе такая ерунда как Турбо страницы. Как адаптировать RSS именно для турбо, что надо прописать в news.rss.php что бы все соответствовало их стандарту?
    https://yandex.ru/support/webmaster/turbo/connection.html

    Только поподробней что и куда пожалуйста, ответ: "В элементе item надо добавить атрибут turbo со значением true" Мне мало что скажет


    • 24 ноября 2017 г.
    • Бро, как я понял, ньюс.рсс выводит только новости. Лично мне нужно все (сразу бесплатно без смс) с сайта. Я сейчас озадачился этой тематикой, но, пока что, ничего путного не родил.
  • 24 января 2019 г.
  • Кто подскажет как сделать rss канал из конкретной категории ( cat_id ) новостей или site_id
    • 24 января 2019 г. , редакция: 24 января 2019 г.
    • news.rss.php

      Строка 33. Это:
      Код

      $rows = DB::query_fetch_all("SELECT e.id, e.created, e.[name], e.[anons], e.site_id FROM {news} AS e"
      .($this->diafan->configmodules('where_access_element', 'news') ? " LEFT JOIN {access} AS a ON a.element_id=e.id AND a.module_name='news' AND a.element_type='element'" : "")
      ." WHERE e.[act]='1' AND e.trash='0'"
      ." AND e.created<=%d AND e.date_start<=%d AND (e.date_finish=0 OR e.date_finish>=%d)"
      .($this->diafan->configmodules('where_access_element', 'news') ? " AND (e.access='0' OR e.access='1' AND a.role_id=".$this->diafan->_users->role_id.")" : '')
      ." AND e.site_id IN (".implode(",", $site_ids).")"
      ." ORDER BY e.created DESC, e.id DESC LIMIT ".$limit, $time, $time, $time);


      На это:
      Код

      $rows = DB::query_fetch_all("SELECT e.id, e.created, e.[name], e.[anons], e.site_id FROM {news} AS e"
      .($this->diafan->configmodules('where_access_element', 'news') ? " LEFT JOIN {access} AS a ON a.element_id=e.id AND a.module_name='news' AND a.element_type='element'" : "")
      ." WHERE e.[act]='1' AND e.trash='0'"
      ." AND e.created<=%d AND e.date_start<=%d AND (e.date_finish=0 OR e.date_finish>=%d)"
      .($this->diafan->configmodules('where_access_element', 'news') ? " AND (e.access='0' OR e.access='1' AND a.role_id=".$this->diafan->_users->role_id.")" : '')
      ." AND e.site_id IN (".implode(",", $site_ids).")"
      ." AND e.cat_id='%d'"
      ." ORDER BY e.created DESC, e.id DESC LIMIT ".$limit, $time, $time, $time, 'СЮДА номер категории');


      Если нужен отдельный rss канал, чтобы был общий и этот, сделайте копию файла, назовите его news.rss1.php, он будет доступен по ссылке news/rss1
      • 25 января 2019 г. , редакция: 25 января 2019 г.
      • Большое спасибо, работает.
  • 13 мая 2023 г.
  • Кто подскажет как быть с картинками, которые внутри текста. Миниатюры новостей валидатор находит в канал, тексты и прочее добавляет, но на картинки ругается, которые внутри текста новости (они по другому пути хранятся). Может скрыть их от него или отдельно добавить путь как-то?

Новости

  • Вчера, 09:05
  • В новой сборке совершили революцию в структурировании кастомизированной информации в шаблонах, добавили авторегистрацию пользователей, усовершенствовали защиту от спама, актуализировали накопительную скидку, а также улучшили производительность и стабильность работы системы.
  • 12 января
  • После выхода сборки 7.1 мы выпустили уже три патча, в каждом из которых улучшаем административную часть сайта. Сборка DIAFAN.CMS 7.1.3 уже доступна к установке. 
  • 15 декабря 2023 г.
  • Подводим итоги 2023 года. Выпустили новую сборку DIAFAN.CMS 7.1.1, вводим новые тарифы на аренду сайта и коммерческую поддержку и автообновления с января 2024 г., строим планы на будущий год.