Интеграция с SMF

3960

Вступление

Достаточно многие знакомы и используют на своих сайтах скрипт бесплатного форума Simple Machines Forum (SMF).
  Не буду описывать все возможности этого форума - эта статья не об этом.
  И хотя InstantCMS содержит такой компонент, как форум, все же функциональность последнего будет еще долго развиваться до уровня того же SMF.
  Если же просто установить на одной площадке InstantCMS и SMF, то получается некоторая разобщенность ресурса - сайт отдельно, форум отдельно.
  Также заставлять пользователей регистрироваться два раза на сайте - это согласитесь, по крайней мере, несолидно.
  Данная статья позволит Вам связать информационную базу SMF-форума с сайтом на InstantCMS.
  Данный материал строится на предположении того, что таблицы обеих систем находятся в одной mysql-базе.
  Кроме этого, предполагается, что в SMF-форуме была выбрана кодировка win-1251 и папка со скриптами SMF-форума находятся внутри структуры папок InstantCMS.
  Предлагаемый уровень интегрированности информации:
    - единая регистрация. Пользователь регистрируется один раз  в InstantCMS. Пользователь в SMF-форуме заводится автоматически с логином и паролем соответствующими логину и паролю в InstantCMS (ник пользователя в SMF-форуме будет соответствовать логину);
    - модули вывода информации из smf-форума:
         - вывод на главной (или там, где Вы посчитаете нужным) некоторого количества последних сообщений с форума. Количество выводимых сообщений также выбирается Вами.
Кроме этого, предусмотрен вывод начальной части сообщений;
         - вывод списка непрочитанных пользователем сообщений на форуме;
         - вывод списка собственных сообщений на форуме.
  Итак поехали.
  

