Компонент "Похожий контент". Обновление для InstantCMS 2.5.1

+34
6.12K
Поскольку в данной теме форума никто не предлагает, гениальных или новых идей, то есть вероятность, что рассматриваемый там функционал будет внесён в дистрибутив. Поэтому, чтобы не было скучно, решил немного обновить старенький компонент.


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

Удалена полностью функция доведения количества релевантов до необходимого (ибо это зло неимоверное).

По умолчанию, при создании релеванта, выполнена оптимальная настройка релевантности записей (поиск по заголовкам в этой категории), для вывода полем или виджетом в записи. Достаточно выбрать только тип контента.

Добавлена опция для вывода информации на месте релеванта, если ничего не найдено. Информация видна только администраторам.

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

Изменилась работа полнотекстового поиска по полю "content". Теперь если это поле участвует в полнотекстовом поиске, то поиск будет произведён. Иначе нет. Полнотекстовый поиск по заголовкам, ключам и тегам не изменился.

Добавлена опция удаления из поисковой фразы цифр и спецсимволов. Раньше это делалось всегда.

Добавлена возможность использовать файл stopwords из папки languages, для очистки поисковой фразы от стоп-слов.

В фильтре добавлена возможность указывать значения полей из записи в фигурных скобках, работать будет, если релевант выводится на странице записи.
Также доступны функции сложения и вычитания цифровых полей или значений. Например, чтобы отфильтровать все записи с рейтингом более, чем на 200 единиц менее рейтинга текущей записи, достаточно прописать такую запись в фильтре: {rating}-200.
Вся строка фильтра тогда получится такой: Рейтинг > {rating}-200. В итоге, если у текущей записи рейтинг равен 450, то отфильтруются все записи с рейтингом более 250 единиц.

Изменилась система наследования файлов шаблонов.
Есть три формы названия файла шаблона:
1. templates/ШАБЛОН/controllers/relevanter/tpl_ИМЯКОНТЕНТА_ИМЯРЕЛЕВАНТА.tpl.php
2. templates/ШАБЛОН/controllers/relevanter/tpl_default_ИМЯРЕЛЕВАНТА.tpl.php
3. templates/ШАБЛОН/controllers/relevanter/tpl_default.tpl.php
Каждая форма файла сперва ищется в папке с выбранным шаблоном и если такого файла нет, то ищется в папке шаблона default

При отключении компонента, все релеванты в виджетах и полях не будут выводится. Также, если ничего не найдено в релеванте размещённом в виджете, то и сам виджет (шапка, пустое тело виджета) не будет отображаться.

Похожий контент
Компонент

Похожий контент

Скачать 14 887 загрузок


