Забыли пароль?
Запросите новый здесь.

Автор темы: Pisatel
ID темы: 1763
Информация:
Тема содержит 12 сообщения, была просмотрена 3207 раз.
Просмотр темы
PHP-Fusion Russia » Поддержка 7 версии » Плагины
 Распечатать тему
Автоматическая перелинковка
Pisatel
Мастера, вопрос: существует ли плагин для автоматической перелинковки, например, статей? Или, может, кто видел подобный скрипт не для фьюжн? Сделал себе Похожие статьи- это тоже, своего рода, перелинк, но хотелось бы именно слова или фразы из текста выхватывать и автоматом искать их в других статьях. Реально ли это? Аль тока ручками?
 
Web
Polarfox
Реально = нагрузка.
Всегда делайте backup перед изменениями | Указывайте свою версию в подписи/профиле.
Ежели кто забанен за спам, но не считает себя ботом: можете сообщить мне об этом, все будет хорошо.

PolarLab - вход для подопытных
 
Web
Pisatel
Нагрузка- согласен. Но! Можно бы было сделать типа такого: запрос страницы-> скрипт ищет совпадения (идет нагрузка)-> найдено, перелинк, статья автоматом перезаписана в базу с уже имеющимися ссылками. То есть, реализовать так, чтобы поиск был один раз, либо запускать его вручную из админки. Блин, реально это весьма сложно... Ведь нужно только в тексте искать, исключать, например, ббкод... Если подобное кто встречал- было б интересно посмотреть, может, адаптировали бы вместе для фьюжн.
 
Web
dark
В принципе то описанная схема простая в реализации, вопрос в другом - а по какому принципу выбираются слова/фразы для поиска.
 
Pisatel
Думаю, что если в данном вопросе полностью автоматизировать процесс, это будет ужасная просто нагрузка. Поэтому я думаю, было бы логичнее вводить ключевые слова вручную в базу, и чтобы поиск совпадений производился без учета регистра, склонений падежей и т.п.
 
Web
dark
Тогда нужно делать на сайте что то типа энциклопедии с нужными словами/фразами и уже эти фразы искать по тексту и регуляками/ простой заменой менять текст на ссылки, при этом учитывая что бы не менялись слова в bb кодах, уже существующих ссылках и т.п.
 
Pisatel
Нашел у PolarFox'а вот это http://unlogic.info/forum/viewthread.php?thread_id=115- в принципе, это уже кое-что
Можно попробовать что-то типа этого. Например, у нас есть статья с описанием функции. Тогда со всех остальных статей можно попробовать сделать ссылку на эту статью. Так как пробелы нельзя ставить, пробую заменить, но не знаю, пойдет ли такая замена
Загрузить источник  GeSHi: PHP
  1. dbquery("UPDATE ".DB_PREFIX."articles SET article_article=REPLACE( article_article, '".stripinput('функция')."','".stripinput('<a&nbsp;href='articles.php?aricle_id=5'>функция</a>')."') WHERE article_id != '5'");
Добавлено за 0.032 секунд, используя GeSHi 1.0.8.10

Это только рассуждения.:-)
UPD
Создал новую страницу, вписал это
Загрузить источник  GeSHi: PHP
  1. dbquery("UPDATE ".DB_PREFIX."articles SET article_article=REPLACE( article_article, '".stripinput('функция')."','<a href="articles.php?aricle_id=5">функция</a>') WHERE article_id != '5'");
Добавлено за 0.030 секунд, используя GeSHi 1.0.8.10

Ошибок не выдало, нажал предпросмотр, ссылка кликабельна... но чет стремно, статей куча, боюсь тестировать:-)
UPD
Последний вариант запроса выглядел так
Загрузить источник  GeSHi: PHP
  1. dbquery("UPDATE ".DB_ARTICLES." SET article_article = REPLACE( article_article, 'свадьба', '<a href="page/svadba.php">свадьба</a>') WHERE article_id = '1' LIKE '%свадьба%'");
Добавлено за 0.031 секунд, используя GeSHi 1.0.8.10

но чего-то не хочет менять. Может, из-за кириллицы в запросе?
Изменил(а) Pisatel, 13.09.2013 07:53
 
Web
Polarfox
У тебя не уникод?
Всегда делайте backup перед изменениями | Указывайте свою версию в подписи/профиле.
Ежели кто забанен за спам, но не считает себя ботом: можете сообщить мне об этом, все будет хорошо.

PolarLab - вход для подопытных
 
Web
Pisatel
PolarFox, нет. Вот рабочий код, в одной статье проверил- работает
Загрузить источник  GeSHi: PHP
  1. $test = "<a href=\'page/svadba.php\' title=\'Организация и проведение свадьбы в Ярославле\'>свадьба</a>";
  2.  
  3. dbquery("UPDATE ".DB_ARTICLES." SET article_article = REPLACE(article_article, 'свадьба', '".$test."') WHERE article_id = '1'");
  4.  
Добавлено за 0.040 секунд, используя GeSHi 1.0.8.10

Проблема была в синтаксисе, этого было не видно при создании новой страницы, я создал новую панель=>предпросмотр, пришлось экранировать \'
UPD
В общем, работает. Сейчас попробовал убрать условие where из запроса и прошел по всем статьям в поиске и замене другого слова- все получилось. Теперь есть идея и примерный план реализации полуавтоматической перелинковки- осталось найти того, кто это реализует в плагин:-)
Нужна проверка на: если слово уже окружено тегами, его игнорировать, дабы дважды не окружить.
Игнорировать все, что в бб, кроме, например, [ u ], [ b ], [ s ], [ i ]
Поработать над окончаниями, дабы искалось точное совпадение. Сейчас, например, при поиске "корпоратив" будет заменено (частично) и слова "корпоративного", и "корпоративный"- весьма несимпатично.
Изменил(а) Pisatel, 13.09.2013 11:48
 
Web
dark
при поиске "корпоратив" будет заменено (частично) и слова "корпоративного", и "корпоративный"


как вариант искать тогда " корпоратив " (добавить пробелы по краям слова), при этом не забыть добавить пробелы в заменяемом варианте.
 
Pisatel
dark, да, я уже думал об этом. Либо в запросе использовать LIKE. Я уж себе половину статей перелинковал, пока испытывал:-)
Попробую, конечно, слепить плагин, вещь-то ведь полезная, но это будет не скоро...
 
Web
Polarfox
Pisatel, регуляркой менять разве что, а потом функции mysql передавать а она запросит чонить еще...
Ну это план такой.
Всегда делайте backup перед изменениями | Указывайте свою версию в подписи/профиле.
Ежели кто забанен за спам, но не считает себя ботом: можете сообщить мне об этом, все будет хорошо.

PolarLab - вход для подопытных
 
Web

Поделиться этой темой
Социальные закладки: Vkontakte Odnoklassniki Mail.ru Facebook Google Tweet This
URL:
BBcode:
HTML:

Перейти на форум:
Похожие темы
Темы Форум Ответов / Просмотров Последние сообщения
Автоматическая обработка картинок у PhpFusion 7  →  Вопросы новичков 13 / 2468 21.11.2017 11:02
[htaccess] Автоматическая перелинковка /news.php в /news  →  Вопросы новичков 8 / 3975 08.09.2014 13:06
Перелинковка  →  СЕО 9 / 1027 15.05.2011 08:23
Топ 5 пользователей форума
Alex Alex (1,166)   Zaxap Zaxap (1,078)   Vova Vova (877)   Pisatel Pisatel (678)   util util (666)