Компонент "Похожий контент" для InstantCMS 2.1.2

8650


Благодаря участнику форума Бичукин Андрей этот компонент стал доступным для большинства. За что ему уже можно поставить плюс.
От себя же решил оставить код открытым, чтобы многие разработчики могли, что-то взять для себя или предложили варианты решения интереснее моего.

Структура компонента, похожа на структуру компонента «Конструктор форм iForms» (опять он со своими формами facepalm ). Другими словами, в админке компонента создаются наборы фильтров (я их назвал «релеванты») и затем выводятся в нужном месте полем, виджетом или вызовом хука непосредственно в коде.

Итак, приступим…

Скачиваем архив, устанавливаем, как обычно и идём

в настройки компонента «Похожий контент».

Создаём релевант.

Спойлер
Системное имя, заголовок и описание – стандартные поля, не требующие описания.

Галочка «Показывать на сайте» позволяет включать/отключать показ релеванта. Удобно если надо, временно убрать релевант без поиска места его установки.
В блоке настроек «Контент» указываются тип контента с которым будет работать релевант. Например, если указать здесь тип контента «Новости», то при выводе релеванта в статьях, будут отображаться новости, отфильтрованные по запросу собранному из статьи.
Категория и/или фильтры из набора помогут немного конкретизировать место поиска контента.

Спойлер
Блок настроек «Шаблон» отвечает за вывод релеванта на странице.

Галочками отмечаются вывод заголовков, изображений, описания, наименование категории, теги и блок с датой автором и количеством комментариев.
Изображение по умолчанию берётся из поля «photo». Но можно переопределить, указав в «Поле изображения» нужное поле выбранного типа контента, и выбрать его размер из пяти стандартных.
Также обстоит дело и выводом краткого описания, выбираем из какого поля брать описание и указываем длину его.

Количество колонок и количество выводимых записей, определяем на свой вкус.
Галочка «Выводить записи в случайном порядке» позволяет выводить записи в случайном порядке.

Сами файлы шаблонов отвечающие за вывод релевантов расположены в папке \default\controllers\relevanter\ там на данный момент пока только файл relevants_default_list.tpl.php. Но отбор файла шаблона происходит следующим образом.

Ищется файл relevants_(имя_типа_контента)_list.tpl.php, если его нет ищется relevants_default_list_(стиль_контента).tpl.php, если и его нет, то ищется relevants_default_list.tpl.php.
Но и это ещё не всё. Если вам нужен вывод, как указано в настройках типа контента, то просто удалите или переименуйте этот файл и программа будет искать файлы шаблона в папке шаблонов контента (имя_типа_контента)_list.tpl.php, либо возьмёт default_list.tpl.php.
Конечно все файлы без скобок.

Идём дальше.

Полнотекстовый поиск.

Спойлер
Полнотекстовый поиск возможен только, если релевант расположен в записи типа контента.
На страницах категорий, на главной и т. п. сработает только обычный набор фильтров и сортировки (о них чуть позже).

В полнотекстовом поиске строка поискового запроса собирается из трёх составляющих. Это своего рода приоритет поиска. По умолчанию, берётся заголовок, затем добавляются ключевые слова и потом присоединяются теги. Селекторами можно переопределить их порядок, либо отключить ненужные. Например, искать сначала по ключевым словам, затем по заголовкам и третий параметр не использовать. Если количество слов в строке поискового запроса будет большим, то чтобы снизить нагрузку на сервер, можно ограничить длину поисковой фразы.

В процессе обработки из поисковой фразы «заголовок + ключевые слова + теги» вырезаются всевозможные спецсимволы, знаки препинания, цифры и т. п. Затем фраза обрезается до длины указанной в настройках (цифра «80» которая стоит по умолчанию). После этого поисковая фраза подвергается разного рода манимуляциям, таким как, удаление повторяющихся слов, удаление слов, длина которых менее 3 символов, добавление повышающего коэффициента релевантности для полученных первых трёх слов. В итоге полученная поисковая фраза может быть значительно короче указанной в настройках длины.

Галочками указываем по каким полям осуществлять полнотекстовый поиск в базе данных.

Последняя галочка определяет возможность вывести записи отфильтрованные другими настройками, если полнотекстовый поиск ничего не нашёл.

Сортировка и фильтры.

Спойлер
Эти поля вам уже знакомы из наборов типа контента с одним отличием – есть фильтр по тегам. К нему я ещё прикрутил режим автозаполнения для удобства.

Спойлер
Фильтрация и отбор записей происходит следующим образом.

В выбранном типе контента, с учётом выбранной категории и набора отфильтровываются записи с применением фильтров заданных в поле «Фильтры» и сортируются согласно настройкам в поле «Сортировка». Затем подключается полнотекстовый поиск, конечно, если релевант расположен в записи контента. Из всего того количества найденных записей отсекаются первые в количестве рассчитанном по формуле: количество выводимых записей указанных в настройках умножить на 2 и добавить 1. Например 4 * 2 + 1 = 9 записей. Если найдено меньше, то будет столько, сколько есть.
Этот набор записей кэшируется (при включенном кэшировании). В дальнейшем, если есть кэш, берётся из него, если нет

или он устарел, повторно собирается набор записей. Из этого набора отбираются записи в количестве указанном в настройках случайным образом, либо первые по порядку. Зависит это от галочки «Выводить записи в случайном порядке» в блоке настроек «Шаблон».

Заполняем необходимые поля и получаем готовый релевант.

Спойлер
Размещение релеванта на сайте.

Для размещения релеванта на сайте есть два типа поля и виджет.

Виджет.

Спойлер
Ставим, где доступно и в опциях виджета выбираем наш релевант.

Спойлер
Поле.

Поле «Похожий контент» и «Похожий контент - сквозной» это два обычных поля.

Спойлер
Первое устанавливается в каждую запись. И при создании/редактировании каждой записи указывается, какой релевант выводить.
У второго при установке сразу выбирается какой релевант выводить и он автоматически будет выводится во всех записях данного типа контента. Пересохранять ранее добавленые записи не требуется. Но если есть необходимость в некоторых записях отключить релевант с показа, то при создании/редактировании записи надо убрать галочку.

