1. Приветствуем Вас на неофициальном форуме технической поддержки XenForo на русском языке. XenForo - коммерческий форумный движок от бывших создателей vBulletin, написанный на PHP.

Пробуем сделать плагин

Тема в разделе "Вопросы и ответы по XenForo Framework", создана пользователем infis, 06.11.2011.

Загрузка
  1. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    Всем доброе утро, добрый день, добрый вечер, доброй ночи!

    Хочу попробовать с помощью форумчан в ходе дискуссии и вопросов-ответов написать плагин для вывода похожих тем перед первым постом в теме.

    Дело в том, что я не силен в MVC вообще и в Zend Framework + XenForo Framework в частности. Делать вывод тупо запросом, думаю, будет уж слишком прямолинейно и глупо. А поэтому хотелось бы привлечь к "выполнению желаний" Xenforo_Search_Searcher и все сопутствующее. В общем, хочется сделать по уму в рамках фреймворка с кешированием и т.д. Желательно еще будет и в AJAX это обернуть. Тем более, что такой же поиск желателен при создании новой темы (уход из поля темы - сигнал для поиска похожих тем и вывода результатов).

    Итак, попробую разбить задачу на подзадачи:
    1. Название плагина и структура папок. Предлагаю разместить весь код в library/XFR/SimilarThreads.
    2. Место размещения во фронтэнде. Вывод результатов можно сделать через хук thread_view_pagenav_before или thread_view_qr_after. То есть, или между заголовком темы и панелью навигации или между редактором и хлебными крошками внизу. Для поиска похожих тем при создании новой можно использовать ad_above_content.
    3. Для того, чтобы визуально страница загружалась быстро, можно будет попробовать использовать AJAX, подгружая найденные похожие темы уже после загрузки всей страницы.
    4. Количество результатов в общем лучше указывать через опции. Пусть будет по умолчанию 5.
    5. Поиск осуществляем только по темам, используя заголовок текущей темы в качестве строки поиска.
    6. Если в пункте 4-м результатов не будет, то можно попробовать поискать сообщения. Хотя это будет уже, наверное, лишним.
    7. Сам поиск организовываем с помощью встроенного поиска XenForo. Видимо, это будет модель Xenforo_Search и сам поисковик Xenforo_Search_Searcher.
    8. Профит?

    Не знаю, как для остальных, но лично мне сложно разобраться с пунктом 6. Затем на очереди пункт 2. Ну а все остальное, видимо, будет уже достаточно простым.

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

    В случае успеха всего мероприятия получится очень хороший мануал по созданию плагинов, использованию хуков, моделей, классов, AJAX движка XenForo. Мне интересен как сам плагин, так и процесс разработки такого плагина. Последнее значительно интереснее.

    Ну и, КОНЕЧНО ЖЕ! Это будет первый совместный плагин этого форума :)
     
  2. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    Упс. Сложность представляют пункты 7 и 3, а не 6 и 2.

    Действительно глупая затея?
     
  3. Romchik®

    Romchik® The Power of Dreams Команда форума

    Регистрация:
    26.09.10
    Сообщения:
    5 746
    Симпатии:
    5 311
    Версия XF:
    1.5.18
    Затея неплохая. Вот только проблема как обычно в последнее время - программистов просто нет :(
    А те что есть (толковые), либо заняты, либо еще что-то.
     
    Yoskaldyr нравится это.
  4. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    Поэтому я и хочу воспользоваться коллективным разумом.
     
  5. FractalizeR

    FractalizeR XenForo Addicted

    Регистрация:
    27.09.10
    Сообщения:
    1 085
    Симпатии:
    832
    Версия XF:
    1.3.2
    А коллективный разум сам - хороший программист? :)
     
  6. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    Нет, конечно. Но количество мнений о том, как решить некоторую задачу, достаточно часто переходит в качество решения задачи. Естественно, все должно быть в разумных пределах. Я мог бы методом тыка до всего сам доходить, но согласитесь, что на некоторые вопросы сразу лучше получить правильные решения или направления. К тому же, основная причина создания топика - не просто вопрос, а проба создать пособие в форме диспута. Насколько это удачно и получится ли вообще, не знаю. Но с каждым днем я все больше сомневаюсь, что здесь найдутся люди, которые будут мне помогать. К сожалению.
    А я ведь не так и много спросил - мне нужны направления с примерами по двум основным вопросам. На офе мануалов почти нет. В сети - тем более. Ковырять чужие аддоны можно, но долго. Если я смогу решить поставленные два вопроса, то все остальное я смогу уже легко реализовать сам. У меня просто нет опыта программирования в парадигме MVC, в Zend Framework, а также не знаю нюансов XenForo.
    Допустим, я сам разберусь и сделаю аддон. Хорошо. Но в таком случае я уж точно не буду писать мануал, как я это сделал. Мне будет банально лень. Т.е. появится еще один аддон для ксена. Кому он будет интересен и полезен, лайкнут. Все вроде довольны и счастливы. Но ведь для тех, кто только начинает программировать аддоны для ксена, это не даст практически ничего.
    Теперь берем вариант, когда совместными усилиями разрабатывается аддон. При этому некоторые вопросы обсуждаются. Появляются правильные и неправильные решения. Результат на нескольких страницах темы, ИМХО, будет значительно интереснее, чем архив с аддоном. Ведь в таком случае будут указаны ошибки, которые разработчик может избежать в своих продуктах. Также будут разъяснены некоторые нюансы по API ксена. Ну и будут еще и некоторые паттерны для решения каких-то задач. В результате снизится порог вхождения разработчиков в движок ксена. А это повлечет за собой и общее увеличение количества разработок. Качество разработок при этом не должно сильно пострадать, так как я делаю упор именно на правильность, а не на просто решение задачи. Ведь моя задача элементарно решается с помощью прямых запросов к базе без какого-либо использования MVC, Zend'а и XenForo Core. А прямые запросы - это потенциально грабли при обновлении версий ксена и неоптимальность в некоторых случаях по производительности. Да и менее универсально.

    Надеюсь, что я понятно объяснил свой "замут". Спасибо за внимание!
     
  7. nikita90

    nikita90 Местный

    Регистрация:
    22.05.11
    Сообщения:
    47
    Симпатии:
    25
    Версия XF:
    1.1.0 RC
    Infis, а что ты имеешь ввиду под прямым запросом?
    Они ведь тоже кэшируются на сколько я знаю.
    Конечно лучше обсуждать коллективом, просто с поиском тут видимо мало кто имел дело.
     
  8. Romchik®

    Romchik® The Power of Dreams Команда форума

    Регистрация:
    26.09.10
    Сообщения:
    5 746
    Симпатии:
    5 311
    Версия XF:
    1.5.18
  9. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    Прямой запрос - это mysql_query('SELECT...')
    Конечно кешируются абсолютно все запросы, если их сможет кешировать сам mysqld. Но помимо этого есть еще внутреннее кеширование самим XenForo.
    С поиском никаких проблем. Абсолютно. Там не сложно все это сделать.

    Ладно, попробую на выходных сам поковыряться и сделать без чьей-то помощи. Если результат будет, то он будет в виде плагина. Расписывать его я не буду.

    Я видел и даже хотел перевести и выложить его сюда. Времени нет. Но в моем случае тот плагин (мануал по нему) в общем мало поможет.
     
  10. nikita90

    nikita90 Местный

    Регистрация:
    22.05.11
    Сообщения:
    47
    Симпатии:
    25
    Версия XF:
    1.1.0 RC
    infis, mysql_query('SELECT...') лучше не вызывать, а пользоваться внутренними функциями типа fetchAll или fetchAllKeyed. а здесь вообще есть готовый вариант:
    Код:
    XenForo_Search_Searcher->searchType(....)
     
  11. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    О! Кто-то таки решил включиться в обсуждение и разработку :)
    Если Вы не заметили, то в первом посте в 7-м пункте я о нем писал. Но мне нужен рабочий пример, как пользоваться этим поиском из своего кода (плагина).
     
  12. Sergey_M

    Sergey_M Местный

    Регистрация:
    19.02.13
    Сообщения:
    20
    Симпатии:
    10
    Версия XF:
    1.2.2
    Ищу подобный плагин. Если есть готовый - ткните плиз ссылкой.
     
  13. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    "Similar Threads" в поиск вбейте.
     
    Sergey_M и Mirovinger нравится это.

Поделиться этой страницей