Перейти к контенту

[1.x.x]RSS For Yandex и не только


helpix

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

Название: RSS For Yandex и не только

Добавил: helpix

Добавлен: 24 Дек 2004

Обновлен: 24 Дек 2004

Категория: IP.Board 1.x.x

 

Выдает последние сообщения, опубликованны в форуме, в rss

 

Шаблон выдачи зашит внутри функции do_lastposts. Там же определяются количество элементов для выдачи и "служебные форумы", в которых сообщения трогать не надо.

 

Сделано было мною для добавления форума в яндексовский поиск по форумам и блогам.

 

Сделано на основе мода

"Блок последних сообщений из форума IBF для PHP-Nuke"

 

Инструкция: Переименовать файл в yandex.php, положить в корень форума.

 

Скормить Яндексу url

http://yourdomain.ru/forum/yandex.php

 

Проверялось только на версии форума 1.3.1. Вполне возможно, что будет работать на 1.1 и 1.2.

 

Прошу прощения за неаккуратность кода - php не знаю http://www.ibresource.ru/forums/html/emoticons/smile.gif

 

Замечания приветствуются.

 

 

Нажмите здесь, чтобы скачать файл

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

  • Ответы 90
  • Создана
  • Последний ответ

Лучшие авторы в этой теме

Лучшие авторы в этой теме

как уже говорил на версии 1.2 наблюдаеться глюк_сЪ в сроке

 

function load_words($current_lang_array, $area, $lang_type) {
    
        require "lang/".$lang_type."/".$area.".php";

 

файла functions.php так выглядят строки моего файла поскольку форум расположен в корневой директории. остальным вместо ROOT_PATH установить путь ручками.

 

скрипт продолжает тестироваться под FeedDemon.

 

автору спасибо которое не булькает :D

Добавлено в [mergetime]1103900121[/mergetime]

тьху ... второй раз на те же грабли с lo-fi.

 

function load_words($current_lang_array, $area, $lang_type) {
    
        require "/home/clients/board/www/lang/en/".$area.".php";

 

/home/clients/board/www/lang/en/ /* заменить на свой путь к файлу с русскими датами*/

Добавлено в [mergetime]1103902119[/mergetime]

что бы не мучались, что бы добавить иконку RSS для отображения броузером рихтуем шаблон форума добавляя строчку

 

<link rel="alternate" type="application/rss+xml" title="RSS" href="http://you_forum.net/yandex.php">

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

Сделано плохо.

Писать id разделов в коде очень плохой подход.

Называется "разводить сопли".

Попробую я его поправить.

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

Вот значит что у меня получилось.

Правда я сначала писал для своего форума, а потом переводил для стандартных, поэтому может чего не заметил, говорите.

 

Только предупреждаю всех у кого стоят моды скрытия чего-либо: ссылок, части постов и прочего (моды HIDE, SPOIL и прочие), все эти моды в RSS работать не будут!

Всё что вы скрываете в общедоступных форумах, будет видно в поисковой машине.

yandex.zip

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

Dekker

ааа.. понял.

Это у меня $DB->connect переписан.

Ну тогда либо

 

1) Убери проверку на $DB->connect в скрипте

2) либо сделай $DB->connect как у меня

 

    function connect() {

   	if ($this->obj['persistent'])
   	{
	$this->connection_id = mysql_pconnect( $this->obj['sql_host'] ,
					       $this->obj['sql_user'] ,
					       $this->obj['sql_pass'] 
					);
       } else
       {
	$this->connection_id = mysql_connect( $this->obj['sql_host'] ,
					      $this->obj['sql_user'] ,
					      $this->obj['sql_pass'] 
					);
}

       if ( !mysql_select_db($this->obj['sql_database'], $this->connection_id) )
       {
           echo ("ERROR: Cannot find database ".$this->obj['sql_database']);
    return FALSE;
       }

return TRUE;
   }

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

Song