1. Единая регистрация.

  Во-первых, в SMF-форуме (далее просто форум), я считаю нужно отключить регистрацию пользователей. Не беспокойтесь - это никоим образом не помешает нам с Вами добавлять пользователей в базу форума, но зато оградит от расхождения в базе пользователей форума и пользователей Инстанта. Если же у Вас другие соображения на этот счет - ради Бога, поступайте так, как считаете нужным. Сайт Ваш - Вы там господь и Бог :).
  Во-вторых, скачиваем файлик smf_icms_bridge.zip (http://sverdlovsk.net.ua/users/files/download36.html) из файлов в моем профиле. Распаковываем содержимое архива в корень сайта.
В архиве содержатся все необходимые файлы для интеграции smf-форума и инстанта: модифицированный файл инстанта регистрирующий пользователя в базе smf-форума, файлы модулей, выводящих сообщения с форума на страницах инстанта, api-библиотечка с некоторыми функциями smf-форума, файл с sql-командой для создания дополнительной таблицы в базе. В таблице будет вестись соответствие id пользователя в инстанте и id пользователя в smf-форуме.
  После этого, через админку - Настройки - Резервные копии БД - Восстановление базы данных создаем новую таблицу в базе данных (делаем импорт файла createtbl.sql). Если кому-то будет удобно через phpmyadmin, я тоже возражать не буду. Текст запроса на создание таблицы находится в этом файле (createtbl.sql).
  Проверяем, работает или нет единая регистрация, если все нормально приступаем к следующему шагу.
  

2. Вывод списка последних сообщений с SMF-форума

  Если Вы установили модуль так, как было описано выше, то для подключения модуля вывода n-последних сообщений с форума идем в админку.
  Добавляем модуль:
     Тип модуля: Пользовательский
     Публиковать модуль: Да
     Содержимое модуля: Выбираем внешний скрипт и в окошке ниже заменяем myscript.php на smf_last_messages.php. Жмем кнопку Вставить.
      Все остальные пункты по своему усмотрению.
     Для настройки работы модуля придется заглянуть внутрь файла smf_last_messages.php. В строках 17-19 есть следующие настройки:
        $kvo=10; - количество выводимых в модуле сообщений
$path_of_smf="/smf"; - путь к форуму smf
$kvo_chars_of_body = 200; - количество первых символов выводимых сообщений. Почему стоит такое большое число? Потому что у меня smf в базе русский текст почему-то записывает в виде четырехзначных числе с амперсандом в начале (& #1054 ;& #1073 ;& #1097 ;& #1080 ;& #1077 ; & #1074 ;& #1086 ;& #1087 ;& #1088 ;& #1086 ;& #1089 ;& #1099 ; - пришлось повставлять пробелы, а то парсер преобразует это в слова smile). Если у Вас не так, поменяйте 200 на любое другое число. Если Вы считаете ненужным вывод начала сообщения - ставьте 0.

  

3. Вывод списка непрочитанных сообщений с SMF-форума

      К великому моему сожалению разобраться с этой функцией smf-форума не удалось sad. Точнее, тот промежуток времени, что удалось для этого выделить не позволил этого сделать. Ну что ж, вернусь к этому модулю попозже.

  

4. Вывод списка собственных сообщений на SMF-форуме

      Настройки аналогично предыдущему пункту, только вместо myscript.php вставляем smf_my_messages.php.

P.S. Подправил ссылку для скачивания (просили модуль)

Это решение для версии 1.1.rc4!!!

Для новых версий нужно переделывать!
Как я сделал себе генератор sitemap.xml | Постраничная стена
Комментарии (18)
0 6 апреля 2009 в 16:02 +1
А мне лично стандартный форум очень понравился и костылей никаких не нужно...
almond 6 апреля 2009 в 19:34 +1
Спасибо за проделанную работу — надо будет попробовать, но уже на каком-нибудь новом сайте (если руки дойдут), ибо на существующих миграцию не сделать.

Кстати, подскажите, компонент регистрации от какой версии InstantCMS используется? От последней, 1.2?
Виктор 6 апреля 2009 в 19:56 +1
Встроенный форум подкупает своей простотой smile
Отсутствует банальный поиск.
Недавно возник повторный вопрос, помню я на него отвечал, однако для того, чтобы дать ссылку на тот топик пришлось перелопачивать форум. Так, кстати, и не нашел.
0 6 апреля 2009 в 21:55 +1
Это жыш социальная сеть - все обсуждения вообще должны проходить либо непосредственно в комментариях к статье/блогу, либо в клубах - а если затевать форум, то как правило, все обсуждения перетекают в него и тогда фиг знает вообще для чего все остальные прибамбасы.. ИМХО
garry 6 апреля 2009 в 23:53 +1
Если делать социалку, то форум вообще как класс не нужен. Иначе как правильно написано выше Дмитрием убивается смысл.
А если делать сайт то конечно есть смысл прикрутить более функциональный и имеющий кучу модов и хаков форум.
С SMF не первый год на проектах работаю и скажу, очень удобный форум и при желании поднять реально удобный и обвешанный кучей модов форум не проблема. Тем более сейчас его индексация  в ПС отлажена и проверена мной на куче проектов.
Barrio 7 апреля 2009 в 00:39 +1
garry ++++
соцалке не нужен напрочь форум, социалке нужны блоги с ДРЕВОВИДНЫМИ комментариями, т.е. с возможностью отвечать на коммент другого пользователя, и все, а так же многопользовательские блоги и т.д. (но это уже есть)

а для сайта, согласен, полезен форум
InstantCMS 7 апреля 2009 в 07:55 +1
с древовидными комментариями будем решать уже скоро
0 16 апреля 2009 в 21:52 +1
ИМХО лучше не поленится и дополнить нынешний форум всем необходимым. И пользы будет куда больше, да и возможностей будет куда больше.
0 17 апреля 2009 в 03:35 +1
teCa, этим уже как бы занимаются!
0 23 мая 2009 в 19:21 +1
Пробовал я енту интеграцию осуществить, делал все как написано, в итоге упала нормальная регистрация, благо на Дневере делал, т.к. чего-то подобного и ждал
Влад 3 сентября 2009 в 14:35 0
А что не секачиваеться smf_icms_bridge.zip?
Виктор 3 сентября 2009 в 16:11 0

Данное решение было актуально для версии 1.1rc4!

А не скачивается по причине того, что движок или фиг его знает кто (так и не разобрались) обрезает ссылку при переадресации. Если посмотреть внимательнее на ссылку то там можно увидеть куда она должна прийти. Можно скопировать ее в буфер и вставить в адресную строку, а потом первую часть удалить и нажать "Энтер" и все скачается.
На всякий случай smile:
Код PHP:
http://instantcms.ru/users/files/download.html?fileid=61
Влад 3 сентября 2009 в 17:23 +1
на самом деле меня интересует не интеграция с SMF, хотелось посмотреть приблизительную реализацию слияния двух систем с одной базой пользователей, неужели можно интегрировать две разные системы, а два Инстанта нельзя?
Виктор 3 сентября 2009 в 17:42 +1
Я подправил модуль регистрации. При регистрировании в инстанте данные пользователя заносились также в базу форума. То есть форум работал со своей базой, а инстант со своей. Интеграции, как таковой не было, в полном понимании этого слова. На таком уровне можно скрестить и два инстанта, но я в своем решении предлагал запретить регистрацию в форуме для того чтобы не было рассогласования по пользователям. Здесь же можно сделать иначе - при регистрации отсылать на первый сайт
Влад 3 сентября 2009 в 18:02 +1
Вот теперь мне всё понятно, получится что при переходе с сайта sait.ru на сайт soc.sait.ru всё равно придется вводить логин, пароль. Это не очень удобно. Планировалось создание нескольких поддоменов на инстанте с единой базой пользователей. Эта фишка предусмотрена уже в DLE, Joomla и Drupal, у них все решается путем редактирования конфиг файла сайтов поддоменов, там на таблицу базы юзеров прописан префикс, ручками правишь на префикс основного сайта и всё работает))) а тут сложняк(((
Влад 3 сентября 2009 в 17:24 +1
ссылка все равно не работает  sad
Виктор 3 сентября 2009 в 17:50 +1
Оказывается формат ссылок на файлы пользователя поменялся. Правильная ссылка теперь выглядит так: http://instantcms.ru/users/files/download61.html
Erakon 25 мая 2012 в 00:44 0
Данная статья позволит Вам связать информационную базу SMF-форума с сайтом на InstantCMS.
Данный материал строится на предположении того, что таблицы обеих систем находятся в одной mysql-базе.

---
Как можно доработать мост и связать информационную базу SMF-форума с сайтом на InstantCMS,
с тем, что каждая из систем имеет свою mysql-базу? Т.е. - связать при этом 2 базы.