Возможно ли на Друпале сделать автоматическую переделку контестных слов в сылку на страницы, где такие слова тоже встречаются (как в википедии)?
Т.е. вводится контент, постится и мы видим, что некоторые слова становятся ссылками.
Например слово: [url=http://www.5435435.ru/sitemenu]Друпал[/url] само стало ссылкой в обычном тексте и автоматически зоздалась ссылка на страницу где слово Друпал встречается...
Думаю не нужно объяснять что это очень хорошо скажется на поиске вашего сайта - больше народу попрёт с поисковиков :~)
Как сделать? Возможно?
Комментарии
"...(как в википедии)...автоматически зоздалась ссылка на страницу где слово Друпал встречается..."
А если слово Друпал встречается на сотне страниц?
В википедии ссылка создаётся на страницу "Друпал" (она единственная).
Модуля не знаю, вопрос интересный.
(...через фильт ввода что-ли такую штуку делать надо или как...)
Пытался сделать самостоятельно через функцию preg_replace()
Но как выяснилось у Друпала так всё закручено-заверчено с кодировкой, что сделать даже такую элементарную замену не представилось возможным
Возможно менять только либо циферки, либо английский алфавит.
Вот такая хрень....
Специально для таких случаев существует функция mb_ereg_replace() из расширения mbstring для PHP.
---
http://drupal5.ru - информация для друпателей
качественные ответы только на качественные вопросы
Без разницы.
Вот смотри как выглядит на Друпале "слово" в юникоде:
И попробуй замени его на что-то другое :-))))))))))))))
Drupal тут почти непричём, это особенности работы PHP. Однако при включении mbstring или использовании функций с префиксом mb* можно более-менее сносно работать с юникодом. И слово в юникоде тогда будет выглядеть в виде человекопонятной строки. К сожалению функции для перловых регвыражений (PCRE) под mbstring не доступны, доступны только регвыражения POSIX, что несколько ограничивает полёт фантазии
--
Администратор сайта «Drupal — Россия»
на вопросы по Drupal отвечаю только на форумах, не пишите в почту и приватом!
Здрасьте. Показанный выше пример не имеет отношения к utf-8.
---
http://drupal5.ru - информация для друпателей
качественные ответы только на качественные вопросы
Попробуйте. Прогоните текст через функцию Друпала decode_entities(), а уже после этого через мультибайтовый ereg.
---
http://drupal5.ru - информация для друпателей
качественные ответы только на качественные вопросы
Кто-нибудь ставил модуль:
http://drupal.org/project/wordfilter
Может быть его можно переделать.
Интересует работает ли он с кириллицей? Или только с латиницей?
Я бы упростил задачу делая ссылки не на страницы, а на термины, например словаря tags в котором у нас будут лежать ключевики, которыми мы будем метить, ноды. Будет логичнее и проще.
Поставил я вобщем себе энтот модуль:
http://drupal.org/project/wordfilter
Рулит нормально.
Можно самому набрать любые слова и сделать замену на ссылки при посте статей как душе угодно
Самый простой вариант:
Это сделать дамп таблицы wordfilter
Внести изменения и снова залить. так быстрее.
Если кто выдумает чё-нить поприкольнее - плиз пишите сюды
нука нука расскажите подробней
Ну чё, ставишь энтот мудуль (указанный мной выше).
Его фанкция менять бэдвордс (плохие слова) на другие - какие хочешь.
Вот.
В админке ставишь замену обычно употребляемым словам на твоём сайте по такому типу, например:
Меняем слово "скрипт" на -> [*url=http://www.drupal.ru*]скрипт[*/url*]
(лучше это делать в дампе - в админке замахаешься, т.к. там всего одно поле даётся).
В результате получается следующее:
юзер постит текст типа такой:
"Я сделал самый супер-пупер лучший скрипт форума....." ну и т.д.
В итоге получаем, что автоматически слово "скрипт" переделывается в ссылку, гна котороую очень приятным образом реагируют поисковые машины.
Хотелось бы конечно как-то более прикольнее реализовать формулу добавления слов в БД....
1. А где можно прочесть о том как поисковики реагируют на внутренние ссылки?
2. Как он будет реагировать если ключевое слово уже ссылка?
Пробуй тут читать например:
http://www.searchengines.ru/articles/004540.html
http://www.citforum.ru/marketing/articles/search.shtml
Но это абсолютно точно, что один из главных приоритетов в алгоритме поиска.
...ага, значит всё-таки через фильтр сделано...
Я думаю надо писать свой модуль.
Будет брать из словаря термины и искать их в тексте, при нахождении - переделывать в ссылки. При редактировании терма адрес можно заносить в синонимы. При отсутствии ссылки (в синомах) открывать стандартную страницу термина.
Как идея?
Да отличная идея!
Кто бы только сделал...
Сделай, а?
А мы тебе за это спасибо скажем
пока не могу.
если желание останется (у вас) и никто не напишет - попробую на следующей неделе.
и желательно в этом модуле дать возможность также задавать замену слова конкретной ссылкой вручную
надо делать свой свой репозиторий и толпой разрабатывать модули, а не так что один делает, а все смотрят. я т.к. не программер мог бы потестировать )))
А на друпал.орг может кто кинет идейку. может быть это уже есть на какой-либо стадии разработки....
или подскажут чего путнего....
что для поисковых систем важен также ключ title в ссылке. желательно, чтобы он совпадал или был похож на название или описание той страницы, куда ведет ссылка
emzi
Я лично сделал это следующими образом:
В файле: modules/bbcode-filter.inc
Ставим этот код:
// Links without a protocol, with a protocol and with good looking text
'#\[url(?::\w+)?\]www\.([\w:;&,%+~!=@\/\.\-\#\?]+?)\[/url(?::\w+)?\]#si' => '<a href="http://www.\\1" class="bb-url">\\1</a>',
'#\[url(?::\w+)?\]([\w:;&,%+~!=@\/\.\-\#\?]+?)\[/url(?::\w+)?\]#si' => '<a href="\\1" class="bb-url">\\1</a>',
'#\[url=www\.([\w:;&,%+~!=@\/\.\-\#\?]+?)\](.*?)\[/url(?::\w+)?\]#si' => '<a href="http://www.\\1" class="bb-url" title="\\2">\\2</a>',
'#\[url=([\w:;&,%+~!=@\/\.\-\#\?]+?)\](.*?)\[/url(?::\w+)?\]#si' => '<a href="\\1" class="bb-url" title="\\2">\\2</a>',
Вместо этого:
// Links without a protocol, with a protocol and with good looking text
'#\[url(?::\w+)?\]www\.([\w:;&,%+~!=@\/\.\-\#\?]+?)\[/url(?::\w+)?\]#si' => '<a href="http://www.\\1" class="bb-url">\\1</a>',
'#\[url(?::\w+)?\]([\w:;&,%+~!=@\/\.\-\#\?]+?)\[/url(?::\w+)?\]#si' => '<a href="\\1" class="bb-url">\\1</a>',
'#\[url=www\.([\w:;&,%+~!=@\/\.\-\#\?]+?)\](.*?)\[/url(?::\w+)?\]#si' => '<a href="http://www.\\1" class="bb-url">\\2</a>',
'#\[url=([\w:;&,%+~!=@\/\.\-\#\?]+?)\](.*?)\[/url(?::\w+)?\]#si' => '<a href="\\1" class="bb-url">\\2</a>',
Теперь все ссылки на сайте будут иметь свой title
кстати, можно было бы использовать подобный модуль для автоматического изменения имени юзера в ссылку на его профиль
Кстати аналогично можно сделать и для картинок (как известно такие крупные поисковые машины как Гугль и Яхууу индексируют по Alt-у картинок)
В коде того же файла modules/bbcode-filter.inc:
'#\[img=(\d+)x(\d+)(?::\w+)?\]([\w:;&,~%+!=@\/\.\-\#\?]+)\[/img(?::\w+)?\]#si' => '<img width="\\1" height="\\2" alt="" src="\\3" class="bb-image" />',
проставляем alt="....................."