Помощник
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]() |
![]()
Сообщение
#1
|
|
Любитель![]() Группа: Бета-тестеры Сообщений: 282 Регистрация: 2009-07-12 Из: Москва Репутация: ![]() ![]() Всего: 0 ![]() |
Было бы супер сделать этот модуль с подробной настройкой.
Допустим, имеем на сайте ключевое слово "кактус". Если это слово прописано в админке и настроенно чтобы оно отображалось так: <a href="pages/кактус.html" alt="кактус" title="кактус"><b>кактус</b></a> то оно автоматически так и замениться. Это ужасно полезно для СЕО. Спс. |
|
|
||
![]() |
![]()
Сообщение
#2
|
|
Eleanor developer![]() Группа: Администраторы Сообщений: 5 262 Регистрация: 2008-11-11 Из: Николаев Версия системы: RC5 Репутация: ![]() ![]() Всего: 67 ![]() |
Идея хорошая. Каким образом Вы предлагаете это сделать? - Когда страница сформирована, нужно ее всю (страницу) пропустить через какую-то функцию, которая обрамит каждое заданое слово в теги? Так?
|
|
|
||
![]() |
![]()
Сообщение
#3
|
|
Любитель![]() Группа: Бета-тестеры Сообщений: 282 Регистрация: 2009-07-12 Из: Москва Репутация: ![]() ![]() Всего: 0 ![]() |
Нет. Функция работает при отображении текста. Ведь со временем ключи могут добавляться.....
Делаем настройку в админке так: Введите ключевое слово: "Кактус" Ссылка для первого ключевого слова: сайт.ру/pages/кактус.html (галочка активации и поле для ввода URL) Выделить ссылку: Окно выбора: (Жирным, курсивым, подчеркнутым, другой вариант). Действие для всех остальных одинаковых ключей: Окно выбора: (Жирным, курсивым, подчеркнутым, выделить все одинаковые ключи ссылками, другой вариант). ______________________ Пишем статью: На днях я купил красивый кактус. Мой кактус самый кактусовый кактус в мире! Я люблю твой кактус!!! ______________ Отображаем статью: На днях я купил красивый <a href="pages/кактус.html" alt="кактус" title="кактус"><i>кактус</i></a>. Мой <b>кактус</b> самый кактусовый <b>кактус</b> в мире! Я люблю твой <b>кактус</b>!!! _____________ При редактировании, статья без ссылок и т.д. Сообщение отредактировал Jon - 2009-08-23, 18:15 |
|
|
||
![]() |
![]()
Сообщение
#4
|
|
Eleanor developer![]() Группа: Администраторы Сообщений: 5 262 Регистрация: 2008-11-11 Из: Николаев Версия системы: RC5 Репутация: ![]() ![]() Всего: 67 ![]() |
Хорошо.. Когда наступает это самое отображение при выводе статьи или после формировании страницы? И как поступать, если в тексте, где нужно выделить слова будет картинка с альтом, допустим? Цитата На днях я купил красивый кактус. Мой кактус самый кактусовый кактус в мире! Я люблю твой кактус!!! <img src="kaktus.png" alt="Кактус" /> Цитата На днях я купил красивый <a href="pages/кактус.html" alt="кактус" title="кактус"><i>кактус</i></a>. Мой <b>кактус</b> самый кактусовый <b>кактус</b> в мире! Я люблю твой <b>кактус</b>!!! <img src="kaktus.png" alt="<a href="pages/кактус.html" alt="кактус" title="кактус"><i>кактус</i></a>" /> Как Вы предлагаете обходить теги? |
|
|
||
![]() |
![]()
Сообщение
#5
|
|
Любитель![]() Группа: Бета-тестеры Сообщений: 282 Регистрация: 2009-07-12 Из: Москва Репутация: ![]() ![]() Всего: 0 ![]() |
Наступает отображение при выводе статьи. При форматировании, статья без тегов, кодов - "оригинал" одним словом. По поводу альтов не подумал... Но есть решение: Сделать правило, которое даёт ключу обернуться в теги. То есть, перед и после ключа должен быть пробел - если так выполняем действие. Таким образом не будут затронуты словосочетания "кактусовый", "кактусный" и alt="кактус" Но тогда возможны проблемы если alt="мой кактус !" ... тут уже я сдаюсь.... Сообщение отредактировал Jon - 2009-08-23, 20:15 |
|
|
||
![]() |
![]()
Сообщение
#6
|
|
Eleanor developer![]() Группа: Администраторы Сообщений: 5 262 Регистрация: 2008-11-11 Из: Николаев Версия системы: RC5 Репутация: ![]() ![]() Всего: 67 ![]() |
Jon, но ведь в альт тоже может быть разные. Например: "мой кактус справа".
|
|
|
||
![]() |
![]()
Сообщение
#7
|
|
Любитель![]() Группа: Бета-тестеры Сообщений: 282 Регистрация: 2009-07-12 Из: Москва Репутация: ![]() ![]() Всего: 0 ![]() |
значит придётся делать правило, которое пропускает <img***>...
Но как его сделать, я не знаю.... Думаю......... |
|
|
||
![]() |
![]()
Сообщение
#8
|
|
Eleanor developer![]() Группа: Администраторы Сообщений: 5 262 Регистрация: 2008-11-11 Из: Николаев Версия системы: RC5 Репутация: ![]() ![]() Всего: 67 ![]() |
Jon, нужно пропускать вообще все, что находится внутри тегов. Но как это сделать - пока не придумал. Будут идеи - пишите
![]() |
|
|
||
Гость_SHAKA1_* |
![]()
Сообщение
#9
|
|
Гости ![]() |
Как то давно пытался сделать для Slaed модуль "Ключевых слов", тоже хотел сделать функцию выделения ключевых слов в тексте вот что получилось, может пригодится:
Цитата echo kw_strong ('kaktus,кактус', 'На днях я купил красивый <strong>кактус</strong> (kaktus). Мой кактус самый кактусовый кактус в мире! Я люблю твой кактус!!! <img src=" kaktus .png" alt=" Кактус " />'); Цитата На днях я купил красивый <strong>кактус</strong> (<strong>kaktus</strong>). Мой <strong>кактус</strong> самый кактусовый <strong>кактус</strong> в мире! Я люблю твой <strong>кактус</strong>!!! <img src=" kaktus .png" alt=" Кактус " /> Сообщение отредактировал SHAKA1 - 2009-08-24, 14:37 |
|
|
||
![]() |
![]()
Сообщение
#10
|
|
Eleanor developer![]() Группа: Администраторы Сообщений: 5 262 Регистрация: 2008-11-11 Из: Николаев Версия системы: RC5 Репутация: ![]() ![]() Всего: 67 ![]() |
SHAKA1, а насколько производителен этот алгоритм? Вы не могли бы описать что делает Ваша регулярка?
|
|
|
||
Гость_patriot_* |
![]()
Сообщение
#11
|
|
Гости ![]() |
я несколько дальше пошел)
на странице сайта можно выделить слово или словосочетание и в появившемся диалоге ввести описание для этого слова. все это сохраняется на сервере. при выводе страницы (делал для новостей и статей, но в принципе нет разницы) все слова, для которых есть описание выделяются в тексте (настройка в css), а при наведении на них появляется то самое описание. функция замены очень простая
в принципе идею можно развивать, улучшать Цитата Jon, нужно пропускать вообще все, что находится внутри тегов. Но как это сделать - пока не придумал. Будут идеи - пишите можно не теги фильтровать, а title="..." и alt="...". и то и другое можно реализовать регулярными выражениями Сообщение отредактировал patriot - 2009-08-24, 20:28 |
|
|
||
![]() |
![]()
Сообщение
#12
|
|
Eleanor developer![]() Группа: Администраторы Сообщений: 5 262 Регистрация: 2008-11-11 Из: Николаев Версия системы: RC5 Репутация: ![]() ![]() Всего: 67 ![]() |
patriot, мне кажется фильтровать нужно именно теги. Причем, желательно не на всей странице, а именно в новости. Почему именно теги? Мне кажется это более корректно и лишено множества проблем. Фильтровать теги регуляркой по-моиму просто невозможно. Значит, есть только два варианта - вырезанием и обходом. Вырезать теги - слишком ресурсоемко.. А вот обходить их - вполне нормальный вариант, но на большом объеме информации это ж.. Могу набросать вариант обхода тегов с заменой, если кому интересно и готов взяться за решение этой проблемы.
|
|
|
||
Гость_patriot_* |
![]()
Сообщение
#13
|
|
Гости ![]() |
по моему вполне можно фильтровать теги регуляркой... нужны ведь далеко не все теги. то, что внутри тега (например, <img....> или <a...>) не обрабатывать
|
|
|
||
![]() |
![]()
Сообщение
#14
|
|
Eleanor developer![]() Группа: Администраторы Сообщений: 5 262 Регистрация: 2008-11-11 Из: Николаев Версия системы: RC5 Репутация: ![]() ![]() Всего: 67 ![]() |
patriot, ну хорошо. Покажи свое решение.
|
|
|
||
Гость_Ripper_* |
![]()
Сообщение
#15
|
|
Гости ![]() |
ООООО ДААА!! Я сделал это!!
За быстродействие ногами не пинать. UPD: хотя.. моё решение работает довольно шустро. Сообщение отредактировал Ripper - 2009-08-25, 9:53 |
|
|
||
Гость_Ripper_* |
![]()
Сообщение
#16
|
|
Гости ![]() |
Вот, решил сравнить скорость работы мей функции и функции SHAKA1:
Результат:
Как видно, моя функция работает не только быстрее, но и не допускает ошибок, когда два кейворда идут подряд. |
|
|
||
![]() |
![]()
Сообщение
#17
|
|
Eleanor developer![]() Группа: Администраторы Сообщений: 5 262 Регистрация: 2008-11-11 Из: Николаев Версия системы: RC5 Репутация: ![]() ![]() Всего: 67 ![]() |
Ripper, спасибо! Вот уже основная часть модуля есть. Может и за остальную возьмешься?
![]() |
|
|
||
Гость_patriot_* |
![]()
Сообщение
#18
|
|
Гости ![]() |
такая регулярка найдет все ключи, не находящиеся внутри < > Ripper, опередил. разве нельзя обойтись только preg_replace однократно?
так например. (из твоего примера) сори.. перепроверил - моя регулярка недорабатывает ) твое решение корректное Сообщение отредактировал patriot - 2009-08-25, 16:34 |
|
|
||
![]() |
![]()
Сообщение
#19
|
|
Eleanor developer![]() Группа: Администраторы Сообщений: 5 262 Регистрация: 2008-11-11 Из: Николаев Версия системы: RC5 Репутация: ![]() ![]() Всего: 67 ![]() |
patriot, твоя регулярка работает немного некорректно:
Выводит:
Сообщение отредактировал Alexander - 2009-08-25, 16:46 |
|
|
||
Гость_Ripper_* |
![]()
Сообщение
#20
|
|
Гости ![]() |
А остальная часть -- что бы первое слово делал ссылкой, а все остальные просто выделял? Или модуль в админку? Я как бы в eleanor не очень соображаю, не могу всё сам сделать( Только с консультацией в режиме реального времени через мессенджер ![]() patriot, ага... Я долго пытался одной регуляркой решить... У меня есть ещё идея как это сделать, но тогда надо будет пропустить текст через функцию столько раз, сколько кейвордов в тексте (а это не очень быстро ![]() UPD: Хотя... щас попробуем сравнить что быстрее... Сообщение отредактировал Ripper - 2009-08-25, 16:55 |
|
|
||
![]() ![]() |
![]() |
Текстовая версия | ![]() ![]() ![]() ![]() |