Плагин "Контекстные ссылки" v1.1 и v2.0

+45
2.68K
Доброго времени суток!!!
Так как предыдущая версия плагина вызвала бурное обсуждение, решил оформить отдельным постом развитие Плагина "Контекстные ссылки", чтобы было меньше путаницы.

Выкладываю две версии плагина.
Версия 1.1 — доработанная версия предыдущей. Исправлены ошибки, которые были замечены. Также видоизменен ввод ссылок в админке. Подробнее читаем в инструкции в архиве. Скачать версию 1.1

Версия 2.0 — вариант плагина с хаком файла /admin/applets/plugins.php, тоже для удобства ввода ссылок. В данной версии ссылки вводятся в текстовую область <textarea>. Каждая пара слово|ссылка с новой строки. Вариант предназначен для тех, у кого много ссылок для замены и кто понимает, что делать. Измененный файл нужно внести в лог ваших изменений, и при следующем обновлении движка, свериться и внести изменения в файле вручную. Скачать версию 2.0

Чтобы установить плагин, нужно удалить предыдущую версию в админке, и установить по новой.

Внимание!!!

Обратной совместимости с версией 1.0 нет. Все пары слово|ссылка при обновлении версии плагина пропадут, и нужно будет вводить по новой. Поэтому сохраните ваши ссылки где-нибудь в текстовом файле и вводите по новой. Как есть, прошу не обижаться.

Приятного пользования!
0
reload reload 12 лет назад #
не прет мне) и эта версия не хочет
что означает эта фраза:
Если количество слов или словосочетаний не совпадает с количеством ссылок, то замена производиться не будет.
вроде через черту если указывать, то совпадать будет 100%)
где я торможу?)))
0
savin2002 savin2002 12 лет назад #
Снова та же проблема, с английскими словами работает, а с русскими нет.
0
Александр Александр 12 лет назад #
Я обнаружил такую проблему на своем сайте, ссылка ставится из материала на который она ведет. Можно это исправить? И еще добавлю, я использую плагин "Похожие записи в блогах" в случае если ключевое слово совпадает с заголовком похожих записей, то так же происходит замена ссылки.
0
Марат Марат 12 лет назад #
Вы правы, опять не учел, что "слово" может быть внутри тегов <a></a> в составе словосочетания, т.е. не сразу после открывающего тега <a>. Время будет, постараюсь исправить.
0
Марат Марат 12 лет назад #
pivua), savin2002 у вас проблемы из-за локали. Вроде бы, preg_replace() не должен зависеть от локали. Погуглил, оказывается зависит. Попробуйте сделать так: перед
Код PHP:
return preg_replace($pattern, $replacement, $text, $limit);
вставить
Код PHP:
setlocale(LC_ALL, 'ru_RU.CP1251', 'rus_RUS.CP1251', 'Russian_Russia.1251');
0
savin2002 savin2002 12 лет назад #
Всё равно не работает.
+1
artlab artlab 12 лет назад #
не понял,что он делает?
к примеру,в тексте есть слово " холодильник " и в настройках плагина на это слово стоит ссылка http://[jkjlbkmybr.ru
Мы видим в тексте слово холодильник как ссылку,указанную в настройках.
Я правильно понял?
+1
reload reload 12 лет назад #
Максим:
Я правильно понял?
правильно...
Марат:
у вас проблемы из-за локали
без разницы - не хочет)
0
artlab artlab 12 лет назад #
был такой плагин в e-107 года три назад,назывался слова-ссылки.
Хорошо,что и у нас появился +++
+1
reload reload 12 лет назад #
нужно подглядеть реализацию плагина антимат который выкладывали здесь, он вроде без проблем работал.
никак руку не дойдут найти его - там тоже замена происходит по выбранным словам...
0
reload reload 12 лет назад #
не тот) другой был. на диске есть только там черт ногу сломит)
а был тут)
http://instantcms.ru/blogs/mysli-ob-instantcms/plagin-anti-mat-v-komentarijah-saita.html
уже нету...
0
Марат Марат 12 лет назад #
Попробуйте ещё вот так: найдите строчку 122
Код PHP:
$v = '/(^<\\w+>|^|[^"<>\'\\s]\\s*)\\b('.trim($v).')\\b/is';
и замените на
Код PHP:
$v = '/(^<\\w+>|^|[^"<>\'\\s]\\s*)\\b('.trim($v).')\\b/uis';
0
Марат Марат 12 лет назад #
А проблема точно в локали. Попробуйте узнать какие русскоязычные локали у вас есть и в setlocale() прописать конкретное название.
0
Alex Optimum Alex Optimum 12 лет назад #
отличный и нужный плагин, искал такой раньше.... Попробовал 1.0 и 2.0, во второй версии всё действительно удобнее. Работает отлично.
Пожелания - вывесли форму добавления новой ссылки в редактор статей, где через запятую указываются ключи контекстных ссылок. Таким образом по нескольким словам появятся ссылки на создаваемую/редактируемую статью. Так же в следующих версиях хотелось бы иметь мягкий переход на новую версию.
0
Марат Марат 12 лет назад #
вывесли форму добавления новой ссылки в редактор статей
Это уже нужно делать отдельный хак компонента "статьи" под плагин. Обратитесь к кодерам, сделают.
Так же в следующих версиях хотелось бы иметь мягкий переход на новую версию.
Плагин уже разделен на два направления. Даже если и будет что-то дорабатываться, то можно будет просто обойтись заменой файла, без переустановки.
0
letsgo letsgo 12 лет назад #
А если сделать небольшой штрих, который сразу придаст плагину нужное звучание. Просто сделать перехват запросов, по которым на сайт заходят, далее автоматически замена просто слова на анкор с ссылкой. Тогда, это будет очень даже полезная вещь.
0
artlab artlab 12 лет назад #
я не много не в теме,просто хотел спросить,а разве скрипт Колдунщик не это делает?
0
vpugachev vpugachev 12 лет назад #
Помогите все таки исправить плагин. Слова написанные латиницей заменяются, а кириллицей - нет. Использую версию 2.0

