+2.50
Рейтинг
7.43
Сила

Юриус

  • avatar jurius
  • 0
По ширине так и работает. Если не нужен ресайз по высоте — заменяем в функции BLOG_IMG_RESIZE_HEIGHT на null.
  • avatar jurius
  • 0
Да, уже обратился. Жду ответа, лог скину сюда или в отдельный топик.
  • avatar jurius
  • 0
Первый раз — в декабре. Второй — неделю или полторы назад. Третий — сегодня днем.
  • avatar jurius
  • 0
Печально конечно, но сайт в блогах Яндекса у меня так и не появился.
  • avatar jurius
  • 0
Или так :) Пасиб, вроде работает.
  • avatar jurius
  • 0

В итоге валидатор сказал мне: «This is a valid RSS feed.»
НО! Вопрос с почтой для авторов остается открытым.
Заменил шаблон index.tpl у rss:
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
        <title>{$aChannel.title}</title>
        <link>{$aChannel.link}</link>
        <atom:link href="http://www.controlmusic.ru/rss/" rel="self" type="application/rss+xml" />
        <description><![CDATA[{$aChannel.description}]]></description>
        <language>{$aChannel.language}</language>
        <managingEditor><![CDATA[{$aChannel.managingEditor} ({$aChannel.managingEditorName})]]></managingEditor>
        <generator>{$aChannel.generator}</generator>
{foreach from=$aItems item=oItem}
                <item>
                        <title><![CDATA[{$oItem.title|escape:'html'}]]></title>
                        <guid isPermaLink="true">{$oItem.guid}</guid>
                        <link>{$oItem.link}</link>
                        <description><![CDATA[{$oItem.description}]]></description>
                        <pubDate>{date_format date=$oItem.pubDate format="r"}</pubDate>
                        <author><![CDATA[{$oItem.author}@somesite.ru ({$oItem.author})]]></author>
                        <category><![CDATA[{$oItem.category|replace:',':']]></category>
                        <category><![CDATA['}]]></category>
                </item>
{/foreach}
</channel>
</rss>
 
  • avatar jurius
  • 1

У меня из ошибок выдает только:
<author>###</author>
Т.е. не хватает мыла пользователя. Но имхо это неправильно, почту юзверей открывать нельзя.

Остальное — рекомендации по вычищению из rss скриптов и object, добавление atom:link и объявление mime-типа контента как rss+xml.
  • avatar jurius
  • 0
В rss?
joesmith@example.com (Joe Smith) Будет валидным.
  • avatar jurius
  • 0
Хорошо, соглашусь. Но для меня это откровенно говоря неважно. Упоминание имени будет встречаться только на Яндексе, а нигде на сайте использовано не будет. Посему уж лучше будут логины.
  • avatar jurius
  • 2
Эээ. Я вообще только сейчас увидел, что тут еще и деньги дают. Не возьму, я за опенсорс ) Лучше отправьте их в копилку проекта LS. Кошельки тут написаны.
  • avatar jurius
  • 0
Не согласен. Если вы вовсю используете на сайте имена пользователей, то конечно такой вариант имеет право на жизнь. Я лично привык идентифицировать пользователя по его логину на любом сервисе. К примеру, на сайтах LS в комментариях пишется логин, а не имя.
  • avatar jurius
  • 3

Дописываем в Topic.entity.class.php:

        public function getRssUrl() {
                if ($this->getBlogType()=='personal') {
                return DIR_WEB_ROOT.'/rss/log/'.$this->getUserLogin().'/';
        } else {
                return DIR_WEB_ROOT.'/rss/blog/'.$this->getBlogUrl().'/';
        }
        }

и уже пинг используем так:
ping ("ping.blogs.yandex.ru/RPC2", $oTopic->getUserLogin(),$oTopic->getRssUrl());
  • avatar jurius
  • 0
Черт, я как-то этот момент упустил.
  • avatar jurius
  • 1

Закинул вот такую функцию в конец файла include/function.php:

function ping ($url, $blogname, $blogurl) {
    $tb_send='<?xml version="1.0" encoding="utf-8"?>
<methodCall>
    <methodName>weblogUpdates.ping</methodName>
<params>
<param>
            <value>'.$blogname.'</value>
        </param>
<param>
            <value>'.$blogurl.'</value>
        </param>
    </params>
</methodCall>';
 
    $target=parse_url($url);
 
    $tb_sock = fsockopen($target["host"],  80);
    fputs($tb_sock, "POST ". $target["path"]. $target["query"]. " HTTP/1.1\r\n");
    fputs($tb_sock, "User-Agent: The Incutio XML-RPC PHP Library (multicall client)\r\n");
    fputs($tb_sock, "Host: ". $target["host"]. "\r\n");
    fputs($tb_sock, "Content-Type: text/xml\r\n");
    fputs($tb_sock, "Content-length: ". strlen($tb_send). "\r\n");
    fputs($tb_sock, "Connection: close\r\n\r\n");
    fputs($tb_sock, $tb_send);
    // Gather result
    while (!feof($tb_sock)) {
        $response .= fgets($tb_sock, 128);
    }
    // Close socket
    fclose($tb_sock);
    // Did the trackback ping work
    strpos($response, '<error>0</error>')? $return = true: $return = false;
    // send result
    return $return;
}
 

В файле classes/modules/Topic/Topic.class.php дописал в методы AddTopic и UpdateTopic:
ping ("ping.blogs.yandex.ru/RPC2", $oTopic->getUserLogin(),$oTopic->getBlogUrlFull());

Ответ от сервера яндекса получаю OK. Отправляется соответственно логин оставившего пост и урл на обновленный блог. Как вариант — оставлять ссылку на конкретный элемент, но это можно сделать для комментариев.
  • avatar jurius
  • 1
Убедили. Сделаю — покажу.
  • avatar jurius
  • 1
Еще бы опцией в конфиг внести )
  • avatar jurius
  • 0
Ничто не мешает поставить ограничение на количество попыток.
  • avatar jurius
  • 0
Идеально конечно по крону раз в сутки всем неподтвержденным рассылать повторное письмо для активации. Функция будет очень полезна.