Плагин "Контекстные ссылки"

+40
2.63K
Доброго времени суток!
Не знаю, была ли уже такая разработка. Видел на форуме кто-то искал подобное.
Плагин создает из указанных слов или словосочетаний контекстные ссылки.

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

По умолчанию отлавливаются следующие события:
'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
(строки 87-95).

Установка: разархивировать на хостинге. Зайти Админка-Дополнения-Установить плагины и установить плагин. Включить плагин. Настроить в админке.

Демо: у меня на локалхосте. Можете приехать, посмотреть laugh

Новые исправленные версии плагина смотрим по ссылке.

Приятного пользования!
0
reload reload 12 лет назад #
В админке слова и ссылки вписываются через запятую, поэтому они не должны содержать запятую.
ни чего не понял) через запятую но без нее)
можно пример для танкистов)
0
Марат Марат 12 лет назад #
Это я, наверно, неправильно объяснил )))
В админке есть два разных поля для ввода. Одно для слов или словосочетаний, другое для ссылок, на которые нужно заменять слова. Слова или словосочетания нужно вводить через запятую, также и ссылки. По запятой в коде производится разделение слов друг от друга. Если ваше словосочетание уже содержит запятую, то разделение будет неправильное.
Лучше установить плагин(можно на локалхосте). Там есть демоданные. Сразу поймете. Ничего сложного ).
0
Марат Марат 12 лет назад #
Черт... Опять недоходчиво написал. Лучше пример. Например, заменяющиеся слова и словосочетания: слово, значение слова, много много слов, буква, предложение. Так и нужно вводить в админке:
Код PHP:
слово, значение слова, много много слов, буква, предложение
В поле для ссылок нужно ввести ссылки для замены
Код PHP:
ссылка1,ссылка2,ссылка3,ссылка4,ссылка5
Ссылки можно вводить как с протоколом(http://), так и без. Количество слов или словосочетаний должно равняться количеству ссылок. Иначе меняться не будет. То есть у каждого слова или словосочетания должна быть ссылка.
0
Александр Александр 12 лет назад #
Демо нет, ну хотя бы скриношот можно глянуть
+1
FlaZa FlaZa 12 лет назад #
Вау, если я правильно понял, то это именно то, что нужно моему сайту. Как раз вовремя, а то я уже собирался искать решение в сторонних скриптах. Автоматическая перилинковка и автоматические партнерские ссылки, насколько облегчается задача:))
Большое СПАСИБО!!!:)))
Пошел тестировать...
+3
reload reload 12 лет назад #
Можно получит автоматическую внутреннею перелинковку на нужные разделы Это просто песня)
+
0
picaboo picaboo 12 лет назад #
плагин супер, но если нужно ввести штук 500 замен - не дай бог ошибится где с урлами, не сопоставить потом
0
Марат Марат 12 лет назад #
Админка плагинов не позволяет реализовать иначе
0
Марат Марат 12 лет назад #
Не получилось )
Фронтэнд
Админка
0
Thanatognozija Thanatognozija 12 лет назад #
Да, это просто супер плагин... Спасибо огромное!
0
FlaZa FlaZa 12 лет назад #
Хм... Странно, делаю все, как описано, но при этом ссылки не становятся активными:( (тестирую на сервере, шаблон newsbox)
В чем может быть проблема? может быть причина в шаблоне?

Вот плагины которые активны: Togle preview, Users ToolTip, Авторизация Loginza, Контекстные ссылки, Одна кнопка.ru, Пинг поисковых систем, Похожие статьи, Релевантные записи в Блоге, Скрытый текст
0
reload reload 12 лет назад #
тоже проверил - не пашет и к статьям добавляются теги <p>
0
reload reload 12 лет назад #
с тегами разобрался - запятые в конце списка мешали - но ссылок не видно
0
Марат Марат 12 лет назад #
проверьте на 2-3 ссылках, введенных вручную... не копированием.
0
reload reload 12 лет назад #
Вообще ни как. И руками писал, и одну ссылку, и несколько, и с http, и без, и со слешем в конце, и без...
слова менял ссылки тоже пробовал и внешние и внутренние - не хочет зараза)
но если в конце списка поставить запятую то в статьях добавляется тег <p> - значит что то пытается сделать)
Кроме видио вроде ничего не ставил...
Ну да ладно, думал для этой цели использовать плагин "антимат" - чтоб контекстную перелинковку делать и скидывать вес на одну страницу)
0
Марат Марат 12 лет назад #
Странно. Тегу <p> неоткуда взяться из-за плагина.
Попробуйте переустановить плагин. И потестируйте с дефолтными ссылками. Создайте комментарий со словом InstantCMS и посмотрите превратиться ли в ссылку.
0
Марат Марат 12 лет назад #
Перезалил архив. Забыл создать папку /plugins/и положить туда /p_contextlinks/. Кто-то может не посмотреть и залить сразу в корень. Если догадались и положили /p_contextlinks/ из архива в /plugins/, то перезаливать не нужно.
Потестировал на реал серваке. Всё работает. У кого не работает, проверьте в той ли папке лежит /p_contextlinks/, установили ли плагин в админке и включили ли. Сразу все списки не загоняйте. Проверьте сначала на 2-3 ссылках.
0
Алфей Алфей 12 лет назад #
Установил, все работает ОК.
0
Alexneva Alexneva 12 лет назад #
Блин, это ж отличная вещь! Молодца!
-8
letsgo letsgo 12 лет назад #
Есть несколько нюансов, которые собственно и решают смысл перелинковки. Здесь этого нет. Бесполезная на практике вещь.