Замечания по его работе, пишите в комментариях. Информацию по обновлению смотрите в разделе дополнений.
0
BoAnRo BoAnRo 8 лет назад #
Очень хорошо, что поддерживаете этот компонент! Но хотел посоветовать на странице этого дополнения в каталоге поставить ссылку на запись в блоге вместо рецензии с антирекламой laugh
+1
Loadырь Loadырь 8 лет назад #
boanro:
поставить ссылку на запись в блоге вместо рецензии с антирекламой
Да ни за что. Это же сам letsgo и его команда писали эту рецензию. v
Скрывать мне нечего, а другой рецензии у меня пока нет smile
+1
kdv1978 kdv1978 8 лет назад #
Никак не соображу, можно как-то задать опцию, что бы искал похожий контент из той-же категории в которой находится контент на странице которого мы находимся?
0
Loadырь Loadырь 8 лет назад #
Там есть галочка "Автовыбор категории записи" - она по умолчанию сама определяет категорию у записи. Если её убрать появится обычный селектор выбора конкретной категории выбранного типа контента.
0
kdv1978 kdv1978 8 лет назад #
Галочка эта есть, а вопрос возник в связи с тем, что несмотря на эту галочку, если также стоит галочка на - Показывать записи из подкатегорий, то показывается контент совсем из других категории, например в объяве по продаже дома в данном компоненте отображается продажа щенков. Я считал что - Показывать записи из подкатегорий это отображение всех объяв начиная с корневой в которой находится наше объявление.
Какое предназначение - Показывать записи из подкатегорий ?
0
Loadырь Loadырь 8 лет назад #
Как бы и планировалось, что из подкатегорий только той где сейчас релевант. Нашёл недочёт, который влиял на сброс фильтрации по категории. Скачайте заново и перезалейте файлы.
0
kdv1978 kdv1978 8 лет назад #
Ссылка на скачивание на этой странице поломалась, ведет на 404.
0
Loadырь Loadырь 8 лет назад #
Действительно, глюк системы обнаружили. Пересохранил с "очисткой кэша", теперь заработало.
0
kdv1978 kdv1978 8 лет назад #
Не помогло, сейчас даже если не ставить галку - Показывать записи из подкатегорий стало выводить из других категорий. Причем в объявлениях корректно работает, а статьи - articles нет. Пример - http://www.rk-nn.ru/articles/kakim-dolzhen-byt-horoshii-dachnyi-poselok-dlja-stroitelstva-zagorodnogo-kottedzha-233.html стоят галочки на Автовыбор категории записи и Показывать записи из подкатегорий, обновление последнее.
0
Loadырь Loadырь 8 лет назад #
Порпавил условие для виджетов. Замените файл \system\controllers\relevanter\hooks\relevant_events.php
0
kdv1978 kdv1978 8 лет назад #
Все без изменений, может у Вас осталась та версия где работало если снять галочку на - Показывать записи из подкатегорий? это самая первая версия под 2.5.1.
+1
Loadырь Loadырь 8 лет назад #
Перекрутил этот файл по другому. У меня тут нормально отображается. В настройках стоит только "выводить из этой категории и подкатегорий".
0
kdv1978 kdv1978 8 лет назад #
Спасибо, помогло.
0
skewes skewes 8 лет назад #
"Автовыбор категории записи" решает момент вывода в самой записи похожего материала)))
Круто! +++
Олег Васильевич я Олег Васильевич я 8 лет назад #
Комментарий удален
0
R161Net R161Net 8 лет назад #
Огромное спасибо! +++++ Отличный компонент.
0
BoAnRo BoAnRo 8 лет назад #
Получается, что поле "Похожий контент" просто не работает в типе контента в урле которого нет названия типа контента. (то есть в типе контента который выбран в настройках сайта как по-умолчанию). А виджет работает без проблем на страницах этого типа материала.
Но очень хотелось бы чтобы работало и поле, поскольку его можно разместить сразу после публикации и перед комментариями. Считаю что это самое лучшее место на странице для размещения блока релевантного контента.
Олег Васильевич я Олег Васильевич я 8 лет назад #
Комментарий удален
0
BoAnRo BoAnRo 8 лет назад #
Возможно, причины этой проблемы другие. Для эксперимента поменял тип контента, который по-умолчанию. И теперь в урле первого типа контента уже выводится название контента, но поле "Похожий контент" так и не работает. Вернее само поле появляется, поскольку видно его название, но нет содержимого. А другой тип контента (там где поле правильно выводилось) поставил как по-умолчанию, и поле дальше выводится без проблем.
Наверно нужно искать другую причину почему в первом типе контента не выводится поле. Настройки точно одинаковые. Сверял по каждому полю. У меня настроено - выводить перечень похожих публикаций по тегам.
0
Loadырь Loadырь 8 лет назад #
Скиньте ссылку в личку на страницу, где по-вашему что-то должно выводится, но отсутствует и скрин настроек релеванта. Гляну, что может быть не так.
0
BoAnRo BoAnRo 8 лет назад #
Интересно. Описанная мной проблема была на моем тестовом сайте. А на основном сайте все ОК.
Большое спасибо, Loadырь, за очень хороший и нужный компонент!
0
Dorimen Dorimen 8 лет назад #
Плохо, что компонент выводит просроченный контент. Например, в объявлениях в похожих выводит объявления, у которых закончился срок публикации. Эти объявления не удалены, так как настройки позволяют их продлить, но и не активны. А компонент их выводит.
0
Loadырь Loadырь 8 лет назад #
Обновил компонент, попробуйте повторить данную ошибку.
0
Dorimen Dorimen 8 лет назад #
Есть три формы названия файла шаблона:
1. templates/ШАБЛОН/controllers/relevanter/tpl_ИМЯКОНТЕНТА_ИМЯРЕЛЕВАНТА.tpl.php
2. templates/ШАБЛОН/controllers/relevanter/tpl_default_ИМЯРЕЛЕВАНТА.tpl.php
3. templates/ШАБЛОН/controllers/relevanter/tpl_default.tpl.php
Каждая форма файла сперва ищется в папке с выбранным шаблоном и если такого файла нет, то ищется в папке шаблона default