$to_require = $root_path."sources/Drivers/".$INFO['sql_driver'].".php";

В двушке НЕТ такой директории... Что делать? Пишет

Fatal error: Cannot instantiate non-existent class: session in /pub/home/путь/файл.php on line 41

стр.41

$sess  = new session();

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

так, внял, дело оказалось в функции old_get_date, на самом деле у меня такая функция не описана, у меня описана get_date поэтому и срабатывала проверка $DB->connect на FALSE
Ссылка на комментарий
Поделиться на других сайтах

так, внял, дело оказалось в функции old_get_date, на самом деле у меня такая функция не описана, у меня описана get_date поэтому и срабатывала проверка $DB->connect на FALSE

Dekker

при всём уважении, но вдумайся чего ты пишешь :D

 

Проверка $DB->connect идёт раньше.

Поэтому до old_get_date оно даже не доходило.

А когда сделаешь чтоюы connect*() возвращала резльтат, вот тогда открывается второй глюк. Да действительно забыл я ;)

переименовать old_get_date в get_date.

Сейчас обновлю файл.

Добавлено в [mergetime]1104337212[/mergetime]

Наблюдатель

Что делать?

открой index.php посмотри как там сделано подключение к БД и авторизация.

Добавлено в [mergetime]1104337460[/mergetime]

Dekker

обновил файл в RSS For Yandex и не только

 

Попробуй.

Теперь должно работать без правок драйвера.

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

Song

у меня последний день раздачи корпоративных заказов, так что думать тяжело :D

 

Попробуй. Теперь должно работать без правок драйвера.

спасибо, попробуем. завтра отпостю результаты, сегодня сил нет и не предвидиться.

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

Всё ясно... Многие поля БД не соответствуют полям двушки. Почти добился работоспособности, но... что делать с forum_id, который напрочь отсутствует в базе? - вопрос риторический, т.к. я совершенно не рублю в пхп-писании и мне это просто не по силам - нужно весь скрипт переписывать...

 

Может есть фанаты, которые сподвигнуться на ентот подвиг?

 

Ну и ладно... :D

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

Если кому интересно. Для IPB 2.0 в приложенном файле.

 

А по версии для 1.х....

Заменили бы функцию parse_template.

75 постов по 10 preg_replace на каждый.... Не красиво... ;)

 

Song

А какой смысл в авторизации ? Мож я че не догоняю... :D

rss_ipb.zip

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

Вот кто бы еще и для второй версии сделал такую вещь.

Во втором ssi.php для этих целей может служить...

 

И кстати служит вполне прилично.

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

urisoft, спасибо! Отлично работает... на одной конфе... А на

второй какой-то глюк - может глянешь?

Хотя, в агрегаторе всё это смотрится, и даже картинки показывает... Правда цитаты, которые множественные... некрасивенько, но... в принципе... и так пойдёт, хотя... нужно дорабатывать... рамочку им что-ли припендюривать...

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

SphinX

Во втором ssi.php для этих целей может служить...

И кстати служит вполне прилично.

Таки точно... :D

И в 1.3 также в ssi.php все есть ;)

 

Правда неудобные ссылки получаются. ?a=out&f=1,2,3,4,5,6,......&show=10&type=rss :)

Но работает вроде.

 

Song

Понял я про авторизацию. :) Не теми прогами пользовался (без IE и Мозилы).

 

Добавлено в [mergetime]1104398225[/mergetime]

Наблюдатель

А на

второй какой-то глюк - может глянешь?

Про смайлы я забыл <#EMO_DIR#> остается в посте.

Обновил я файлик. (В посте выше).

Теперь и авторизация должна работать.

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

?a=out&f=1,2,3,4,5,6,......&show=10&type=rss

Зато можно ссылкой формировать список форумов, из которых нужно эскпортировать новости. Полезно бывает, можно каждому новостному разделу свою фиду сделать.

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

А какой смысл в авторизации ? Мож я че не догоняю...