Спойлер
В случае если ничего не найдено, то обычным пользователям ни в поле, ни в виджете ничего не выведется. А для администраторов сайта в этом месте выведется информация для размышления, в которой указаны слова по которым был осуществлён поиск.

Спойлер
Демо, смотрите статьи и новости. Виджет есть на главной.

Логин: [email protected]
Пароль: demoadmin

Спасибо ему.

Обновление.

Добавил опцию для автоматического определения категории. Доступно в записи контента.

Изменил опцию "Выводить случайные записи, если ничего не найдено" на "Доводить количество записей до нужного, если не достаточно найдено". С ней будут добираться до нужного количества последние опубликованные записи из этой же категории. Доступно в записи контента.

Добавил возможность на выбор выводить заглушку, если нет изображения.

Поправил alt.

Устранил неисправность с отображением категории записи при включенном кэшировании.

Подправил файл шаблона. Теперь если искали 4 записи, а нашли меньше, то они растянутся на всю доступную ширину блока.

В связи с этим после обновления надо пересохранить все ранее созданные релеванты в админке компонента с учётом новых опций. Места их размещения пересохранять не требуется.

Обновление 18.03.2015.

Теперь компонент работает только с версией InstantCMS 2.2.0.

Обновлена работа с изображениями. Теперь, если выбран пользовательский пресет и файла заглушки с таким названием не существует, будет выведена заглушка с названием small. Поэтому для всех пользовательских пресетов желательно делать файл заглушки, такого же размера.

Переделана функция кэширования.

Подправлены стили. Исправлены некоторые мелочи в плане "юзабилити".

В настройки полнотекстового поиска релеванта вынесены значения длины слова и поле для ввода слов исключений из поиска. Слова короче указанной длины будут исключены из поиска. По умолчанию его значение равно 4 символам (оптимально для кирилицы). Значение можно изменить, как в большую сторону, так и в меньшую (но без фанатизма).

Обновление 23.06.2015.
Устранены ошибки, немного изменена логика подбора похожих записей. В стилях добавлено выравнивание текста блока с описанием по ширине
Конструктор форм iForms. Добавление записи в типы контента в InstantCMS 2 | Конструктор форм iForms 3. Поле заимствования.
Комментарии (137)
MegaRostov 11 марта 2015 в 12:32 +2
Вы как всегда +++!!!
WebMan 11 марта 2015 в 12:38 +2
Спасибо! Как обычно порадовали тщательной продуманностью и проработкой компонента.
Олег Васильевич я 11 марта 2015 в 13:19 0
Весьма нужное дело.
Жаль могу потестить "не отходя от кассы"
Спасибо!
Олег Васильевич я 11 марта 2015 в 13:24 0
жал не могу cry
VonKruger 11 марта 2015 в 13:34 0
Отлчно нужная вещь! Вот интересно как на производительность повлияет?
Режим отладки кто включал смотрели используемые ресурсы при выводе релевантов?
Хотелось бы услышать мнение специалиста!
Loadырь 11 марта 2015 в 19:24 0
Тоже бы хотел послушать специалиста.
ivanish 10 июня 2015 в 09:33 0
Я не специалист, но на тестовом нагрузка была 40-45, а стала 500.
Причем использую все по минимуму
SpaceSel 11 марта 2015 в 14:21 +1
Молодец! Даешь народу отличных модов/хаков!
eoleg 11 марта 2015 в 16:03 0
+
Loadырь трудится не покладая рук! smile
Олег с клещами 11 марта 2015 в 16:16 +3
Светлая голова! Респект и уважуха laugh
Ingvarruss 12 марта 2015 в 01:06 0
Вроди все сделал по инструкции, а вместо похожего контента надпись - Array
Loadырь 12 марта 2015 в 07:55 +1
Попробуйте переустановить компонент.
zotak 27 августа 2015 в 22:45 0
Подскажите как вы побороли - Array ?
letsgo 12 марта 2015 в 02:35 +2
Жесть просто. Ни одной похожей статьи, при этом из разных разделов. Вы как так умудряетесь делать? Я конечно понимаю, что главное название чтоб было у компонента. Но тогда пишите честно "вывод всего подряд под всем подряд".

Умиляют хвалители. Вообще пофиг что ставить и как это работает?

Простой пример. Статья "США внесли «ВКонтакте» и «Рутрекер» в пиратский список".

А что в похожих?

А вот что

Строительство мегаферм в области решено отложить из-за кризиса
Омич прокатился на сноуборде по заснеженным улицам города (видео)
Омичам предложили виртуальную замену аквапарка на Завертяева
Лора Московская на Дне всех влюбленных в «Викинге»На правах рекламы



Крутые похожие статьи, да? Молодцы те кто хвалят. Благодаря вам инстант будет смешить скорее, чем эффективно работать. Ну и поспешите мне минусы навтыкать.
Soul 12 марта 2015 в 04:44 +1
еще не смотрел (планирую на выходных)... Александр, а на беглый взгляд указанные статьи все же имеют общую составляющую - неактивные ссылки в тексте (возможно по ним они и стали "похожими") laugh
Loadырь 12 марта 2015 в 09:50 +1
Там скорее всего реагирует на слово "новости" в последней фразе основного текста "НГС.НОВОСТИ Фото..."
Demet 12 марта 2015 в 06:17 0
Полностью согласен, одна мешанина из не похожих по смыслу постов, раньше у меня были сайты на движке DLE, вот там идеально это было. Но за старания все равно +. По ходу дела нам не дождаться адекватного компонента "Похожие новости", если только за это дело не возьмется сам автор движка.
Demet 12 марта 2015 в 06:21 0
Полностью согласен, одна мешанина из не похожих по смыслу постов, раньше у меня были сайты на движке DLE, вот там идеально это было. Но за старания все равно +. По ходу дела нам не дождаться адекватного компонента "Похожие новости", если только за это дело не возьмется сам автор движка.
Loadырь 12 марта 2015 в 06:23 +2
Всё верно. Минусы в этом посте попрошу ВСЕХ не ставить. Хочу чтобы каждый мог высказать, что и как он это видит. Верно подмечено с похожестью статей. На моём демо-сайте, вы врядли определите работу компонента, именно по отбору записей. Он скорее для отображения как это выглядит. Новости я парсил кодом написанным "на коленке гусинным пером". Чтобы набрать количество, а качество новостей там далеко от идеала. Это видно по самим ключевым словам, заполненным автоматически. Чтобы действительно увидеть полную картину, нужен нормальный сайт. Я вам такой предоставить не могу. Поэтому предлагаю вам на копии вашего реального сайта протестировать компонент и посмотреть, как он там себя поведёт. И потом здесь отписать свои замечания и предложения.
letsgo 12 марта 2015 в 06:51 -1
Он вообще не должен выводить, если статьи не похожи. Вот этот момент вы упускаете. Что такое похожесть?

