1

Topic: Мод: похожие темы на форуме

Этот небольшой простой мод поможет вывести похожие темы в топиках. Скрипт получает массив тем форума или форумов, сравнивает с темой и выводит список похожих тем. Можно настроить чувствительность и количество выводимых тем.

if (FORUM_PAGE == 'viewtopic')
{
  $forum_id = isset($cur_topic['forum_id']) ? $cur_topic['forum_id'] : '*';
//  $forum_id = '*'; //Раскомментируйте, чтобы искать везде и закомментируйте выше

  $query = array(
    'SELECT'  => 'id, subject',
    'FROM'     => 'topics',
    'WHERE'    => 'forum_id='.$forum_id
  );
  $result = $forum_db->query_build($query) or error(__FILE__, __LINE__);
  
  $forum_config_num = '5'; //Количество тем в списке
  $sim_count = 0;
  $res = array();
  while($fetch_subject = $forum_db->fetch_assoc($result) )
  {
    $res[] = $fetch_subject;
    $row = $fetch_subject['subject'];
    similar_text(utf8_strtolower($row), utf8_strtolower($cur_topic['subject']), $part);
    $similarity_part = floor($part);
    
    
    $uniqueness = 70; //Чувствительность
    if ($similarity_part > $uniqueness) {
      if($id != $fetch_subject['id'] && $sim_count < $forum_config_num) {
        echo '<p>'.$similarity_part.' % в теме <a href="'.forum_link($forum_url['topic'], array($fetch_subject['id'], sef_friendly($cur_topic['subject']))).'" target="_blank">'.$fetch_subject['subject'].'</a></p>';
        $sim_count++;
      }
    }
  }
}

Я написал комментарии, чтобы можно было проще настроить мод.

2

Re: Мод: похожие темы на форуме

Xakker wrote:

Этот небольшой простой мод поможет вывести похожие темы в топиках. Скрипт получает массив тем форума или форумов, сравнивает с темой и выводит список похожих тем. Можно настроить чувствительность и количество выводимых тем.

а куда надо вставлять этот скрипт? Default/bn

3

Re: Мод: похожие темы на форуме

Dennis wrote:

Xakker пишет:
Этот небольшой простой мод поможет вывести похожие темы в топиках. Скрипт получает массив тем форума или форумов, сравнивает с темой и выводит список похожих тем. Можно настроить чувствительность и количество выводимых тем.
а куда надо вставлять этот скрипт?

Dennis, в файл viewtopic.php

4

Re: Мод: похожие темы на форуме

я понимаю что в файл viewtopic.php, но где, точнее в каком месте его надо вставить?  Default/bu

5

Re: Мод: похожие темы на форуме

В любом месте после хука
($hook = get_hook('vt_end')) ? eval($hook) : null;

Хоть даже в футер

6

Re: Мод: похожие темы на форуме

Xakker, спасибо. работает  Default/bo

7

Re: Мод: похожие темы на форуме

А у меня вот такая ошибка выползает(( с чем быть может связано??
Извините! Произошла ошибка.
Это временная ошибка. Просто обновите страницу. Если проблема не решается, попробуйте повторить через 5-10 минут.

8

Re: Мод: похожие темы на форуме

https://punbb.softplaza.net/post13.html#p13

9 (edited by filnikov 2017.09.11 03:09)

Re: Мод: похожие темы на форуме

База данных: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1 (Errno: 1064).

Запрос с ошибкой: SELECT t.id, t.subject FROM topics AS t WHERE t.forum_id=

Ошибка произошла в строке 29 в C:\xampp\htdocs\panbb\extensions\similar_topics\hooks\hd_main_elements.php



<?php

if (!defined('FORUM') ) die();
if (!defined('FORUM_ROOT'))
   define('FORUM_ROOT', '../../');

if ($forum_config['o_similar_topics_enable'] == '1' && FORUM_PAGE == 'viewtopic') 
{
    if (!isset($lang_similar_topics)) {
       if (file_exists($ext_info['path'].'/lang/'.$forum_user['language'].'/'.$ext_info['id'].'.php'))
           require $ext_info['path'].'/lang/'.$forum_user['language'].'/'.$ext_info['id'].'.php';
        else
           require $ext_info['path'].'/lang/English/'.$ext_info['id'].'.php';
    }

    if (!isset($lang_forum))
       require FORUM_ROOT.'lang/'.$forum_user['language'].'/forum.php';

    ob_start();

    $query = array(
       'SELECT'   => 't.id, t.subject',
       'FROM'      => 'topics AS t',
    );

    if ($forum_config['o_similar_topics_source'] == '1')
       $query['WHERE'] = 't.forum_id='.$cur_topic['forum_id'];

[b]    $result = $forum_db->query_build($query) or error(__FILE__, __LINE__);[/b][color=#ff0000]  [colour=#ff0000] - 29 строка
[/color]
    $num_sim_topics = $forum_config['o_similar_topics_count'];
    $uniqueness = $forum_config['o_similar_topics_uniqueness'];
    $sim_count = 0;
    $topics_id = $topics = array();
    while ($row = $forum_db->fetch_assoc($result)) 
   {
       similar_text(utf8_strtolower($row['subject']), utf8_strtolower($cur_topic['subject']), $part);
        $similarity_part = floor($part);

        if ($similarity_part > $uniqueness) {
            if ($id != $row['id'] && $sim_count < $num_sim_topics) {
                $topics_id[] = $row['id'];
                $sim_count++;
            }
        }
    }

10

Re: Мод: похожие темы на форуме

У вас пустое значение $cur_topic['forum_id'] в массиве

11

Re: Мод: похожие темы на форуме

а на что их заменить, подскажите пожалуйста

12

Re: Мод: похожие темы на форуме

Используйте расширения для показа похожих тем, на форуме 2 точно должно быть для этого

13

Re: Мод: похожие темы на форуме

а какое расширение тут на вашем форуме установлено?

14

Re: Мод: похожие темы на форуме

У нас установлено Fancy SimTopics оно ищет без стоп слов по базе, еще есть от Sempai, но оно сравнивает темы на схожесть в процентах. Поиск в помощь.

15

Re: Мод: похожие темы на форуме

Спасибо)