не всем пользователям все форумы доступны.

В моей правке этого мода авторизация используется как способ отсечь недопустимые к просмотру текущим юзером форумы.

Добавлено в [mergetime]1104407926[/mergetime]

но... что делать с forum_id, который напрочь отсутствует в базе? -

Достать его из ibf_topics, а последний связать с ibf_posts по topic_id

Но в этом случае тогда вся моя оптимизация идёт к чертям, т.к. своей правкой я стремился убрать все сложные запросы, разбив их на маленькие + использование массивов и добился кстати своего.

Сложным запросом ibf_topics + ibf_posts у меня тот запрос выполнялся за 8..10 секунд, а после оптимизации вся группа запросов стала работать 2 секунды.

Вообще от связки ibf_posts + ibf_topics нужно отказываться везде где это возможно.

При больших этих таблицах мускул просто впадает в ступор и тормозит всю очередь запросов.

Поэтому, urisoft, я до сих пор смотрю с большим ужасом на твой мод Topic Hints :D где ты их проджойнил 3!!! раза.

То что вы запустили этот скрипт один раз он отработал за 2..10 секунд и всё ок, ещё ничего не говорит. Вы ж не знаете с какой частотой яндекс будет его запускать!? А если он будет бомбордировать вашу БД заходя на RSS каждую минуту? Что тогда будет с форумом? Правильно, он будет работать полностью на Яндекс.

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

Song

не всем пользователям все форумы доступны.

В моей правке этого мода авторизация используется как способ отсечь недопустимые к просмотру текущим юзером форумы.

Это понятно. Просто программы которые я использовал для просмотра имели свой интерфейс для доступа в инет и не умели работать с куками. В этом случае не понятно как будет проходить авторизация и зачем она тогда вообще нужно (достаточно использовать права группы гостей). А оказалось, что есть куча прог использующих IE и Мозилу в которых все работает на ура. ;) Админ видит что ему положено, а гость соответственно что положено ему.

 

где ты их проджойнил 3!!! раза.

Не 3 раза, а 2 раза :)

Разберемся с хинтами. Скрипт генерации тем, постов и мемберов затер у себя. Напишу заново и потестирую. :)

 

А по поводу скрипта выложенного тут.... Ну кто не уверен в достаточном быстродействии и кому "кажется", что скрипт тормозит, найдите в скрипте строку:

define( 'USE_DEBUG', 0 );

и замените на:

define( 'USE_DEBUG', 1 );

После чего в rss ленте появиться сообщение с заголовком Debug Info, в котором будет время выполнения скрипта и количество запросов. Эхплайны запросов можно будет увидеть добавив в браузере ?debug=1 к имени скрипта. Подтвердите свои догадки реальными фактами :)

 

у меня тот запрос выполнялся за 8..10 секунд

А ты циферки не попутал ? Секунд ??? :D

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

Подтвердите свои догадки реальными фактами

Script Execution time: 0.0444

 

Кстати, Яндекс и прочие боты постоянно пасутся у меня на конфе и я не вижу смысла юзать новую фичу Яндекса по поиску на конфах и в блогах - боты делают своё дело и без этого... Зато с RSS, как это сделал Юрисофт, юзеры писают кипятком просматривая новые сообщения через свои агрегаторы. Я юзаю через RSS-плагин к Мозилле - Aggreg8 и... не вижу дат сообщений. Т.е. мне думается, что для повышения комфорта юзера нужно улучшать "вид" отображения в их агрегаторах.

 

Такой продукт вполне можно продавать админам - он будет пользоваться популярностью... Зная позицию Юрисофта по этому вопросу, могу предложить ему стандартный вариант - ex.USSR бесплатно, а остальным за пару баксов (чем дешевле, тем популярней продукт. 30 много, а 1 мало... Ну, м.б. 5 баксов...).

Добавлено в [mergetime]1104451233[/mergetime]

