Кросспостинг из WordPress в SMF 2.0 RCх

Дата: 26 мая, 2011 год

Есть у одного моего знакомого блог на WordPress. Недавно он попросил меня поставить еще и форум — на это были свои причины. Я, как истинный приверженец SMF, посоветовал ему этот движок, и сам же его ему и поставил :) А дальше знакомый захотел, чтоб его посты из WP автоматом дублировались на форуме SMF…

Ну, подумал я, раз хочет, значит сделаем, чего уж там. Тем более, что у меня уже есть готовый скрипт постинга в SMF, осталось только написать небольшой скрипт выдирания постов из WP.

Но, оказалось все намного проще! Случайно я наткнулся на плагин для WP, который позволяет делать тоже самое, что я хотел написать самостоятельно, а именно — автоматически добавлять новую тему с содержанием поста в SMF при его публикации в WordPress. Плагин называется WPSMF, последнее обновление правда было почти год назад, тем не менее, он работает с последними версияами SMF 2.0 RC5 и WP 3.1.2 (в момент написания поста уже была доступна версия 3.1.3, так что 100% гарантии, что плагин работает с самой последней версией WP у меня уже нет).

Плагин много чего позволяет делать, в том числе и экспортировать посты из WP в SMF, обновлять пост в SMF при его обновлении в WP, и даже синхронизировать комментарии! Последнее нам было не нужно, но фича сама по себе интересная. Вообщем, надо создать спец-рубрику в WP, из которой все посты будут кросспостинговаться (гыг :)) в SMF в определенный подфорум.

Ограничение одно, но оно существенное и вполне логичное — форум и блог должны находиться в одном пространстве доступа. То есть, чтобы можно было указать путь относительно обеих CMS-систем, он задается в настройках плагина.

Все было замечательно с этим плагином, кроме одного — хотелось настраивать результат вывода в топике SMF, а именно — возможность делать кросспост только анонсов (до тэга «more»), а также оставлять ссылку на полную версию поста, расположенного на WP. Таких фич не было, и мне пришлось поковырять код плагина.

В файле /wp-content/plugins/wpsmf/posts.php в самом начале идет обработка тела поста перед его публикацией в SMF. Находим такую строчку:

$body = '[html]'.$body.'[/html]';

Я взял ее для удобства, в ней идет обрамление текста поста ВВ-кодом html. Перед этой строчкой вы можете делать все что угодно с текстом поста. В моем случае я вырезал все, что идет после «more» и добавил ссылку на полную версию в блоге:

$body = explode("<!-more->", $body);
$body = $body[0].'<br><br><br><a href="http://blog.ru/'.$queried_post -> post_name.'/" target="_blank">читать полную версию поста на блоге Иванова</a>';
$body = '[html]'.$body.'[/html]';

Довольно странно, почему этих фич небыло в плагине по умолчанию — довольно полезно ведь.

Еще по теме: ,

Категория: Хаки и доработки

Comments (12)

 

  1. jvc:

    спасибо за статью

    а как можно сделать тоже самое только smf на одном сервере а wp на другом?

  2. Victor:

    Вот тоже задался целью сделать блог + форум.

    Однако не знаю как. Сайтостроитель я неопытный. Попробовал что-то сделать, но не знаю правильно ли.

    Написал письмо, надеюсь ответите.

  3. ValerBOSS:

    Здравствуйте.
    У меня возникла идея использовать данный плагин вместе с плагином smf2wp (надеюсь, известен такой). Т. е. убрать всю эту возню с ID пользователей, которые создали тему/ответили в ней, что бы не выставлять их с каждым постом при экспорте.
    Можете дать пару советов\направлений куда копать или как? Заранее благодарен, надеюсь, что Вы загляните сюда как-нибудь.

    • admin:

      Тут сложно что-либо советовать конкретное. Надо ставить чистые SMF и WP, установить и настроить оба плагина, и тестировать, допиливать, ковырять код.

      • ValerBOSS:

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

        Warning: require_once(/QueryString.php) [function.require-once]: failed to open stream: No such file or directory in Z:\home\wfas-aoc.com\www\forum\SSI.php on line 62

        Fatal error: require_once() [function.require]: Failed opening required ‘/QueryString.php’ (include_path=’.;C:\php\pear’) in Z:\home\wfas-aoc.com\www\forum\SSI.php on line 62

        А если наоборот, то SMF2WP сообщает:

        Warning: mysql_free_result() expects parameter 1 to be resource, boolean given in Z:\home\wfas-aoc.com\www\wp-content\plugins\smf2wp\smf2api.php on line 40

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

        • admin:

          Ну, как я говорил, надо ковырять и тестить. В первом случае не определена переменная $sourcedir, с помощью которой инклудятся различные библиотеки в SSI.php, и я бы с этого начал разбор полетов.

SEO Powered by Platinum SEO from Techblissonline