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

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

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

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

Перейти на форум:
Похожие темы
Темы Форум Ответов / Просмотров Последние сообщения
Автоматическая обработка картинок у PhpFusion 7  →  Вопросы новичков 18 / 15458 22.11.2017 17:34
[htaccess] Автоматическая перелинковка /news.php в /news  →  Вопросы новичков 8 / 5730 08.09.2014 13:06
Перелинковка  →  СЕО 9 / 1550 15.05.2011 08:23
Топ 5 пользователей форума
Zaxap Zaxap (1,090)   Vova Vova (877)   Pisatel Pisatel (678)   util util (666)   SchreiBear SchreiBear (625)