Марат:
Попробуйте ещё вот так: найдите строчку 122

При этом в компоненте статьи исчезает содержание статьи (сам текст)

Марат:
Попробуйте сделать так: перед

это тоже не помогает
+2
FlaZa FlaZa 12 лет назад #
!!!Исправление плагина!!!

Не работает с кириллицей - РЕШЕНО

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

Решение:
1. Если у вас сервер или VPS(c SSH доступом):
Подключаемся к серверу через SSH(z пользуюсь клиентом PuTTY).

Делаем запрос:
Код PHP:
locale -a | grep ru_
или
Код PHP:
locale -a
и смотрим, есть там "ru_RU.cp1251" или нет(у меня его не было).
Если его нет(хотя, его однозначно нет, если плагин не работает), то делаем запрос:
Код PHP:
localedef --no-archive -c -i ru_RU -f CP1251 ru_RU.CP1251
Теперь повторяем запрос который я приводил выше для проверки наличия нужного языка. Теперь у покажет, что он есть.

Следующий шаг это в файле плагина добавить:
перед
Код PHP:
return preg_replace($pattern, $replacement, $text, $limit);
вставляем
Код PHP:
setlocale(LC_ALL, 'ru_RU.cp1251', 'ru_RU');
Вуаля!!! Все готово, плагин отображает кириллицу!

2. Если вы пользуетесь хостингом:
Пишем вашему хостинг провайдер что-.s он установил ru_RU.cp1251.
Можете(если уж очень тупой хостинг провайдер) сказать ему, что-бы он сделал запрос "localedef --no-archive -c -i ru_RU -f CP1251 ru_RU.CP1251".

Всем спасибо за внимание:)))
0
Марат Марат 12 лет назад #
Как я и говорил, проблема в локали. И скорее всего у тех, чьи сайты расположены на зарубежных хостингах.
0
lezginka.ru lezginka.ru 11 лет назад #
сменил хостера джино на регру
и там и там проблема - не работает с кириллицей
0
vpugachev vpugachev 12 лет назад #
Спасибо. Это действительно помогло!!!
0
nedoriko nedoriko 12 лет назад #
а если так