Сколько надо ссылок, чтобы довести запрос до нужного, страница дает 5-10 НЧ, как их поймать и правильно придать им внутренний вес, какие страницы в поисковике подходят под этот вопрос, как раскидать 3-4 тысячи НЧ по сайту исходя из того что написал в начале фразы, как контролировать этот процесс. В общем, деталей много.
0
picaboo picaboo 12 лет назад #
это не модуль перелинковки, для этого нужно писать систему которая будет не из 5 строчек кода как плагин.

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

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

это плагин больше для людей, а не для поисковиков :)
+2
Марат Марат 12 лет назад #
lestgo:
Бесполезная на практике вещь.
Зачем же так категорично. Может кому и пригодится.
И где вы видели, чтобы я писал про перелинковку?
Вот сижу и думаю. Поэт Вы, или всё же Прозаик? И всё больше склоняюсь к тому, что Prozaik. Хотя, быть категоричным как Вы не могу, возможно ошибаюсь.
-1
letsgo letsgo 12 лет назад #
Обратите внимание на слово про "автоматическую перелинковку". Писал про это, чтобы у людей не было иллюзий, что это решит вопрос внутренней перелинковки.
0
soxom soxom 12 лет назад #
Естественно не решит. Помню года 2-3 назад подобное появилось на вордпресе и все просто реально считали что теперь вопрос по внутреннюю перелинковку решен. Однако, практика показала, что особого эффекта от подобного плагина нет. Хотя, думаю, если не пытаться выжать из данного плагина все и линковать не ради seo, а ради удобства для посетителей (то есть в меру, с расстановкой и без фанатизма), то это конечно и позиции может дать. Но не надо рассчитывать на них!!! Лучше думать о посетителе вашего сайта - будет ему удобно или нет. А там глядишь и позиции вырастут.
P.S. Плагин не смотрел, нужно будет конечно проверить ))
0
lezginka.ru lezginka.ru 12 лет назад #
Марату спасибо, больше за энтузиазм :)
я искал подобное решение и спасибо еще раз за исполнение :)
но опасения letsgo имеют место быть.
вопрос:
можно ли указать только раздел - форум, или раздел каталога где будет работать плагин ?
мне нужно:
stati/stranica1
forum/vetka3
blog/vasy
и т.д.
+1
Lana Lana 12 лет назад #
Отличный плагин! Спасибо!
В статьях, если ключевое слово - скажем "салат" - забито в alt картинки - картинка не выводиться и вылазит такое


И хотелось бы, чтобы если слово в начале предложения, то оставалась бы заглавная буква
(сейчас меняется на маленькую).
+3
Марат Марат 12 лет назад #
Про "салат" понял, спасибо! Про заглавную знаю, меняется на то, что введено в админке. Подумаю, что можно сделать.
Как говорил мой преподаватель "Вы пишите, пишите...". Я потом посмотрю и скопом всё исправлю ))
0
lezginka.ru lezginka.ru 12 лет назад #
picaboo , дает полезные советы.

это плагин больше для людей, а не для поисковиков smile
это и даст сео эффект, именно из-за этого :)
0
SidCitron SidCitron 12 лет назад #
Кто протестировал, большую нагрузку создает на БД?
0
Михаил Михаил 12 лет назад #
Я бы рекомендовал переработать модель замены ссылок.
К примеру, под такую:
слово1|ссылка1
слово2|ссылка2