- 1 уровень похожести - статьи сходятся по названию
- 2 уровень похожести - статьи сходятся по тематике раздела

У вас нарушены оба уровня. Ниже я написал поэтому, сделайте так

- Сначала отбирает похожие по названию, это самые близкие по похожести
- Если не хватает статей, подключаем уровень 2, то есть по ид берём рядом статьи. Почему рядом? Чтобы была некоторая перелинковка по сути. Нет по обоим вариантам статей - значит нет похожих, но нельзя туда совать всё подряд.

Пока вы не сделаете именно так, будет каша статейная внизу.
Loadырь 12 марта 2015 в 08:07 +1
1 уровень похожести - статьи сходятся по названию
В настройках полнотекстового поиска сделайте "брать для поиска сперва" только "заголовок". И искать только по заголовкам. Но на моём демо-сайте, где пара-тройка, кривых статей - ничего не найдёт. Поэтому, пробуйте у себя разные виды настроек.

2 уровень похожести - статьи сходятся по тематике раздела
Как определить тематику раздела? По заголовку и/или ключам раздела?
letsgo 12 марта 2015 в 08:14 -1
Раздел статей - раздел в котором они находятся.
letsgo 12 марта 2015 в 02:45 -1
Альт тоже сделан неверно. alt="29-omich-prokatilsja-na-snouborde-po-zasnezhennym-ulicam-goroda-video" Это жесть. Я бы такие разработки вообще как вредные классифицировал. Они скорее будут вредить сайту, чем работать.

Переделайте по уму, как надо. Поиск похожих по словам в названии, альт - название статьи а не урл, статьи из одного раздела похожие. не могут в разделе Происшествия быть статьи похожими на статьи в разделе Бизнес и экономика. Похожее всегда будет именно в этом разделе для посетителя.
Loadырь 12 марта 2015 в 06:23 +1
Исправлю
letsgo 12 марта 2015 в 06:33 -1
Исправляйте, исходя из следующего

- Подбор похожих, только по словам в названии.
- Если нет похожих в названиях то предыдущие 5 статей по ID этого раздела, соответственно если например 3 по названию нашлись, то 2 уже по ID добить. Как правило свежие статьи одного раздела могут заинтересовать посетителя.
- Альт брать строго из названия.
- Похожие статьи только из того же раздела.

Вот тогда будет дело.
Loadырь 12 марта 2015 в 07:14 +1
Похожие статьи только из того же раздела.
Включая подразделы?
letsgo 12 марта 2015 в 07:22 -1
Подразделы делаются в исключительно редких случаях. Но если сделан, значит не просто так, а в нём есть свои материалы. То есть похожие в нём же и будут. Выводить только из раздела материала. Тогда это полезно пользователю и правильно показывает материалы поисковику.
Loadырь 12 марта 2015 в 23:18 +4
letsgo , спасибо за участие.

Добавил опцию для автоматического определения категории. Доступно в записи контента.
Изменил опцию "Выводить случайные записи, если ничего не найдено" на "Доводить количество записей до нужного, если не достаточно найдено". С ней будут добираться до нужного количества последние опубликованные записи из этой же категории. Доступно в записи контента.
Добавил возможность на выбор выводить заглушку, если нет изображения.
Поправил alt.
Устранил неисправность с отображением категории записи при включенном кэшировании.
Подправил файл шаблона. Теперь если искали 4 записи, а нашли меньше, то они растянутся на всю доступную ширину блока.
В связи с этим после обновления надо пересохранить все ранее созданные релеванты в админке компонента с учётом новых опций. Места их размещения пересохранять не требуется.

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

Скачать полный установщик тут.
Обновление качать тут.

Ещё обнаружил небольшой баг связанный с выводом блоков записей разной высоты. Стили поправлю в следующем обновлении.
Олег Васильевич я 12 марта 2015 в 23:33 0
Ещё обнаружил небольшой баг связанный с выводом блоков записей разной высоты. Стили поправлю в следующем обновлении.
Не мне вам советы давать, но, если позволите, не разменивайтесь на "буковки" - цена этой работы точно не определяется выравниванием высоты блоков.
Спасибо!
letsgo 12 марта 2015 в 23:39 -1
Спасибо. Сразу же добавлю еще один момент - оформление. Некрасиво, каша.

Что сделать? Сразу скажу - я могу сделать такое, другие многие, особенно новички не смогут.

Итак записям всем создаём див ul, а каждой записи добавляем li. теперь задача выделить див картинки, титле, анонса статьи. Буквально по сути делов на 10 минут. Дальше мы имеем возможность настроить вид, в любом по сути оформлении, но даже дефолтное уже будет выглядеть не как каша, а достаточно симпатично.

Плюс - в таких случаях лучше не ставить вертикально. Так как даже различия в титле, будет перекашивать, что видно даже на вашем скрине. Лучше ставить горизонтально, но с дивами, будет и красиво и удобно.

Вы простите за то, что много пожеланий. Независимо от того, делаете вы платное или бесплатное, оно должно быть безупречно. И ещё раз спасибо, за то что взялись, не бросили после критики.
Loadырь 13 марта 2015 в 10:33 +1
Всегда пожалуйста. Критика, это всего лишь слова. В ваших словах я увидел идею. Идея оказалась полезной, её и внедрил.