vm10502# locale -a | grep ru_
ru_RU.CP1251
ru_RU.CP866
ru_RU.ISO8859-5
ru_RU.KOI8-R
ru_RU.UTF-8

что делать?
0
Suslik Suslik 12 лет назад #
у меня совсем не работает
в настройки ввжожу
Mepis|mepis.ru
MEPIS|mepis.ru
ТОР|mepis.ru/forum/thread19.html
но на странице http://mepis.ru/forum/thread19.html#50 ни одной замены :(((
0
Suslik Suslik 12 лет назад #
странно - добавил коммент и появилась ссылка, оно что - при добавлении дописывает ссылки? но ведь если на сайте уже много чего есть - как там ссылки появятся?
+1
FlaZa FlaZa 12 лет назад #
Возникла следующая проблема.
Пока сам не могу разобраться, как её решить(в прошлой версии плагина уже обсуждалось, но рушения так и не последовало).
Итак проблема вот в чем:
Ссылки в адресе который присутствует слово замены, ломается и выводиться код ссылки, с активным словом замены. Аналогичное происходит и с адресом электронной почты. То-же происходит и с картинками в которых вшита ссылка на сторонний сайт в которой присутствует слово замены.

Это ОЧЕНЬ большой недостаток!!!
Ведь на готовом сайте уже огромное количество материала, и редактировать его нет ни времени не желания. Да и новым пользователям объяснять какие слова можно в ссылки и посты добавлять, а какие нет это нереально. А если исключать слова которые могут использоваться в ссылках, это тоже проблематично, тогда их почти не останется.

Поэтому ОЧЕНЬ прошу разобраться с этой проблемой...
0
Марат Марат 12 лет назад #
Посидел, покопался, так и не смог пока сделать так, чтобы не заменяло между тегами <a> и </a>. Регулярки - сложная материя ))) Может кто подскажет. Сама регулярка приведена выше.
0
Helg Helg 12 лет назад #
Спасибо за полезную вещь.
0
vpugachev vpugachev 12 лет назад #
По умолчанию отлавливаются следующие события: 'GET_POST' 'GET_POSTS' 'GET_LATEST_POSTS' 'GET_BEST_POSTS' 'GET_COMMENTS' 'GET_FORUM_POSTS' 'GET_WALL_POSTS' 'GET_ARTICLE': 'GET_ARTICLES'. Если нужно исключить какое-то событие, то просто закомментируйте соответсвующую строку в файле /plugins/p_contextlinks/plugin.php

Что делать если нужно добавить событие.

нужна поддержка компонентов:

FAQ
Каталог
InstantMaps
0
Вежливый Хам Вежливый Хам 12 лет назад #
Марат, спасибо за плагин.
Очень полезно если продвигаешь группу слов по нч.
Но есть косяк какой-то - более 600 линков он не сохраняет.
Как это обойти?
+1
Марат Марат 12 лет назад #
В самом плагине ограничений нет. Дело скорее всего в БД. Измените тип поля config таблицы cms_plugins. Тип поля, установленный по умолчанию TEXT может хранить 65535 байт информации. Поменяйте на MEDIUMTEXT (может хранить больше 16 млн.) или даже на LONGTEXT (более 4 млрд. символов). Делается в phpmyadmin.
0
Алексей Гаврилов Алексей Гаврилов 12 лет назад #
Это типа перелиновка страниц ?
0
tokarev tokarev 11 лет назад #
Товарищи друзья, а есть такой же, но с перламутровыми пуговицами?! Очень надо перелинковать описания объектов на InstantMAPs!
0
Марат Марат 11 лет назад #
Рекомендую использовать более проработанную версию от googlebot Плагин "Контекстные ссылки v2.1". У меня руки не дошли, а googlebot не поленился, взял и доработал )

Еще от автора

Фильтр "Вставка модуля" v 1.0.0
Приветик! Давненько что-то я ничего не писал ) Не знаю было это или не было, вчера увидел темку, решил сделать немного по-другому. Вещь то нужная.
PHP классы для работы с VK API и с API Яндекс Метрики
Доброго времени суток, коллеги! Выкладываю два класса: -для работы с API Вконтакте; -для работы с API Яндекс Метрики.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.