Подсказки помогающие избежать создания одинаковых тем на форуме 1.X

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

Суть фишки. Когда пользователь создаёт новую тему и вбивает её название, если в базе форума есть темы с очень похожими названиями, ему здесь же предлагается поискать возможно готовое решение ДО ТОГО как он создаст эту тему. А не после, как это делает плагин "похожие темы" присутствующий например на форуме этого сайта. Все ссылки на похожие темы открываются в новой вкладке и если окажется что там не совсем то что нужно пользователю, он может вернуться к созданию своей тему. Если подсказки дали ему верное направление, он может продолжить ранее начатую тему (если конечно она не закрыта) или просто получить там ответ.

Вот как это выглядит.




В принципе, живое демо доступно на форуме по ссылке http://remix-os.ru/forum можете попробовать смоделировать создание новой темы и вбить в поле названия темы например слово "Установка". Только прошу особо не мусорить.

Реализация.

В шаблон com_forum_add.tpl

в условии

Код PHP:
  1. ....

перед

Код PHP:
вставил ajax функцию которая перехватывает вбиваемый заголовок создаваемой темы и после того как курсор покидает поле ввода отправляет запрос для поиска похожих тем

Код PHP:
  1. function AjaxFormRequest(topictitle)

В этом же файле в
Код PHP:
добавил

Код PHP:
  1. onblur="AjaxFormRequest('topictitle')"
получилось

Код PHP:
  1.  

В файле компонента components/forum/fronted.php

где нибудь после
Код PHP:
  1.  
  2. $forum=$model->getForum($id);
  3.  
  4. if(!$forum)
  5.  
  6. if(!cmsCore::checkContentAccess($forum['access_list']))
вставил код который собственно принимает запрос осуществляет поиск похожих тем и отдаёт ответ.

Код PHP:
  1. $relquery= cmsCore::request('title','str','');
  2.  
  3. if($relquery&&$relquery!='')

В принципе всё.

Побочных эффектов вроде не вижу.

Если заметили явные косяки, можете отписать.
Если есть идеи по улучшению решения также можете делиться.

Зачем это надо? Ну не знаю, каждый решает для себя, надо или не надо. Мне просто было интересно решить задачку. Ну и часто бывает, что ответ приходит ДО того как к нему находится вопрос) Возможно пригодится.
Понравилась запись? Поделитесь ею в соцсетях!


Instantcms.ru


Похожие статьи:

Новости разработчиковКомпонент Сервис Ёлок ver.1.1

Новости разработчиковЗагрузка расширений через админку

Новости разработчиковМодуль аккардион статей

Новости разработчиковЗаменяем название компонента, url и т.д. на примере FAQ

Новости разработчиковАнонс модуля "Поощрение пользователей"

Рейтинг: 0 Голосов: 0 32 просмотра
Комментарии (0)

Нет комментариев. Ваш будет первым!