Можете привести пример, как называть файлы шаблонов? Обновил до 1.8 компонент - перестали показываться похожие статьи. Сайт www.orehovod.com. До обновления старый компонент работал нормально кроме http://instantcms.ru/blogs/blog-loadyrja/komponent-pohozhii-kontent-obnovlenie-dlja-instantcms-2-5-1.html#comment_92397
0
Dorimen Dorimen 8 лет назад #
Прошу прощения за посты. Разобрался. Все ок.
0
Dorimen Dorimen 8 лет назад #
При добавлении поля в настройках компонента, а также при установке самого компонента на последнем этапе получаю ошибку 503 503 Service Unavailable:
0
Dorimen Dorimen 8 лет назад #
Ох. И снова прошу прощения. Мой косяк. )
0
batot batot 8 лет назад #
У меня такая же ошибка 503 Service Unavailable. Подскажите, как вы ее исправили.
0
Pawell Pawell 6 лет назад #
Здравствуйте. А есть возможность сделать, чтобы этот компонент (поле) было включено по умолчанию или как то прописать его подключение системно в файле default_item.tpl ?
0
Loadырь Loadырь 6 лет назад #
Используйте поле 'Похожий контент - сквозной'. Действует везде в рамках типа контента, в котором установлено.
0
Pawell Pawell 6 лет назад #
Изменил на сквозной, но, чтобы он по умолчанию был включён надо пересохранять сообщение?
Мне нужно, чтобы он был включён по умолчанию.
0
Loadырь Loadырь 6 лет назад #
Надо не "изменить", а "создать". Создайте новое поле, а затем, если всё будет нормально, удалите старое.
0
Pawell Pawell 6 лет назад #
А такой возможности вставки поля в коде файла нет? Или может как то можно подключить?
Код PHP:
  1. <?php
  2. echo $item['имя поля'];
  3. ?>
+1
Loadырь Loadырь 6 лет назад #
Код PHP:
  1. <?php echo cmsEventsManager::hook('relevant_events', array(
  2. 'relevant_name' => 'системное_имя_релеванта',
  3. 'current_ctype' => isset($item['ctype']) ? $item['ctype'] : array(),
  4. 'current_ctype_category' => isset($item['category']) ? $item['category'] : array(),
  5. 'current_ctype_item' => $item,
  6. 'current_ctype_fields' => array(),
  7. 'is_item' => true
  8. ));?>
0
Pawell Pawell 6 лет назад #
Спасибо большое.
Извините за назойливость. Долго объяснять зачем мне это нужно, но вывести поле, созданное для типа контента, которое выбирает в качестве шаблона 'relevant_name' => 'системное_имя_релеванта', есть возможность?
То есть, в контенте новости я создал новое поле (pole), выбрал тип поля "Похожий контент". А затем уже при создании новости я выбираю основное поле 'системное_имя_релеванта' из вкладок, ранее созданных в настройках компонента.
Можно ли как то подключить прямой вывод компонента непосредственно поля - pole ?
'relevant_name' => 'pole' - не работает.
Ещё раз извините за надоедливость...
0
Loadырь Loadырь 6 лет назад #
Если вы создаёте поле типа "Похожий контент - сквозной", то вы в настройках самого поля в настройках типа контента один раз указываете выбранный релевант. После этого он выводится на всех страницах записей данного типа контента. Если конечно есть, что показывать. При создании и редактировании записи можно только поставить галочку выводить в этой конкретной записи выбранный в админке релевант или не выводить. По умолчанию эта галочка всегда включена.

Если вы создаёте поле типа "Похожий контент" (не сквозной), то вам надо будет в каждой записи при создании/редактировании выбирать какой релевант выводить.

