Модуль для экспорта в Яндекс.Новости

Аватар пользователя Dock@drupal.org Dock@drupal.org 11 марта 2010 в 18:10

Разработкой модуля занимался уже давно, тогда же и обещал выложить. Но шло время, а разработкой было заниматься некогда. Сейчас выкладываю рабочую версию модуля, которую в данный момент использую. Приглашаю к тестированию. По мере появления свободного времени буду дописывать.

Что сейчас позволяет делать модуль:

  1. Генерация страницы yandexnews.xml в формате годном для Яндекс.Новостей.
  2. Настройка выводимых в ленте материалов (количество, типы материалов).
  3. Настройка изображения для канала

Что ещё планируется сделать:

  1. Добавление к элементу item следующих вложенных элементов:
  • author
  • category
  • enclosure
  • yandex:genre
  • Создание плагина для Views
  • Публикация модуля на Drupal.org
  • Так же существует другой подобный модуль.
    Посмотреть его можно здесь: http://drupal.ru/node/25954

    Жду ваших отзывов:)

    UPD от 23.04.2010: обновлен модуль: теперь из описания и полного текста новости вырезаются все теги.
    UPD от 20.05.2010: обновлен модуль: улучшена очистка от тегов.

    ВложениеРазмер
    Иконка пакета yandexnews.zip9.96 КБ
    0 Thanks

    Комментарии

    Аватар пользователя SkyD SkyD 11 марта 2010 в 20:37

    Спасибо, идея крайне хороша!

    А подскажите, у вас уже есть сайт(-ы), где этот модуль работает и материалы с которого Я.Новости включают в свой поиск?

    Аватар пользователя Dock@drupal.org Dock@drupal.org 11 марта 2010 в 21:34

    Есть один. Пока работает в тестовом режиме и ссылку на него дать по политическим причинам не могу:) Думаю, через пару недель запущу официально, соответственно и ссылочку дам. А заодно и небольшой мануал, как я там все реализовал.

    Аватар пользователя nesca nesca 15 марта 2010 в 13:02

    спасибо за модуль!
    но осталась проблема с тэгами <p style="text-align: justify;"><strong><em>

    Аватар пользователя Dock@drupal.org Dock@drupal.org 15 марта 2010 в 13:41

    А что с ними за проблема? Яндекс их не запрещает, а rss reader'ы прекрасно понимает. Хотя я тоже думаю, что в description они лишние. Тогда с следующем релизе сделаю галочку, очищать от тегов или нет.

    Аватар пользователя nesca nesca 15 марта 2010 в 22:35

    Спасибо. эта проблема решена. просто rc модуля делал ленту, которую яндекс не принимал. письмо от них приходило, что надо чистить от тегов. Но теперь все прекрасно, новости начали индексироваться.
    еще раз спасибо. ждем теги авторов и категорий.

    Аватар пользователя SkyD SkyD 15 марта 2010 в 23:20
    "<a href="mailto:Dock@drupal.org">Dock@drupal.org</a>" wrote:

    Есть один. Пока работает в тестовом режиме и ссылку на него дать по политическим причинам не могу:)

    Если вы не против, нескромно поинтересуюсь:
    AFAIK, критерии приёма в Я.Новости достаточно жёсткие, как вы смогли добавить туда сайт, работающий в тестовом режиме?

    (или у вас какой-то невероятно уникальный контент?)

    Аватар пользователя Dock@drupal.org Dock@drupal.org 16 марта 2010 в 10:31
    "SkyD" wrote:
    "SkyD" wrote:

    Если вы не против, нескромно поинтересуюсь:
    AFAIK, критерии приёма в Я.Новости достаточно жёсткие, как вы смогли добавить туда сайт, работающий в тестовом режиме?

    (или у вас какой-то невероятно уникальный контент?)

    Просто сейчас есть сайт, транслировавший в Я.Новости очень давно и имеющий уникальный контент. Сейчас запускаю другой сайт, сделанный отдельно для новостей, которые раньше была на первом сайте. Так вот инфа дублируется и я отдаю яндексу поток, генерируемый тестовым сайтом. Вот так все запутано:)

    Аватар пользователя Dock@drupal.org Dock@drupal.org 16 марта 2010 в 10:37
    "afishi" wrote:

    простите. и опять я...
    что там на счет 5 варианта?

    Так как модуль делал для себя, то версии для 5-ки нет. Так что ничего обещать не могу, пока буду развивать под 6-ку, будет ли время делать версию для 5-ки не знаю.

    Аватар пользователя ingumsky@drupal.org ingumsky@drupal.org 30 марта 2010 в 23:20

    Спасибо. Поставил сегодня Ваш модуль, чтобы посмотреть, как он работает. Обратил внимание, что RSS-поток формируется из анонсов, хотя в требованиях Яндекса есть (было?) указание на то, что в материал должны включаться материалы целиком. Вы так и задумывали включать только анонсы?

    Аватар пользователя areafix areafix 5 апреля 2010 в 22:31

    Я делал Яндекс.Новости через views + views_node_feed + кастомный темплейт. К сожалению, views_node_feed так и не дотащили до 6ки, в следующем проекте придется скорее всего играться с views_datasource. Но все-таки такое решение выглядит более устойчивым, что ли, т.к. использует менее специализированные модули. Отдельный модуль под Яндекс будет жить ровно столько, сколько автору интересна эта задача.

    Аватар пользователя Dock@drupal.org Dock@drupal.org 16 апреля 2010 в 14:02
    "<a href="mailto:ingumsky@drupal.org">ingumsky@drupal.org</a>" wrote:

    Спасибо. Поставил сегодня Ваш модуль, чтобы посмотреть, как он работает. Обратил внимание, что RSS-поток формируется из анонсов, хотя в требованиях Яндекса есть (было?) указание на то, что в материал должны включаться материалы целиком. Вы так и задумывали включать только анонсы?

    RSS-поток формируется верно. В тег description (показывается в RSS-ридерах) отображается лишь краткое сожержание, а в yandex:full-text вся нода целиком.

    Аватар пользователя Dock@drupal.org Dock@drupal.org 16 апреля 2010 в 14:05
    "areafix" wrote:

    Я делал Яндекс.Новости через views + views_node_feed + кастомный темплейт. К сожалению, views_node_feed так и не дотащили до 6ки, в следующем проекте придется скорее всего играться с views_datasource. Но все-таки такое решение выглядит более устойчивым, что ли, т.к. использует менее специализированные модули. Отдельный модуль под Яндекс будет жить ровно столько, сколько автору интересна эта задача.

    Если будет мануал по описанному решению буду очень рад, на самом деле это будет более универсально. Хотя специализированные модули иногда удобней тем, что развертывание занимает пару минут. Времени на развития модуля у меня почти нет, поэтому прогресс будет идти очень медленно:(

    Аватар пользователя areafix areafix 20 апреля 2010 в 1:37
    <a href="mailto:Dock@drupal.org">Dock@drupal.org</a> wrote:

    Если будет мануал по описанному решению буду очень рад, на самом деле это будет более универсально. Хотя специализированные модули иногда удобней тем, что развертывание занимает пару минут. Времени на развития модуля у меня почти нет, поэтому прогресс будет идти очень медленно:(

    Ну, 2 года назад это выглядело так:

    1. Ставим drupal, views, views_node_feed.
    2. Читаем ТЗ Яндекса и настраиваем темплейт для views_node_feed. На тот момент Яндекс не хотел категорий и чего-то там еще, в общем, тогда было актуально следующее:

    Шапка (Wrapper template):

    <?xml version="1.0" encoding="UTF-8"?>
    <rss version="2.0" xmlns="http://backend.userland.com/rss2" xmlns:yandex="http://news.yandex.ru">
            <channel>
                    <title>Новости издательского дома Рога и Копыта</title>
                    <link>http://roga-kopyta.ru/</link>
                            <description>Профессиональные издания для пастухов, животноводов, работников крайнего севера и специалистов копытного учета</description>
                    <image>
                            <url>http://roga-kopyta.ru/<? print base_path() . path_to_theme() ?>/images/logo-100.gif</url>
                            <title>Новости издательского дома Рога и Копыта</title>
                            <link>http://roga-kopyta.ru/</link>
                    </image>
    <? ***VIEWS_NODE_FEED_ITEMS*** ?>
    </channel>
    </rss>

    Тушка (Node Template):

    <?
    function yastr($node_text) {
            $output = str_replace('&#039;', '&apos;', htmlspecialchars(preg_replace(array('/&nbsp;/', '/<!--break-->/', '/&laquo;/', '/&raquo;/', '/&ndash;/', '/&ldquo;/', '/&rdquo;/'), array(' ', '', '&amp;laquo;', '&amp;raquo;', '&amp;ndash;', '&amp;ldquo;', '&amp;rdquo;'), $node_text), ENT_COMPAT, $charset = 'UTF-8', FALSE))
            return $output;
    }
    $out = '';
    $address = 'http://roga-kopyta.ru';
    if ($node->nid) {
            $out = '                <item>'."\n";
            $out .= '                       <title>'. htmlspecialchars($node->title) .'</title>'."\n";
            $out .= '                       <link>'. htmlspecialchars($address .'/'. $node->path) .'</link>'."\n";
            if ($node->print_display == '1') {
                    $out .= '                       <pdalink>'. htmlspecialchars($address .'/print/'. $node->nid) .'</pdalink>'."\n";
            }
            $out .= '                       <description>'. yastr($node->teaser) .'</description>'."\n";
            $out .= '                       <pubDate>'. t('!date', array('!date' => format_date($node->created, 'custom',  "r", NULL, 'en')), 'en') .'</pubDate>'."\n";
            $out .= '                       <yandex:full-text>'. yastr($node->body) .'</yandex:full-text>'."\n";
            $out .= '               </item>'."\n"
    }
    print   $out;
    ?>

    3. Далее делаем views с каким нибудь именем и добавляем туда:

    а) Отображение - feed.
    б) Style - Views Node Feed, в настройках выбираем нужный темплейт.
    в) Путь - ну что-нибудь, например /yandex
    г) Сортировка: Материал: Post date asc
    д) Фильтры:
    Материал: Тип = Новость.
    Материал: Опубликовано Да
    Материал: Post date > -7 day
    е) Потом пишем письмо в Яндекс и просим проверить, как работает http://roga-kopyta.ru/yandex. По мере их ответов наращиваем содержимое массивов в функции yastr() в шаблоне. В какой-то момент обе стороны устают спорить и сходятся на том, что есть, в http://roga-kopyta.ru/yandex начинают бежать настоящие новости, а Яндекс разрождается инструкцией, что публикация ссылок на источники теперь в тушке фида допустима и еще какими-то послаблениями.

    Все это для 5-го Друпала и тех правил Яндекса. Новые правила, думаю, легко решатся доп. полями, а чем заменить views_node_feed - придется подумать. В крайнем случае, у них там валяется вне репрозиторя работающий порт под 6ку с предложением помочь, но в целом это не лучше, чем писать модуль самому.

    На следующей неделе буду менять сайт под Жумлой на новую версию на Друпале6, придется решать эту задачу снова, по итогу могу написать.

    Аватар пользователя ingumsky@drupal.org ingumsky@drupal.org 18 апреля 2010 в 19:19
    "<a href="mailto:Dock@drupal.org">Dock@drupal.org</a>" wrote:

    RSS-поток формируется верно. В тег description (показывается в RSS-ридерах) отображается лишь краткое сожержание, а в yandex:full-text вся нода целиком.

    Спасибо. Мне даже в голову не пришло внимательно посмотреть на сам XML.

    Аватар пользователя ingumsky@drupal.org ingumsky@drupal.org 20 апреля 2010 в 16:01

    М-м-м... А как бы сделать так, чтобы материалы, отмеченные определённым термином таксономии, не попадали в фид? У меня, например, есть термин «новости сайта», и я понимаю, что это не то, что нужно Яндексу :)

    Аватар пользователя Dock@drupal.org Dock@drupal.org 23 апреля 2010 в 13:55

    Пока с помощью этого модуля - никак. Можно воспользоваться модулем, ссылка на который есть в конце моего поста. Он как раз отбирает материалы по таксономии. Ну или пробовать вариант с Views, предложенный выше. В ближайшем времени модуль обновляться не будет.

    Аватар пользователя PVasili PVasili 20 мая 2010 в 23:55

    areafix - спасибо за наводк.
    Сделал в Views Datasource XML вывод во вьюхе.
    DEV кривая пока, да и в 3-й альфе [##803186]косяк детский живет[/##] но уже можно использовать... Завтра для всех ньюсов пропишу...

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

    Аватар пользователя ingumsky@drupal.org ingumsky@drupal.org 21 мая 2010 в 0:05
    "PVasili" wrote:

    areafix - спасибо за наводк.
    Сделал в Views Datasource XML вывод во вьюхе.
    DEV кривая пока, да и в 3-й альфе косяк детский живет но уже можно использовать... Завтра для всех ньюсов пропишу...

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

    Да, я тоже присматривался к Views datasource, но понял, что мне, вероятно, не хватит знаний, чтобы превратить это в полноценное решение.

    Аватар пользователя Dock@drupal.org Dock@drupal.org 21 мая 2010 в 9:06
    "PVasili" wrote:

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

    В том, чтобы не использовать другие модули, функционал которых излишен и вряд ли в дальнейшем понадобится, плюс легче в использовании:) Начал писать плагин для views и теперь думаю, может ну его и использовать Views datasource?

    Аватар пользователя PVasili PVasili 21 мая 2010 в 9:58

    ingumsky@drupal.org там нет абсолютно ничего сложного

    "<a href="mailto:Dock@drupal.org">Dock@drupal.org</a>" wrote:

    В том, чтобы не использовать другие модули, функционал которых излишен

    это у views излишен? На большинстве сайтов он ставится как родной по умолчанию ;).

    "<a href="mailto:Dock@drupal.org">Dock@drupal.org</a>" wrote:

    думаю, может ну его и использовать Views datasource

    там малость косяки в альфе 3.

    Аватар пользователя skiller_07 skiller_07 21 июня 2010 в 8:56

    Подскажите пожалуйста, а можно как то это сделать отдельным скриптом, то есть без модуля, чтобы просто был файл, который генерирует rss для yandexa

    Аватар пользователя areafix areafix 29 июня 2010 в 15:49
    "skiller_07" wrote:

    можно как то это сделать отдельным скриптом

    Можно.

    "skiller_07" wrote:

    то есть без модуля, чтобы просто был файл

    Можно.

    ...но это долго, несовместимо, неудобно и много-много строчек кода.

    Аватар пользователя sergebw@drupal.org sergebw@drupal.org 12 июля 2010 в 14:04

    Как я делаю RSS.xml для Яндекса с помощью views

    1. установил модуль Views Datasource
    2. разрешил в модулях Views XML
    3. создал представление (назвал yandex_rss)
    Основные настройки
    Стиль: XML data document
    Взаимосвязи
    Таксономия: Материал
    Поля
    Материал: Заголовок
    Материал: Путь
    Материал: Краткая аннотация
    Пользователь: Имя
    Таксономия: Термин
    Материал: Дата создания
    Материал: Содержимое
    Критерии сортировки
    Материал: Дата создания убыв.
    Фильтры
    Материал: Тип = Заметка
    Таксономия: Термин Ни один из - список термины из словаря ...
    (так как показывать надо было материалы входящие в 7 терминов из 10)
    4. Добавляю Представление "Страница"
    Настройки страницы
    Путь: yandexrss.xml

    5. Копирую файл views-views-xml-style.tpl.php из папки my_site/sites/all/modules/views_datasource/theme
    в папку my_site/sites/all/themes/-Тема-/ с названием views-views-xml-style--yandex-rss.tpl.php

    6. перехожу в подпункт - Основные настройки - Тема: Информация
    жму кнопку "Пересканировать файлы шаблонов"

    7. в файл views-views-xml-style--yandex-rss.tpl.php
    помещаю код:


    <?php
    // $Id $
    /**
     * file views-views-xml-style.tpl.php
     * If you want to override the style theme switcher in views_views_xml_style.theme.inc use this file and add
     * a template = views-views-xml-style.tpl.php to the theme declaration for views_views_xml_style.
     *
     * - $view: The View object.
     * - $rows: Array of row objects as rendered by _views_xml_render_fields 
     *
     * ingroup views_templates
     */

    xml_raw_render($view);

    function 

    xml_raw_render($view) {

    $htmlEntities = array
    (
    '&quot;','&amp;','&amp;','&lt;','&gt;','&nbsp;','&iexcl;','&cent;','&pound;','&curren;','&yen;',
    '&brvbar;','&sect;','&uml;','&copy;','&ordf;','&laquo;','&not;','&shy;','&reg;','&macr;','&deg;',
    '&plusmn;','&sup2;','&sup3;','&acute;','&micro;','&para;','&middot;','&cedil;','&sup1;','&ordm;',
    '&raquo;','&frac14;','&frac12;','&frac34;','&iquest;','&Agrave;','&Aacute;','&Acirc;','&Atilde;',
    '&Auml;','&Aring;','&AElig;','&Ccedil;','&Egrave;','&Eacute;','&Ecirc;','&Euml;','&Igrave;',
    '&Iacute;','&Icirc;','&Iuml;','&ETH;','&Ntilde;','&Ograve;','&Oacute;','&Ocirc;','&Otilde;',
    '&Ouml;','&times;','&Oslash;','&Ugrave;','&Uacute;','&Ucirc;','&Uuml;','&Yacute;','&THORN;',
    '&szlig;','&agrave;','&aacute;','&acirc;','&atilde;','&auml;','&aring;','&aelig;','&ccedil;',
    '&egrave;','&eacute;','&ecirc;','&euml;','&igrave;','&iacute;','&icirc;','&iuml;','&eth;',
    '&ntilde;','&ograve;','&oacute;','&ocirc;','&otilde;','&ouml;','&divide;','&oslash;','&ugrave;',
    '&uacute;','&ucirc;','&uuml;','&yacute;','&thorn;','&yuml;','&ndash;');

    $xmlEntities   = array
    (
    '&#34;','&#38;','&#38;','&#60;','&#62;','','&#161;','&#162;','&#163;','&#164;','&#165;','&#166;',
    '&#167;','&#168;','&#169;','&#170;','&#171;','&#172;','&#173;','&#174;','&#175;','&#176;','&#177;',
    '&#178;','&#179;','&#180;','&#181;','&#182;','&#183;','&#184;','&#185;','&#186;','&#187;','&#188;',
    '&#189;','&#190;','&#191;','&#192;','&#193;','&#194;','&#195;','&#196;','&#197;','&#198;','&#199;',
    '&#200;','&#201;','&#202;','&#203;','&#204;','&#205;','&#206;','&#207;','&#208;','&#209;','&#210;',
    '&#211;','&#212;','&#213;','&#214;','&#215;','&#216;','&#217;','&#218;','&#219;','&#220;','&#221;',
    '&#222;','&#223;','&#224;','&#225;','&#226;','&#227;','&#228;','&#229;','&#230;','&#231;','&#232;',
    '&#233;','&#234;','&#235;','&#236;','&#237;','&#238;','&#239;','&#240;','&#241;','&#242;','&#243;',
    '&#244;','&#245;','&#246;','&#247;','&#248;','&#249;','&#250;','&#251;','&#252;','&#253;','&#254;',
    '&#255;','&#8211;');

    global 

    $base_url;
    $xml .= '<?xml version="1.0" encoding="UTF-8"?>'."\n";
    $xml .= '<rss version="2.0" xmlns="http://backend.userland.com/rss2" xmlns:yandex="http://news.yandex.ru">'."\n";
    $xml .= '<channel>'."\n";
    $xml .= "   <title>".variable_get('site_name''drupal').'</title>'."\n";
    $xml .= "   <link>".$base_url.'</link>'."\n";
    $xml .= "   <description>Описание сайта</description>\n";
    $xml .= "   <language>ru</language>\n";
    $xml .= "   <image>\n";
    $xml .= "         <url>".$base_urlbase_path() . path_to_theme() ."/images/yn-logo.gif</url>\n";
    $xml .= "         <title>".variable_get('site_name''drupal').'</title>'."\n";
    $xml .= "         <link>".$base_url.'</link>'."\n";
    $xml .= "    </image>"."\n";
      
    foreach (
    $view->result as $node) {
        
    $xml .= '  <item>'."\n";   
        foreach(
    $node as $label => $value) {
          if (
    is_null($value) || ($value === ''))                 continue;
          if (
    strtolower($label) == 'nid')                    continue; 
          if (
    strtolower($label) == 'term_data_vid')            continue; 
          if (
    strtolower($label) == 'term_data_tid')            continue; 
          if (
    strtolower($label) == 'node_revisions_format')    continue; 
          if (
    strtolower($label) == 'users_uid')                continue; 
                
          
    $label str_replace('_value'''str_replace("profile_values_profile_"''$label)); //strip out Profile: from profile fields
          
    $label str_replace('_value'''str_replace("node_data_field_feature_image_field_feature_"''$label)); //strip out node_data_field_feature_image_field_feature from labels
            //added code to replace html entities with xml safe entities
            
    $value str_replace($htmlEntities,$xmlEntities,$value);
            
    $value str_ireplace($htmlEntities,$xmlEntities,$value);
            
    $value preg_replace ("'<script[^>]*?>.*?</script>'si"""$value); // removes javascript
            
    $value preg_replace ("'<[\/\!]*?[^<>]*?>'si"""$value);// removes html tags
            
    $value preg_replace ("'([\r\n])[\s]+'""\\1"$value); // removes free space

          

    if ((strtolower($label) == 'title')  || (strtolower($label) == 'node_title')) $label "title";  
          if  (
    strtolower($label) == 'path'$label "link";
          if  (
    strtolower($label) == 'node_revisions_teaser'$label "description";
          if  (
    strtolower($label) == 'users_name')         $label "author";
          if ((
    strtolower($label) == 'data_name') || (strtolower($label) == 'term_data_name')) $label "category";        
          if ((
    strtolower($label) == 'published')      || (strtolower($label) == 'node_created'))   {    $label 'pubDate';
             if (
    intval($value))         //timestamp
                    
    $value =  date(DATE_RFC822intval($value)) ;
             else if(
    getdate($value))     //string date
                    
    $value date(DATE_RFC822strtotime($value)); 
          }  
          if ((
    strtolower($label) == 'text') || (strtolower($label) == 'node_revisions_body'))
            
    $label "yandex:full-text";

            
          

    $xml .= "    <$label>".trim($value)."</$label>\n";
        }
      
    $xml .= '  </item>'."\n";
      }
      
    $xml .='</channel>'."\n";
      
    $xml .='</rss>'."\n";
      if (
    $view->override_path//inside live preview 
            
    print htmlspecialchars($xml);
      else {  
           
    drupal_set_header('Content-Type: text/xml');
           print 
    $xml;
           
    module_invoke_all('exit');
           exit;
      }
    }
    ?>

    8. Сохраняю представление и по ссылке my_site/yandexrss.xml получаю рсс поток

    Огромная просьба к гуру:

    не смог разобраться как добавить к каждому пункту item ссылку (link)

    Подскажите пожалуйста как это сделать?

    Аватар пользователя PVasili PVasili 9 июля 2010 в 22:42
    "<a href="mailto:sergebw@drupal.org">sergebw@drupal.org</a>" wrote:

    не смог разобраться как добавить к каждому пункту item ссылку (link)
    Подскажите пожалуйста как это сделать?

    Делалось малость по другому и попроще :), думаю из кода понятно будет:

    <?php
        $xml 
    .= '    <link>'check_url(url('node/'.$val->nid, array('absolute' => TRUE,))). "</link>\n";      // адрес материала
    ?>
    Аватар пользователя ingumsky@drupal.org ingumsky@drupal.org 10 июля 2010 в 16:18
    "PVasili" wrote:

    Нужно посмотреть, ибо в альфе было полно косяков в стиле: http://drupal.org/node/803186 Что делало её практически неработоспособной.

    Да, я читал ещё когда Вы в прошлый раз кидали ссылку на багрепорт.

    Аватар пользователя sergebw@drupal.org sergebw@drupal.org 12 июля 2010 в 12:43
    "PVasili" wrote:

    <?php
    $xml .= ' '. check_url(url('node/'.$val->nid, array('absolute' => TRUE,))). "\n"; // адрес материала
    ?>

    Возможно и проще, но у меня почему то не получается :( вставил вот этот код

    <?php
        $xml 
    .= '    <link>'check_url(url('node/'.$label->nid, array('absolute' => TRUE))). "</link>\n";      // адрес материала
    ?>

    ссылка появляется, но не та что нужно
    http://my_site.ua/node

    без темизации ссылки выводятся:

    <title>В Ровенской области перевернулся микроавтобус</title>
        <path>http://my_site.ua/content/proisshestviya/10310v-rovenskoi-oblasti-perevernulsya-mikroavtobus-travmirovano-tri-chelovek</path>
        <teaser>Сегодня, в начале первого часа ...</teaser>
        <name>Автор</name>
        <created>Понедельник, 14 июня, 2010 - 10:15</created>
        <body>Сегодня, в начале первого часа, на Ровенщине, на 269 км автодороги Киев-Чоп, водитель микроавтобуса ....</body>

    после применения шаблона темизации, ссылки пропадают:

      <item>
        <link>http://my_site.ua/node/</link>
        <title>В Ровенской области перевернулся микроавтобус</title>
        <description>Сегодня, в начале первого часа....</description>
        <author>Автор</author>
        <category>Происшествия</category>
        <pubDate>Mon, 14 Jun 10 10:15:46 +0300</pubDate>
        <yandex:full-text>Сегодня, в начале первого часа, на Ровенщине, на 269 км автодороги Киев-Чоп, водитель микроавтобуса....</yandex:full-text>
      </item>

    что делать?
    может это еще один баг Views datasource ? (стоит версия дев от 11.07.2010)

    Аватар пользователя sergebw@drupal.org sergebw@drupal.org 13 июля 2010 в 12:44

    Яндекс требует структуру (внутреннюю)

    <item>
        <title></title>
        <link></link>
        <description></description>
        <author></author>
        <category></category>
        <pubDate></pubDate>
        <yandex:full-text></yandex:full-text>
      </item>

    так вот этот link (адрес материала) у меня и не получается вывести.
    в выводе вьювс он называется path и выводится, а после применения шаблона темизации - нет.
    уже голову сломал :(

    Аватар пользователя PVasili PVasili 13 июля 2010 в 15:17
    "<a href="mailto:sergebw@drupal.org">sergebw@drupal.org</a>" wrote:

    уже голову сломал :(

    а чего ломать? Среди выводимых по материалу полей должно быть с NID материала. Его и подставляете в функцию, для получения адреса.

    Аватар пользователя sergebw@drupal.org sergebw@drupal.org 13 июля 2010 в 16:02

    Все получилось, спасибо, надо было в таком виде подставлять:

    $xml .= "    <link>". url('node/'.$value, array('absolute' => TRUE)). "</link>\n";      // адрес материала
    Аватар пользователя PVasili PVasili 13 июля 2010 в 16:14

    Я писал, нужно свои данные. Для подстановки в функцию: нужно ID материала.

    Аватар пользователя sergebw@drupal.org sergebw@drupal.org 10 ноября 2015 в 11:46
    "PVasili" wrote:

    Я писал, нужно свои данные. Для подстановки в функцию: нужно ID материала.

    Спасибо, все получилось. теперь работает. файл в аттаче views-views-xml-style--yandex-rss.tpl.php (если кому интересно).

    убрал из настроек представления: Поля - Материал: Путь

    Аватар пользователя kodo kodo 27 августа 2010 в 15:18
    "<a href="mailto:sergebw@drupal.org">sergebw@drupal.org</a>" wrote:

    Спасибо, все получилось. теперь работает. файл в аттаче views-views-xml-style--yandex-rss.tpl.php (если кому интересно).

    Вот и я добрался до Яндекс новостей. Буду пробовать, спасибо шаблон :)

    Аватар пользователя kadut kadut 8 марта 2011 в 22:55

    Здравствуйте, использовал этот модуль.
    Подскажите, пожалуйста, как убрать тег на формирование pda/palm/wap/кпк-версии сообщения (тег pdalink). У меня нет таких версия сайта и тех. поддержка яндекса попросила удалить этот тег.

    Аватар пользователя afishi afishi 8 апреля 2011 в 23:08

    ребята, а как прописать вот так
    (Кроме того, информацию о датах Яндекс получает, разбирая адреса страниц (URL). Дата может содержаться в URL в виде определенного шаблона, например /yyyy/mm/dd/ или /yyyy-mm-dd/.

    Если на вашем сайте есть новостная лента и вы хотели бы, чтобы наши алгоритмы определили даты новостных сообщений, настройте формирование URL так, чтобы в нем явным образом присутствовала дата (например, одним из указанных выше способов). Даты будут извлекаться при индексировании страниц поисковым роботом. Никаких дополнительных действий от вас не потребуется.)
    http://help.yandex.ru/webmaster/?id=1112775

    можно вот тут ......admin/settings/pathauto

    Шаблон для всех адресов материалов типа Новость:
    прописать что-то такое? news/[yyyy-mm-dd]

    какой собрать?
    [yyyy]
    Node creation year (four digit)
    [yy]
    Node creation year (two digit)
    [month]
    Node creation month (full word)
    [mon]
    Node creation month (abbreviated)
    [mm]
    Node creation month (two digit, zero padded)
    [m]
    Node creation month (one or two digit)
    [ww]
    Node creation week (two digit)
    [date]
    Node creation date (day of month)
    [day]
    Node creation day (full word)
    [ddd]
    Node creation day (abbreviation)

    news/[yyyy-mm-dd]
    news/[yyyy]/[mm]/[day]

    Так можно?

    Аватар пользователя ben6010 ben6010 23 августа 2012 в 12:19

    Подскажите пжл, мне нужно, чтобы можно было выбирать новость (ставить чекбокс например) и чтобы эта новость генерировалась в файл yandex.xml с необходимыми требованиями для яндекса... Этот модуль позволяет такое сделать? Я его скачал, скопировал в папку /sites/all/modules/yandexnews , затем в админке этот модуль включил. Но никаких изменений не заметил, при просмотре новости (в админке) никаких дополнительных чекбоксов не появилось, например "Публиковать в Yandex?". Может что то ещё нужно ставить? Или я вообще не то выбрал? Подскажите плз, я в друпале 0, не работал раньше с ним, а тут вдруг пришлось вот такую плюшку реализовать.

    Аватар пользователя ben6010 ben6010 23 августа 2012 в 12:32

    RxB,
    В смысле такое реализовать невозможно? Я знаю как сгенерировать все элементы в файл .xml, а нужно, чтобы генерировались только выбранные элементы. Этот модуль не подходит для таких целей?