Пример разбора:
Код PHP:
<?php
$string = "слово1|ссылка1
слово2|ссылка2";
// получаем массив с каждой строкой в новом индексе
// $toArray[индекс] = 'номер_строки';
$toArray = explode("\n", $string);
// крутим в цикл
for($i=0;$i<=sizeof($toArray);$i++) {
// режим еще раз, на "ключ=>слово"
list($key,$value) = explode("|", $toArray[$i]);
// ну вот и наши ключь + ссылка, делаем что хотим, я эчну (:
echo "Слово: ".$key." ссылка: ".$value;
// а в вашем случае где то так:
// str_replace($key, "<a href='$value' title='$value'>$key</a>", $строка);
}
?>
0
Марат Марат 12 лет назад #
Спасибо за подсказку! ) Хорошая модель. В мапсе также сделаны префиксы. Не додумался. Будет удобно в админке.
Только замену в цикле делать не стоит, имхо. Лучше забить заново в массивы $pattern и $replacement и пройтись preg_replace() один раз. Если допустим, 500 шаблонов, то плагин 500 раз пройдется по тексту замены. Текст может быть большой. А так будет один проход.
0
Марат Марат 12 лет назад #
К сожалению, так удобно не получится. В админке плагина используется <input type="text">. И с новой строкой никак не прокатит. Если только использовать "|" и ",". Всё равно спасибо. Так будет удобнее.
0
Михаил Михаил 12 лет назад #
И в чем беда? smile Используйте разделитель и все дела.
Такие плагины есть на многих цмс, и используется именно такая модель разбивки, чаще всего через какой-то символ, да и на скорость работы это сильно не влияет.
0
Михаил Михаил 12 лет назад #
Так же мой вам совет, как избежать замены в ссылках либо же в картинках с альт-ом.
Вот пример:
Код PHP:
<a href="http://blablabla.zone" title="ссылка">ссылка
<img src="http://blabla.zone" alt="ссылка" /></a>
и к примеру, мы заменяем слово: "ссылка" на какое-либо значение. Избежать это просто. Достаточно получить 1ый символ ДО вхождения, и сверить - если этот символ входит в исключения: " > < / ' - то попросту не заменять smile Могу подсобить с регуляркой, если сами не знаете как такое провернуть :)
0
Марат Марат 12 лет назад #
Спасибо! ) Справлюсь ) Это не сложно, сделал бы. Просто не учел, что alt и title могут содержать нужное слово, как обычно и бывает на сео-оптимизированных страницах.
0
Марат Марат 12 лет назад #
Вы не поняли. Я имел ввиду так красиво не получится. Модель разбивки хороша, не спорю. Спасибо за подсказку. Даже в однострочном варианте с любым разделителем она лучше, чем было. Менее запутанно.
А я всего лишь говорил о невозможности использовать "\n", что придало бы ещё большего удобства. А невозможно, потому как для плагинов мы не можем создавать админку в нужном нам файле(xml,php....), а всего лишь управляем админкой структурой полей массива, который заносится в конфиг. Поля этого массива разбираются и создаются теги <input type="text"> для каждого, где мы никак не можем использовать "\n". Если бы было <textarea>, тогда другое дело. Я говорил об этом )
0
picaboo picaboo 12 лет назад #
а если сделать подгрузку из текстового файла?
а в самом файле писать:
Код PHP:
слово|ссылка
слово2|ссылка2
т.е. каждую пару с новой строки
0
Михаил Михаил 12 лет назад #
Я как бы на это и намеках. Тот же file_get_contents() и file_put_contents() куда быстрей будут работать чем текущая извращенная модель.
0
Марат Марат 12 лет назад #
Вы упомянули file_put_contents(), а как вы представляете запись в файл в плагине? В модуле или в компоненте это одно, интересует именно в плагине.
Я считаю, что каждый раз для редактирования списка замены лезть по фтп не менее извращенно. Меня лично это сильно ломает.
0
picaboo picaboo 12 лет назад #
Надо писать модуль управления плагинами, через который можно править в базе данные в таблице конфиге плагина
0
Михаил Михаил 12 лет назад #
Да зачем же блин ... ну вы изобретатели велосипедов.
Ладно, сделал для себя как хотел, удаляюсь из темы.
+2
Марат Марат 12 лет назад #
Михаил, выложили бы решение ) Нам же тоже интересно. В конце концов одно же дело делаем. Просто каждый в меру своих профессиональных навыков и знаний. Я же просто любитель.
Конечно, легко это дело можно провернуть. Нужно всего лишь хакнуть файл /admin/applets/plugins.php . И велосипеда не нужно изобретать. Но это неправильно на мой взгляд. Каждое расширение по мере возможностей должно быть самодостаточно и не затрагивать системные файлы. А от хаков одни беды при обновлениях.
0
savin2002 savin2002 12 лет назад #
Странно. У меня со словами в латинице работает, а с кириллицей нет. Не видит русские слова.
0
Марат Марат 12 лет назад #
Проверьте в БД кодировку поля config таблицы cms_plugins. Должно стоять cp1251_general_ci, а также кодировку полей материала, где заменяете (статьи, блоги...)
0
savin2002 savin2002 12 лет назад #
С кодировками всё в порядке.

Еще от автора

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