Или я уже совсем не могу понять о чём речь.
0
Pawell Pawell 6 лет назад #
Я хочу подключить созданное ранее поле "похожий контент" системно, для отображения его в каждой новости. Оно у меня подключено уже в выводе сторонней ленты рсс, но, чтобы вывод именно этого поля был в ленте, его надо включить в каждой новости (их более 2000). Я хочу вывести это поле в самом низу и включить его по умолчанию.
Но как вывести поле c именем pole, подключённое к релеванту? я не понимаю.
Вручную включать в каждой новости очень долго, может существует запрос к БД?
0
Loadырь Loadырь 6 лет назад #
Что-то я не пойму. Вы хотите вывести поле в стороннем компоненте?
0
Pawell Pawell 6 лет назад #
Нет. Я хотел, чтобы это поле забиралось в рсс ленту Яндекс Турбо.
+1
Loadырь Loadырь 6 лет назад #
Какой хитрый человек smile
У вас в rss файле доступны поля типа контента ($fields)?
Как-то так, но не уверен.
Код PHP:
  1. <?php echo $fields['pole']['handler']->setItem($item)->parse($item['pole']);?>
0
Pawell Pawell 6 лет назад #
Спасибо.
0
Pawell Pawell 6 лет назад #
Извините. Не могу поменять размер изображения. В настройках указал маленький - small. В настройках пресетов small = 150x110 (не квадратный), но в блоке похожий контент выводятся квадратные изображения размером 125х125. Как сделать, чтобы изображения были 150х110?
0
Loadырь Loadырь 6 лет назад #
А картинки с новым пресетом у выводимых записей есть? Какой размер у самих выводимых картинок? Размер у пресета small = 150x110 стоял изначально или только недавно поменяли?
0
Pawell Pawell 6 лет назад #
Картинки есть, с размером 125х125. Размер пресета менялся, но не недавно.
0
Loadырь Loadырь 6 лет назад #
Компонент выводит картинку с указанным пресетом. Других ограничений по размерам нет. Видимо эта картинка создавалась раньше, чем поменяли размеры пресета.
0
Pawell Pawell 6 лет назад #
Создал новый пресет, указал его название в файле шаблона вывода похожего контента - картинки пропали. То есть возможности сделать размеры 110х150 нет?
0
Loadырь Loadырь 6 лет назад #
Картинки с указанными пресетами создаются при создании/редактировании записи. Если вы создали новый пресет, то вероятно у записи нет картинки с новыми размерами. Поэтому все картинки и пропали. Чтобы появились картинки с новыми размерами, надо пересохранить картинки в тех записях, в которых хотите их видеть. У новых записей они сразу будут создаваться с указанными размерами.
0
skewes skewes 6 лет назад #
Здравствуйте!
а подскажите, пожалуйста, как работает поиск по тэгам?
Вот у меня были записи с тэгами "кино, фильм, отзыв", я добавил в некоторые записи еще тэги такого вида "триллер, детектив, боевик, криминал".
Затем, некоторые записи из похожего контента перестали выводится.

Не подскажите, почему так произошло?

Ведь у всех есть тег - "кино, фильм, отзыв", но не у всех есть триллер или боевик.
Или он берет какое-то количество тегов?

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

А в другой записи вот так стоит - "мнение, триллер, драма" и в ней показываются и эти две записи и еще одна, которая имеет тоже три тега с конца или на конце - "мнение, триллер, драма".

То есть, такое ощущение, что он, похожий контент, ищет по 3-м последним тэгам)))

Как можно увеличить данное количество тэгов для поиска?
0
Loadырь Loadырь 6 лет назад #
У вас как в настройках выбраны опции? Пришлите скрин.
+1
Loadырь Loadырь 6 лет назад #
Вот смотрите, у вас стоит галочка "Фильтр по тегам" и ниже ещё задействован полнотекстовый поиск с поиском по тегам, заголовкам и прочим. Все эти фильтры складываются как "И", а не как "ИЛИ". То есть в вашем случае он ищет записи у которых есть "триллер или боевик" в тегах, а также в названии , описании и ключевых словах. От этого мало чего находит. Вам надо или убрать фильтр по тегам или убрать полнотекстовый поиск.
0
skewes skewes 6 лет назад #
Спасибо большое)))
0
pavlion pavlion 4 года назад #
Компонент еще рабочий? Поставил на 2.13.1 куча ошибок, а сайт в хлам поломался. Есть может где похожие компоненты?

Еще от автора

Конструктор форм iForms: онлайн калькулятор
Краткая инструкция, по созданию онлайн калькуляторов с помощью конструктора форм.
Конструктор форм iForms. Добавление записи в типы контента гостем.
С момента моей прошлой записи на эту тему прошло больше двух лет. За это время двойка претерпела немало изменений.
Редактор разметки iTiny
Шо! Опять! (c)))
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.