Здесь код ошибки..., хотя на второй конфе всё проходит на "ура"... (по моей ссылке выше) Я так подозреваю, что это в 211 строке... Но... на одной конфе проходит, а на второй нет. Замечу, что эти конфы "живут" на одном сервере и используют базы данных, тоже с одного сервера... На всякий случай скопирую сюда ошибку...

ошибка запроса mySQL: SELECT p.pid, p.author_name, p.post_date, p.topic_id, p.author_id, p.post, t.forum_id, t.title

FROM ibf_topics t, ibf_posts p

WHERE t.forum_id IN (0,) AND t.approved=1 AND t.state <> 'link' AND p.topic_id=t.tid AND p.queued <> 1

ORDER BY pid DESC LIMIT 75

 

Ошибка mySQL: You have an error in your SQL syntax.  Check the manual that corresponds to your MySQL server version for the right syntax to use near ') AND t.approved=1 AND t.state <> 'link' AND p.topic_id=t.tid A

Код ошибки:

Когда: 31 Dec 2004 02:52:07

Добавлено в [mergetime]1104452509[/mergetime]

И ещё... Не отображаются смайлики. Если ссылка на картинку полная, то показ есть, а если такая

<img src='style_emoticons/default/4u.gif' border='0' style='vertical-align:middle' alt='4u.gif' />

, то нет (т.е. тут сервер не указан и в тексте отображается только поле alt)

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

А ты циферки не попутал ? Секунд ???

именно.

Зайди-ка на мой форум посмотри скока тама сообщений.

Ну имеется ввиду вместе с временем вывода html в браузер.

Добавлено в [mergetime]1104469339[/mergetime]

Это понятно. Просто программы которые я использовал для просмотра имели свой интерфейс для доступа в инет и не умели работать с куками. В этом случае не понятно как будет проходить авторизация и зачем она тогда вообще нужно (достаточно использовать права группы гостей). А оказалось, что есть куча прог использующих IE и Мозилу в которых все работает на ура.Админ видит что ему положено, а гость соответственно что положено ему.

а при чём тут "программы"? :D

ведь это мод сделан для поисковых машин.

А поисковые машины нормально авторизуются.

Добавлено в [mergetime]1104470016[/mergetime]

Не 3 раза, а 2 раза

ты забываешь ещё про JOIN который уже есть в стандартном запросе

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

Song, интересно, а для чего вообще придуман RSS? Думаю, не для поисковых машин..., а для юзанья именно юзерами и именно через специализированный софт. О нём и речь. Просто сейчас все блоги уже обзавелись своими RSS-лентами, сайты тоже... медлено, но верно, обзаводятся. Время за конфами. Вот здесь у Юрисофта и флаг в руках...

 

Яндекс не отстаёт от тенденций развития инета и предлагает свой сервис, который специально заточен под RSS-ленты сайтов, блогов и конференций. Но главное здесь поиск лент с тем, чтобы юзер мог схватить нужную RSS-ленту и подключиться к ней. А эти RSS-ленты могут быть просмотрены только через агрегаторы - браузеры этих лент. Т.е. всё замыкается именно на агрегатор... Всё остальное (вставка новостей из RSS-ленты на сайт) - вторично.

 

У меня на Арбузе (см. подпись) RSS-лента есть на САЙТЕ, в БЛОГАХ (как в каждом блоге, так и суммирующая), а теперь и на конфе... Кроме этого, я ПОКАЗЫВАЮ на конфе новости с двух RSS-лент (с сайта Арбуз и с сайта Деканат). Т.е. я удовлетворяю юзера почти по всем его информационным потребностям... Не хочешь конфу посещать - не надо... - включи мою ленты и получай на свой агрегатор новые сообщения с... конфы, и/или из блога Наблюдателя или Васи Пупкина... и т.п....

 

Сорри за многословность - политику описывал, однако...

 

DEBUG::

[ UserID: 2 ] [ Script Execution time: 0.0604 ] [ 3 queries used ]

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


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

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.