Что касается списочного оформления (ul li), то это лишь моменты подхода к созданию шаблона. Я не дизайнер, поэтому шаблоны могу лишь сверстать. Для тех людей кто серьёзно занимается внешним видом своего проекта, ul li или div это не помеха. Всё равно под проект надо что-то переделывать. Я же сделал так, чтобы простыми кликами мышки простому пользователю в настройках релеванта можно было бы вывести так, так, так или так или аж вот так. В любом случае для каждого типа контента, лучше делать свою html разметку в отдельном файле шаблона. Где-то надо вывести сперва фото, где-то сперва заголовок потом фото и таких вариантов масса. Поэтому, зная что файлы шаблонов в большинстве случаев переделываются "под себя", я делаю лишь рабочий макет из дефолтного файла шаблона. А дальше вы сами "разукрашивайте".
letsgo 13 марта 2015 в 10:55 -1
Да, там есть стили. Настроить легко под себя уже сейчас. Спасибо большое за разработку, доведенную до ума.
alexbabo 13 марта 2015 в 13:25 0
Спасибо за превосходную работу,отличный компонент.
Установил обновлённую версию,кое что смутило.
Два абсолютно разных материала выводятся в похожих друг у друга.
Посмотрите пожалуйста.
Page 1
Page2
Loadырь 13 марта 2015 в 13:36 +1
к таким вещам желательно прикладывать либо скрин, либо описание выбранных настроек из групп полей "Контент" и "Полнотекстовый поиск", а также место расположение релеванта (в записи или иное).
Loadырь 13 марта 2015 в 13:43 +1
Ещё для удобства я сделал возможность увидеть по каким словам идёт поиск. Для этого в файле \templates\default\controllers\relevanter\relevants_view.tpl.php в строке 1 уберите два первых слэша, чтоб стало так
Код PHP:
  1. <?php //if ($user->is_admin){ echo "<div><b>Ищем по:</b> " . $search . "</div>"; } ?>
Эту фразу увидят только администраторы сайта.
Loadырь 13 марта 2015 в 13:44 +2
поправляю, чтоб стало так:
Код PHP:
  1. <?php if ($user->is_admin){ echo "<div><b>Ищем по:</b> " . $search . "</div>"; } ?>
alexbabo 13 марта 2015 в 14:21 0
Сделал как вы сказали,показывает совершенно разные ключи
В 1 случае:
Ищем по: unique, burning, walking, mondo, spider, robot, robots, manufacturers, indust
В 2 случае:
Ищем по: trick, andy, gross, funny, horrifies, magician, famous, video, where

Скрин1
Скрин2
Loadырь 13 марта 2015 в 16:35 +2
В первом случае сработало слово walking, во втором video (глубже не искал), оба в тексте записей. Поскольку записей в этой категории немного и стоит в настройках галочка "Выводить записи в случайном порядке", то при указанных 4 записях он ищет 9 записей (а это почти все записи категории), в которых встречаются слова из поисковой фразы в тех местах, где указано в настройках. В данном случае, в тексте записи. Из рекомендаций могу предложить сузить место поиска:
1. Убрать галочку "Выводить записи в случайном порядке", тогда он будет искать только 4 записи (а не 9) отсортированные по релевантности.
или 2. Убрать галочку искать по основному тексту.
Когда записей будет много, тогда эти галочки можно будет вернуть.


Ещё я начинаю подумывать над добавлением поля в настройки релеванта, куда можно вводить стоп-слова. Например в разделе видео, слово "видео" может быть в каждой записи, конечно оно может добавить некую релевантность, но с другой стороны оно добавит его почти во все записи и смысл от этого слегка теряется. Кто как думает по этому поводу?
alexbabo 14 марта 2015 в 02:25 0
Спасибо за развёрнутый ответ.
Что то новое заметил .
Кажется у меня не работает поиск по тегам.
В поле Ищем по:
Одинаковые теги ,а релевантного текста нет.
Для эксперимента,включил поиск только по тегам и брать сначала теги.Результата нет.

По стоп словам,думаю хорошая мысль.
Loadырь 15 марта 2015 в 19:07 0
Интересно. У меня на демке с такими настройками релеванта на этой странице выдаёт так
Роман 13 марта 2015 в 08:43 +1
И ещё раз спасибо, за то что взялись, не бросили после критики
Loadырь адекватный человек и его конструктивной критикой не испугать.

