как я совмещал 3 плагина: Компании, Афиша, Вопрос и Ответ
Мной для одного проекта, который сейчас в разработке, были куплены 3 этих модуля.
Я их поставил все вмести на один сайт и о чудо: в 2х из трех модулей не работает функционал оставления комментарием. Приятный подарочек в 12 ночи, о том как я решил эту проблему написано далее.
Наверное самое важное в разработке дополнений это обеспечить их совместимость между собой, и я уверен что разработчики движка потратили значительные усилия на решение данной задачи.
Однако не все так ловко в нашем государстве и руки тянутся использовать базовый функционал блогов в собственных доработках разработчиков, и правильно зачем изобретать велосипед, если механизм комментариев и публикаций уже есть и обкатан.
Собственно поставив на сайт все три плагина: Компании, Афиша, Вопрос и Ответ.
Я с ужасом обнаружил что не работают комментарии, причем не работают они как выяснилось методом проб и ошибок, в тех модулях которые были установлены раньше других.
Сначала я грешил на другие плагины, коих у меня в сборке оказалось:
Довольно много, но все они вели себя тихо и не подавали виду что работают неправильно.
Тогда я решил подробнее изучит ту троицу, которая не хотела дружно жить.
И так, плагин «Компании» + «Работа» — комментарии там используются как отзывы о компании.
Плагин «Афиша» — комментарии используются для событий и для мест.
Плагин «вопросы и ответы» — комментарии это ответы.
Достаточно быстро стало понятно что работает корректно тока тот, который был установлен последним.
Особенно странно было то что плагин «вопросы и ответы» начисто стирал все за собой, в том числе и все вопросы =) да неприятный сюрприз =) Но он легко лечится удалением файла dump_deactivate.sql из самого плагина.
Также — это дало понимание куда надо копать, а именно в механизм установки плагина, плагин ставиться путем установки новых таблиц в базу (как правило через файл *.SQL) и активации самого себя как плагина.
Вот тут и стало понятно что слабое место это установка плагина и именно в этот момент что-то лишнее записывается приводя к неработоспособности другие плагины.
Проводя сравнительный анализ запросов к базе данных, быстро был найден похожий кусок кода:
Плагин вопросы и ответы:
Плагин Компании:
Плагин Афиша:
При этом как видим каждый плагин прописывает тока свои типы комментариев, начисто игнорируя другие значения.
Я конечно собрал все типы в единую коллекцию и все заработало, но данный баг наводит на возможное возникновение таких проблем у других покупателей.
А не каждый разработчик будет выяснять почему его плагин не работает с плагином другого разработчика, и пользователь будет послан обоими =)
Все это мне напомнило басню «Лебедь, рак и щука» которую многие из нас помнять со школы.
С уважением и спокойной всем ночи!
Я их поставил все вмести на один сайт и о чудо: в 2х из трех модулей не работает функционал оставления комментарием. Приятный подарочек в 12 ночи, о том как я решил эту проблему написано далее.
Наверное самое важное в разработке дополнений это обеспечить их совместимость между собой, и я уверен что разработчики движка потратили значительные усилия на решение данной задачи.
Однако не все так ловко в нашем государстве и руки тянутся использовать базовый функционал блогов в собственных доработках разработчиков, и правильно зачем изобретать велосипед, если механизм комментариев и публикаций уже есть и обкатан.
Собственно поставив на сайт все три плагина: Компании, Афиша, Вопрос и Ответ.
Я с ужасом обнаружил что не работают комментарии, причем не работают они как выяснилось методом проб и ошибок, в тех модулях которые были установлены раньше других.
Сначала я грешил на другие плагины, коих у меня в сборке оказалось:
- aceAdminPanel, v.1.4-dev.117
- User's Adsense, v.0.1.0
- Blogs Autoconnect Plugin, v.1.0.0
- Auto fields, v.1.0.0
- AutoTown, v.0.0.1
- Афиша: События и Каталог Мест, v.2.0
- Change Date, v.0.0.1
- Livestreet Company Plugin, v.4.2.0
- Livestreet Image Gallery, v.1.0.1
- Groups, v.1.0
- Livestreet Job Plugin, v.4.0.3
- Index page title changer, v.1.0.0
- Note, v.1.0
- OpenID, v.1.2.0
- Static page, v.1.2.1
- Livestreet Profiler Plugin, v.1.0.1
- QA, v.1.0
- Livestreet Sbookmarks Plugin, v.01.0
- Похожие записи, v.0.2
- Sitemap, v.0.1.1
- Контакты и социальные сервисы, v.1.0
- Yandex Maps, v.0.1.2
Довольно много, но все они вели себя тихо и не подавали виду что работают неправильно.
Тогда я решил подробнее изучит ту троицу, которая не хотела дружно жить.
И так, плагин «Компании» + «Работа» — комментарии там используются как отзывы о компании.
Плагин «Афиша» — комментарии используются для событий и для мест.
Плагин «вопросы и ответы» — комментарии это ответы.
Достаточно быстро стало понятно что работает корректно тока тот, который был установлен последним.
Особенно странно было то что плагин «вопросы и ответы» начисто стирал все за собой, в том числе и все вопросы =) да неприятный сюрприз =) Но он легко лечится удалением файла dump_deactivate.sql из самого плагина.
Также — это дало понимание куда надо копать, а именно в механизм установки плагина, плагин ставиться путем установки новых таблиц в базу (как правило через файл *.SQL) и активации самого себя как плагина.
Вот тут и стало понятно что слабое место это установка плагина и именно в этот момент что-то лишнее записывается приводя к неработоспособности другие плагины.
Проводя сравнительный анализ запросов к базе данных, быстро был найден похожий кусок кода:
Плагин вопросы и ответы:
ALTER TABLE `prefix_comment` CHANGE `target_type` `target_type` ENUM( 'topic', 'talk', 'qa_topic' ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'topic';
ALTER TABLE `prefix_comment_online` CHANGE `target_type` `target_type` ENUM( 'topic', 'talk', 'qa_topic' ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'topic';
Плагин Компании:
ALTER TABLE `prefix_comment` MODIFY target_type enum('topic','talk','company') DEFAULT 'topic';
ALTER TABLE `prefix_comment_online` MODIFY target_type enum('topic','talk','company') DEFAULT 'topic';
Плагин Афиша:
ALTER TABLE `prefix_comment` CHANGE `target_type` `target_type` ENUM( 'topic', 'talk', 'place', 'event' ) DEFAULT 'topic';
ALTER TABLE `prefix_comment_online` CHANGE `target_type` `target_type` ENUM( 'topic', 'talk', 'place', 'event' ) DEFAULT 'topic';
При этом как видим каждый плагин прописывает тока свои типы комментариев, начисто игнорируя другие значения.
Я конечно собрал все типы в единую коллекцию и все заработало, но данный баг наводит на возможное возникновение таких проблем у других покупателей.
А не каждый разработчик будет выяснять почему его плагин не работает с плагином другого разработчика, и пользователь будет послан обоими =)
Все это мне напомнило басню «Лебедь, рак и щука» которую многие из нас помнять со школы.
С уважением и спокойной всем ночи!
25 комментариев
Кого еще интересует — пишите в личку, скину.
Рад что вам понравился мой пост!
в общем в разделе Вопросы и ответы — задан вопрос и к нему дан ответ. Так вот ответа не видно.
кто-нибудь может чуть детальнее разжевать что нужно сделать, чтобы подружить плагины?
пока что только удалил sql'ники в плагине вопросы и ответы, а вот что нужно дальше делать — не понял, не программер я, но при хорошем объяснении смогу сделать.
можно в личку ;) спасибо
уж слишком ммного вопросов мне задают =)
надо выполгнить следующий код в phpMyAdmin
и для Компаний надо выполнить код, который есть в статье?
ну и совсем для танкистов :) можешь сказать где в phpMyAdmin выполнить этот код?
стоит еще плагин — редактирование комментариев 1.4
Да вы не парьтесь так — всё таки не профиль минусанул, и даже не пост. На ваш рейтинг это не повлияло. Пока…
Всё, хватит оффтопить.