Хочется пожелать ему терпения и удачи!
Romanovcmc 15 марта 2015 в 15:34 +2
Удивительно, как так люди могут. Я обычно из себя выхожу. А тут такая сухая оценка ситуации. Тем более учитывая какой хам letsgo.
Владимир Савенко 15 марта 2015 в 16:16 0
хм... я вот иногда общаюсь с letsgo.хамства с его стороны не видел ни разу... Ну а указание на недоработки (извините не использую двойку, поэтому назову это так "недоработки) плюс указание направления в котором "копать" для решения проблемы. Я думаю что автору это пойдет только на пользу.
Автору конечно же плюс, за разработку и адекватность smile .
letsgo 15 марта 2015 в 17:42 -1
Какой то вы странный, мягко говоря человек. Чтобы этот компонент приобрёл рабочую реально форму - я тут писал и рассказывал весь вечер. А вы пишете о том, что я хам.

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

p/s ^ Покажите мне хамство моё, чтобы я задел лично человека, либо что то затронул, не относящееся к сайтам. В ином случае необходимо извиниться. Если конечно характер есть.
Romanovcmc 15 марта 2015 в 20:12 +2
Не про этот конкретный случай пишу, а про сложившееся у меня мнение. Меня откровенно задрало ваше высокомерие. Помню что были некоторые сайты на продажу или на "оцените сайт". И вы весьма резко о них отзывались. Теперь об доказательствах, с этим по сложнее. Потратил 20 минут, больше тратить не хочу. Вот что нашел, покопавшись в ответах Fuze

Хамство:Хам - сын Ноя, публично высмеял своего отца когда тот перебрал в выпивке и уснул на улице нагим, это упрощенная интерпретация Библейского понимания "хамства". Хамство - эмоциональное, агрессивное, вычурное, нарочито показательное состояние (состояние сознания направленного на заведомое унижение чести и достоинства личности) человека заведомо понимающего то, что адекватного ответа или противодействия оппонент оказать не в состоянии по причине слабости, зависимости, беспомощности.
В общем извиняться не вижу смысла, и хоть явных доказательств нет, но искать уже не хочу. Доверяю своему сложившемуся мнению
P/S считаю хамством затронуть сайт человека, в который он вложил душу и много сил. Хоть и не трогать его лично.
letsgo 16 марта 2015 в 08:15 -1
Ясно всё. Много букв и признание, что хамства нет. Вы сударь еще придёте к пониманию моих советов и тогда извинитесь. Так, уже было не раз.

Мы с Fuze в спорах, а спорили мы в аське, скайпе, тут на сайте - сломали сотни копий. Но я с уважением отношусь к нему - он отвественный разработчик и профессионал. Мы просили долго редактор, не я один, в итоге таки он услышал и сделал, сразу очень сильно улучшив перспективу 1 ветки. Это результат.
Romanovcmc 16 марта 2015 в 10:44 0
Я сказал, что я против ваших конструктивных предложений? Я выразил свое недовольство вашей манерой общения. Одно и то же можно сказать совершенно разными словами, при этом не обязательно ломать копья.
Romanovcmc 14 марта 2015 в 21:27 0
Проблемы с выводом полей в шаблоне, хотел чтобы выводились только картинка и заголовок. Сделал вот так

А выводятся только картинки, добавил галочку выводить описание, стало выводиться. В общем вышел из ситуации, вывожу описание но с количеством символов 0.
Такая же беда, если выводить автора, то выводятся еще и теги.
Loadырь 15 марта 2015 в 10:10 +1
Да, есть такое. Заметил это только после выкладывания обновления. На демке уже обновил. У вас появится чуть позже.
Romanovcmc 14 марта 2015 в 21:56 0
А еще в похожих сам себя выводит, что как то не логично. Если не сложно, поправьте пожалуйста. В целом данный компанент очень продуманный, аж ненарадуюсь.
Loadырь 15 марта 2015 в 10:49 +2
Да, есть такое. Нашёл ошибку. Это случается, если стоит галочка "Доводить количество записей до нужного, если не достаточно найдено". В этом случае отсутсвовала фильтрация по id текущей записи. Соответственно, она могла смело попасть в общий список.

Добавлю в настройки релеванта длину слов и стоп слова, для исключения из поиска. И после выходных выложу обновление.
maxisoft 15 марта 2015 в 11:30 +1
Вопрос не в тему просто для общего развития, насколько сильно грузиться сайт? при использовании компонента.
Loadырь 16 марта 2015 в 05:44 +1
maxisoft , а есть какие-нибудь инструменты замерить это?
qwest 16 марта 2015 в 16:48 0
Может штатными средствами.
Использование памяти время обработки на чистой CMS и после установки данного компонента.
Loadырь 16 марта 2015 в 18:38 0
Штатные средства вам вам доступны на демке. Можете смело ими пользоваться. Но они в таком компоненте малоинформативны.
Romanovcmc 15 марта 2015 в 15:20 0
И еще прошу одну вещь довести до конца. Если нечего выводить, то хотелось бы, чтобы и заголовок поля тоже не выводился. Не знаю как с виджетом, может быть такая же фигня. И еще, пришлите, пожалуйста ваш номер телефона в личку. Хочу кинуть чуть на поболтать.
Loadырь 15 марта 2015 в 22:27 +1
Если нечего выводить, то хотелось бы, чтобы и заголовок поля тоже не выводился.
Для этого надо, править файл шаблона не связанный с моим компонентом. В файле \templates\default\content\default_item.tpl.php есть код:
Код PHP:
  1.  
  2. <?php if (!$field['is_in_item']) { continue; } ?>
  3. <?php if ($field['is_system']) { continue; } ?>
  4. <?php if (empty($item[$field['name']])) { continue; } ?>
добавьте до него или после него это
Код PHP:
  1. <?php if (empty($field['html'])) { continue; } ?>
.
Если у вас используется свой файл шаблона для вывода записи контента, то соответственно, это надо сделать в нём.
Romanovcmc 15 марта 2015 в 15:32 0
И не совсем разобрался. Но вроде доводить до количества записей если не достает, не работает такая функция для поля. Если я правильно понял, то эта функция работает так, если не хватает количества записей в данной категории, то берет из других категорий.
Loadырь 15 марта 2015 в 20:36 +1
Если основной поиск не дал или дал недостаточное количество записей, то берутся записи отсортированные, как указано в настройках, либо по дате публикации, из этой же категории, с учётом подкатегорий (если такая галочка установлена). Другими словами, если в данной категории всего две записи, а в настройках указано четыре, то выведутся только две записи. Сама категория определяется либо автоматически, либо указывается вручную, но компонент работает только с ней.
Romanovcmc 15 марта 2015 в 20:42 0
Хорошо, спасибо. Еще одна проблема. После того как сделал поле похожих записей, все работало, но как только добавил новый материал, в нем это поле не отображается. В старых записях отображается.
Romanovcmc 15 марта 2015 в 20:43 +1
http://www.mirpetel.ru/sxemy вот тут посмотрите, последние записи не имеют этого поля в конце, а на момент введения поля, имеют.
Loadырь 15 марта 2015 в 20:59 +1
Да есть такое, галочка показывать релевант при добавлении новой записи отсутсвует. Поправлю, чтоб всегда присутствовала при создании материала. А пока у себя можете проставить эти галочки, чтоб релевант отображался.
Romanovcmc 15 марта 2015 в 21:11 0
ух ты, а я и не заметил этой галочки
Romanovcmc 15 марта 2015 в 21:13 0
Они отображаются и когда обычные пользователи заполняют сайт? получается мне нужно будет, если я так хочу скрыть это через цсс?
Loadырь 15 марта 2015 в 21:27 +1
Да видны для всех, кто добавляет/редактирует запись. Но можно в файле \templates\default\assets\fields\relevantsacross.tpl.php обернуть всё в условие "если админ, то показать эту галочку". Но это лучше сделать после обновления, когда по умолчанию будет срабатывать как отмечено.
Sashkoff 4 августа 2015 в 12:27 0
Если контент добавляется AviPars-ом, то галочка по умолчанию не срабатывает.
Loadырь 4 августа 2015 в 16:22 0
Это да. Контент добавленный всякого рода парсерами, срабатывает настолько, насколько это учтено в самом парсере. Сам работаю над одним парсером (очень похожим на AviPars laugh ) и уже столкнулся с тем, что при добавлении материала, надо брать дефолтные данные всех необязательных полей, а не только тех, что необходимы для добавления записи.
З.Ы. А в настройках карты парсера, у вас данное поле присутствует? Может его добавить в карту и выставить значение равным 1, и тогда должна появиться эта галочка. Но это скорее вопрос к разработчику AviPars. Так как мне неизвестно, как у него реализована функция добавления данных записи в БД.
vsemkrot 17 марта 2015 в 13:16 -1
а для новой версии 2 подойдёт ??
Loadырь 17 марта 2015 в 13:40 +1
Да, подойдёт. Но вы можете подождать пару-тройку дней. Я дошлифую кэширование и выложу с исправлениями указанных здесь недоработок и хотелок.
Loadырь 19 марта 2015 в 13:48 +2
Обновление 18.03.2015.

Теперь компонент работает только с версией InstantCMS 2.2.0.

Обновлена работа с изображениями. Теперь, если выбран пользовательский пресет и файла заглушки с таким названием не существует, будет выведена заглушка с названием small. Поэтому для всех пользовательских пресетов желательно делать файл заглушки, такого же размера.

Переделана функция кэширования.

Подправлены стили. Исправлены некоторые мелочи в плане "юзабилити".

В настройки полнотекстового поиска релеванта вынесены значения длины слова и поле для ввода слов исключений из поиска. Слова короче указанной длины будут исключены из поиска. По умолчанию его значение равно 4 символам (оптимально для кирилицы). Значение можно изменить, как в большую сторону, так и в меньшую (но без фанатизма).

Обновление качать тут.
Demet 7 апреля 2015 в 17:14 0
На InstantCMS 2.1.2 компонент работать не будет? У меня есть народные хаки на сайте, которые не работают на InstantCMS 2.2.1, так что пока переходить на новую версию движка не планирую, а поставить компонент очень хочется.
Loadырь 7 апреля 2015 в 18:14 +1
Есть версия которая будет работать на InstantCMS 2.1.2, но в ней нет двух глобальных вещей, которые есть в последней версии. Нет типа поля "Поле заимствования" и нет функции выбора отправки содержимого формы на емаил или личным сообщением. Другими словами вы будете форму отправлять выбранным пользователям и на емаил и на сайте личным сообщением. Ну, а про поле пока руки не доходят оформить в блог. В остальном версии отличаются в основном работой с полями изображений. Если для вас эти функции не сильно востребованы, то обращайтесь.
Кстати, сегодня-завтра думаю отправить всем обновление с тем, о чём здесь пишу.
Loadырь 7 апреля 2015 в 18:16 +1
Короче. Пора в отпуск....
Loadырь 7 апреля 2015 в 18:19 +1
Это я про обновление конструктора тут расписывал...
Loadырь 7 апреля 2015 в 18:25 +1
Попробуйте relevanter.1.2.install.2015_03_16.zip. Этот вариант должен работать с версией 2.1.2.
Demet 23 апреля 2015 в 15:43 0
Попробуйте relevanter.1.2.install.2015_03_16.zip. Этот вариант должен работать с версией 2.1.2.

Поставил ваш замечательный компонент, сделал вывод полем, похожий контент появляется только у новых постов, а старые даже если редактирую, все равно не выводят поле. Что можно сделать, чтобы поле выводилось и в старых постах? Еще съезжают нижние правые колонки выводимого контента, как на скриншоте. Что нужно в стиле поправить, чтобы было все ровно?

Demet 23 апреля 2015 в 17:02 0
Сам ответил на свой вопрос. Для того чтобы выровнять столбики постов, нужно сделать вывод описания, но хотелось бы ,чтобы так было и просто с заголовками. Чтобы похожий контент появился в старых постах, нужно сделать запрос к базе UPDATE `cms_con_тип контента` SET `системное имя в поле контента`=1;
Demet 23 апреля 2015 в 17:12 0
Хотя и с описание такая беда случается sad

Loadырь 23 апреля 2015 в 18:43 0
Demet:
старые даже если редактирую, все равно не выводят поле
Не могу воспроизвести данную ошибку. Вы какое поле используете - "Похожий контент" или "Похожий контент - сквозное"?
По поводу стилей - в файле templates\default\controllers\relevanter\relevants_default_list.tpl.php в строке 6 добавьте css класс row-in, чтоб стало так.
Код PHP:
  1. <div class="relevants_list_item cols_<?php echo $tpl['number_cols'];?> row-in <?php echo $ctype['name']; ?>_list_item<?php if (!empty($item['is_vip'])){ ?> is_vip<?php } ?>">
Соответственно в вашем шаблоне и в шаблоне вывода релеванта сделать подобным образом
Demet 23 апреля 2015 в 19:07 0
Не могу воспроизвести данную ошибку. Вы какое поле используете - "Похожий контент" или "Похожий контент - сквозное"?
Уже решил проблему, просто не выводился похожий контент в постах созданных ранее, но сделал запрос к базе в все стало хорошо.
Demet 23 апреля 2015 в 19:19 0
Заменил 6 строку в relevanter\relevants_default_list.tpl.php с

Код PHP:
  1. <div class="relevants_list_item cols_<?php echo $tpl['number_cols'];?> <?php echo $ctype['name']; ?>_list_item<?php if (!empty($item['is_vip'])){ ?> is_vip<?php } ?>">
на

Код PHP:
  1. <div class="relevants_list_item cols_<?php echo $tpl['number_cols'];?> row-in <?php echo $ctype['name']; ?>_list_item<?php if (!empty($item['is_vip'])){ ?> is_vip<?php } ?>">
но ни чего не изменилось, строки и так и остались кривыми. Шаблон у меня дефолтный.
Loadырь 24 апреля 2015 в 06:13 0
У вас видимо не подключены стили от Олег Васильевич я. Тогда добавьте в конец файла templates\default\controllers\relevanter\styles.css строки
Код PHP:
  1. .row-in {
  2. margin: 0;
  3. padding: 0;
  4. width: 100%;
  5. }
Demet 24 апреля 2015 в 20:44 0
Строки выровнялись, стало все ровно, но появилась другая проблема, если в релеванте стоить вывод 6 похожих новостей, по выводит 5, если поставить 7, то выводи 6 и так далее. Это как то можно пофиксить?
Demet 24 апреля 2015 в 22:01 0
Когда ставлю галку "Выводить записи в случайном порядке" то показывает все 6 из 6, но только убираю галочку, как опять выводи 5 новостей.
sinon 24 апреля 2015 в 13:32 0
Установил компонент на версию 2.2.1 выскакивает следующая ошибка при выводе виджета
Notice: Array to string conversion in /system/controllers/relevanter/hooks/relevant_events.php on line 52
Notice: Undefined variable: category in /system/controllers/relevanter/hooks/relevant_events.php on line 72
Notice: Undefined variable: subcats in /system/controllers/relevanter/hooks/relevant_events.php on line 85

Подскажите как исправить можно?
Loadырь 24 апреля 2015 в 18:56 0
Notice: Undefined variable: category in /system/controllers/relevanter/hooks/relevant_events.php on line 72 Notice: Undefined variable: subcats in /system/controllers/relevanter/hooks/relevant_events.php on line 85
Про эти знаю, а как вы первое предупреждение получили? Можно скрин настроек и его место установки, чтоб воспроизвести можно было.
alexbabo 7 июня 2015 в 17:34 0
Пожайлуста проверьте. На странице с где выводятся релевантные стаьти,перестает работать райтинг статей.
alexbabo 7 июня 2015 в 17:36 0
Извиняюсь за орфографию,с мобилы вводил текст.
Loadырь 8 июня 2015 в 16:35 +1
Да, грядёт "великое обновление" компонента. Но надо время.
alexbabo 8 июня 2015 в 18:44 0
хорошая новость
ivanish 20 июня 2015 в 13:37 0
Это супер! Будет ли возможность как-то кешировать результаты подбора? У меня после установки компонента нагурзка выросла в 10-14 раз.
Loadырь 20 июня 2015 в 17:24 0
Кэширование есть. Включается, если включено кэширование в настройках сайта. Есть некоторые ошибки (рейтинг не работает) и предупреждения (не объявлены переменные) при получении данных из кэша. Но это устранено, но пока не выложено. Вопрос, чем или как вы определяете возрастание нагрузки в 10-14 раз?
ivanish 13 июля 2015 в 18:26 0
Панель у хостера. Проводил проверку, включал компонент - нагрузка 500, выключал - 40. Штука полезная, но выжирает ресурсы, начинаются письма - вас ждет более мощный тариф.
Loadырь 13 июля 2015 в 19:56 0
Если не секрет, по каким полям делали полнотекстовый поиск. Попробуйте, оставить поиск только по заголовкам. Эффект тот же будет?
qwest 13 июля 2015 в 21:33 0
В Dle помнится давно давно кто то такой модуль писал тоже с конскими нагрузками мучились.
Но потом как то решили.
Gudan 18 июля 2015 в 12:37 0
Никто не сталкивался с такой проблемой? В сборке файл имеет название relevants_across.php, но при этом выдается ошибка, что нет файла relevantsacross.php. Переименовываешь и вроде работает.
Loadырь 18 июля 2015 в 13:45 0
У вас видимо стоит дебагер от WebMan. Как по ссылке и описано, все названия файлов полей не должны иметь нижних (или каких-либо вообще) подчёркиваний. Поэтому смело переименовывайте и это касается не только данного компонента, а всех что имеют поля с подобными названиями файлов.
zotak 27 августа 2015 в 00:35 0
А зачем в установочном архиве лежит smile (1).zip архив, так и должно быть ?
Loadырь 27 августа 2015 в 07:29 0
Где вы его там нашли? Проверьте свой комп на вирусы. Может они добавляют в архивы что-то своё при скачивании.
zotak 27 августа 2015 в 10:55 0
И правда, уже нет, извиняюсь!
Loadырь 27 августа 2015 в 11:27 0
zotak:
уже нет
Так ведь и не было. Архив повторно не перезаливался.
zotak 27 августа 2015 в 22:50 0
Имелось ввиду что перекачал и все ок, что-то я напортачил. Еще раз извиняюсь.
zotak 27 августа 2015 в 22:52 0
У кого была ситуация что вместо похожего контента надпись - Array, помогите побороть, переустановка не помогает.
Loadырь 31 августа 2015 в 22:11 0
zotak , я так и не смог воспроизвести вашу надпись - Array. Обновил файлы в разделе дополнений, где устранил замеченные недостатки, кроме вашего. Попробуйте переустановить полностью у себя компонент из нового архива.
Игорь Lu 30 октября 2015 в 03:19 0
Ставлю в настройках ревеланта галочку на против «Доводить количество записей до нужного, если не достаточно найдено» и на некоторых страницах получаю белый экран. Включаю в настройках сайта отладку, ничего не показывает, всё тот же белый экран.
Проверьте эту проблему. Ставил все версии, везде встречается одна и та же проблема.
Loadырь 30 октября 2015 в 07:09 0
Зря вы её ставите, она удваивает нагрузку на сервер. А на каких страницах выходит белый экран? Где ничего не может быть найдено?
Dimson 26 ноября 2015 в 17:21 0
В админке, для типа контента статьи пытаюсь добавить поле, получаю кривую страницу и ошибку Fatal error: Cannot redeclare class fieldRelevantsAcross in C:\VertrigoServ\www\test.ru\system\fields\relevantsacross.php on line 53 . Двиг 2.3.0, версия 1.7. Как вылечить?
Loadырь 26 ноября 2015 в 17:26 0
Удалить файл \system\fields\relevants_across.php не задумываясь.
BoAnRo 2 апреля 2016 в 23:06 0
Хотел установить этот компонент на свой сайт, но в магазине дополнений прочитал в отзывах что иногда почему-то тормозит на InstantCMS 2.4.0. Отзывы без подробностей.
Понимаю, Loadырь, что Вы не экстрасенс, но все же нет ли у вас предположений о том, что может вызывать такие тормоза именно в последней версии ICMS 2.4.0

А так же хотел спросить других пользователей этого компонента, не замечали ли Вы таких проблем?
Loadырь 17 июля 2016 в 09:04 0
boanro:
Отзывы без подробностей.
Я на такие отзывы даже не реагирую. Для работы без тормозов не ставьте галочку "Добавлять до нужного количества" (точное название не помню, но смысл такой), в остальном всё зависит от железа сервера.
Krasn 17 июля 2016 в 08:44 0
установил 1.8
Хотел вытаскивать похожий контент с доски объявлений...из категорий...так и не понял как можно объявления в похожий контент вытащить...

Сделал на странице со статьями с одной категорией..вытаскивает в записи похожие статьи...можно сказать что компонент удался для удобства пользователей читающих статьи чтоб не прыгать обратно на страницу и не искать подобное после прочтения одной из записей....

Не заметил торможения загрузки страницы, на каждой странице еще есть видео: как только видео прогружается в статье - все хорошо, хотя видео стоит в центре статьи прогружается оно дольше чем "похожий контент" стоящий в конце. Можно сказать основной контент и похожий - прогружаются одновременно.


За удобство однозначный плюс!)
Loadырь 17 июля 2016 в 09:01 0
Krasn:
Хотел вытаскивать похожий контент с доски объявлений...из категорий
Уберите галочку "Автоопределение категории" и укажите нужную.
Krasn 21 июля 2016 в 19:07 0
спасибо за совет - попробую отпишусь.
а еще понял для себя что для статей тегов не надо много - пишу теперь один тег в любой статье "название катигории" чтоб не путаться и вытаскивает отлично)....
kdv1978 21 июля 2016 в 22:26 0
Loadырь скажите как уйти от этого предупреждения - PHP Notice: Undefined variable: current_cat_id in /home/сайт/system/controllers/relevanter/hooks/relevant_events.php on line 100
Loadырь 22 июля 2016 в 09:54 +2
Лучший вариант уйти от ошибки - дождаться обновления 1.9. Примерно 1 - 1.5 недели.
BoAnRo 22 июля 2016 в 10:11 0
А после обновления можно будет выключить отображение поля "показывать релевантный контент" для страницы создания контента? так чтобы простые пользователи не могли выключать отображения похожих записей на странице их публикации.
Loadырь 22 июля 2016 в 12:06 0
Вполне возможно, но будет опционально.
Loadырь 29 июля 2016 в 21:51 0
Обновил компонент, теперь current_cat_id - defined.
pajnut 10 августа 2016 в 07:16 0
Последняя версия не работает на двух сайтах проверял с различными настройками, версия 2.5.1 чистая установка, перепробовал и с другими шаблонами, вывожу виджет и все, страница с записью не грузится.
Loadырь 10 августа 2016 в 07:56 0
А что отладка говорит?
pajnut 10 августа 2016 в 08:18 0
тишина, тупо белый экран и все, режим отладки включен
Loadырь 10 августа 2016 в 09:01 0
Только что скачал последнюю версию, поставил. Нужно больше информации по белому экрану.
pajnut 10 августа 2016 в 09:49 0
отписал тех поддержке, получить текст ошибки не удалось, описанными методами в статье предложенной вами
Pasechnik 16 августа 2016 в 22:24 +1
Последняя версия не работает на двух сайтах проверял с различными настройками, версия 2.5.1 чистая установка, перепробовал и с другими шаблонами, вывожу виджет и все, страница с записью не грузится.
Аналогично. Loadырь, исправьте пожалуйста.
Loadырь 17 августа 2016 в 20:08 +3
Поправил.
pajnut 17 августа 2016 в 21:09 0
Спасибо, совсем другое дело
Михаил 24 сентября 2016 в 10:36 0
Здравствуйте, установил компонент. Все работает.
Подскажите, где можно добавить проверку на выключенный материал? Т.к. в данный момент он выводится в блоке похожих, даже если http://joxi.ru/82QeQGWfzz9l2d
Спасибо)
BoAnRo 2 октября 2016 в 00:15 0
Объясните мне пожалуйста, чем отличается результат если поставить галочку "Фильтр по тегам" (которая появилась в версии 1.9 компонента) от результата который получается если в блоке "Полнотекстовый поиск" выбрать "Искать по тегам" и "Брать для поиска сначала: теги"?
Loadырь 2 октября 2016 в 10:38 0
Фильтр по тэгам работает шустрее (менее прожорлив по ресурсам), поэтому его лучше использовать если нужны записи именно по тэгам. Также если у вас фраза тэга состоит из нескольких слов, то фильтр будет искать по полной фразе в тэгах, а полнотекстовый поиск будет искать по каждому слову из фразы отдельно.
BoAnRo 2 октября 2016 в 13:56 0
Прекрасно! Мне как раз и нужно чтобы искало по полной фразе в тэгах. Еще раз спасибо за компонент и за работу над его развитием!
BoAnRo 20 февраля 2017 в 23:35 0
После обновления на версию компонента 1.9.2 компонент у меня работает не правильно. Вместо выборки по тегам (вывод настроен через опцию "фильтр по тегам") выводит просто последние 2-3 публикации.
Loadырь 21 февраля 2017 в 14:48 0
Нужно больше инфы. Можно в личку. Как выводите (виджет, поле)? Заполнено ли поле с тегами в данной записи? Где выводите (список, запись)?
BoAnRo 21 февраля 2017 в 18:21 0
Вывожу как поле. Теги для записи конечно есть, тем более до обновления все правильно выводилось. Вывожу в записи. Дополнительную инфу сейчас в личку отправлю.
Pocus 22 февраля 2017 в 15:56 0
Скажите, пожалуйта, чем этот компонент отличается от штатного виджета "Список контента" с включенной опцией "Выводить список похожих"?
Я проверить не могу, у меня на тестовом сайте контента почти нет.
Jestik 22 февраля 2017 в 16:17 0
Тем что у коробочного какой то непонятный алгоритм, я код не смотрел, так что не знаю, но у меня нормально не выводил, а этот все очень классно выводит
BoAnRo 22 февраля 2017 в 23:50 0
Скажите, пожалуйста, чем этот компонент отличается от штатного виджета "Список контента" с включенной опцией "Выводить список похожих"?
Тем, что в "штатном" виджете с опцией "Выводить список похожих" "Похожесть" определяется по названию записи с учётом стоп слов, а в компоненте "Похожий контент" есть много опций для настройки выборки материалов. Например, по тегам.
ermakover 5 июня 2019 в 20:50 0
Будет работать на 2.11.0? Кто-нибудь пробовал ставить на эту версию?