dle.in.ua » Шаблоны DLE » Хак - Продвинутый модуль ПОИСК и ЗАМЕНА

Хак - Продвинутый модуль ПОИСК и ЗАМЕНА

Автор: acelote от 12-03-2010, 01:01
В админке DataLife Engine есть хорошая и полезная функция: Поиск и замена. Существует она для поиска и замена текста или кода в базе данных сайта. Но дело в том, что по умолчанию этот модуль ищет текст только в определенных частях базы данных: новостях, комментариях, облаке тегов, статических страницах и в персональных сообщениях.
В админке DataLife Engine есть хорошая и полезная функция: Поиск и замена. Существует она для поиска и замена текста или кода в базе данных сайта. Но дело в том, что по умолчанию этот модуль ищет текст только в определенных частях базы данных: новостях, комментариях, облаке тегов, статических страницах и в персональных сообщениях.
Т.е., если Вы установите модуль форума, блога, фотоальбомов или какой-либо другой модуль, то Вы не сможете заменять текст в таблицах базы данных вышеуказанных модулей. Чтобы решить эту проблему, и сэкономить кучу времени (чтобы лишний раз потом не работать ручками-ручками), нам надо модифицировать всего два файла движка. Речь идет о версии двига 8.3. На более ранних версиях не проверял. Но думаю, получится и там. Буду показывать на примере интеграции DLE Forum версии 2.4. По аналогии, поняв суть кода, можно подвести и под другие модули.
Открываем текстовым редактором файл engine/inc/search.php и вставляем после 63-66 строк, содержащих этот код:


    if (in_array("tags", $_POST['table'])) {
        $db->query("UPDATE `" . PREFIX . "_tags` SET `tag`=REPLACE(`tag`,'$find','$replace')");
        $db->query("UPDATE `" . PREFIX . "_post` SET `tags`=REPLACE(`tags`,'$find','$replace')");
     }


Вот этот код (если Вы хотите, чтобы изменения могли касаться установленного ДЛЕ форума, а не других каких-либо установленных модулей):


    if (in_array("forum", $_POST['table'])) {
        $db->query("UPDATE `" . PREFIX . "_forum_topics` SET `title`=REPLACE(`title`,'$find','$replace')");
        $db->query("UPDATE `" . PREFIX . "_forum_topics` SET `topic_descr`=REPLACE(`topic_descr`,'$find','$replace')");
        $db->query("UPDATE `" . PREFIX . "_forum_topics` SET `poll_title`=REPLACE(`poll_title`,'$find','$replace')");
        $db->query("UPDATE `" . PREFIX . "_forum_topics` SET `frage`=REPLACE(`frage`,'$find','$replace')");
        $db->query("UPDATE `" . PREFIX . "_forum_topics` SET `poll_body`=REPLACE(`poll_body`,'$find','$replace')");
        $db->query("UPDATE `" . PREFIX . "_forum_posts` SET `post_text`=REPLACE(`post_text`,'$find','$replace')");
     }


Как вы видите, все очень просто. Мы просто прописываем название таблицы, в которой хотим произвести изменения после значения " . PREFIX . ", а потом название поля, в котором конкретно находятся слова, требующие изменения. Вставлять после SET ` и REPLACE(`
Но это еще не все. Чуть ниже, в 113 строке находим код:


<option value="news" selected>{$lang['find_rnews']}</option><option value="comments" selected>{$lang['find_rcomms']}</option><option value="pm" selected>{$lang['find_rpm']}</option><option value="static" selected>{$lang['find_rstatic']}</option><option value="tags" selected>{$lang['find_rtags']}</option>


И вставляем сразу после него, в эту же строку, без переноса на новую строчку, следующий код:


<option value="forum" selected>{$lang['find_rforum']}</option>


Сделали? Молодцы! Теперь остался последний шаг.
Открываем languages/Russian/adminpanel.lng и после строк в начале файла:


'charset'                =>    "windows-1251",
'admin_logo'            =>    "engine/skins/images/nav.jpg",
'wysiwyg_language'        =>  "ru",


Вставляем простой код:


// мои добавки
'find_rforum'            =>  "в форуме",


ВСЕ! Теперь, в модуле "Поиск и замена" помимо всего прочего будет доступна опция "в форуме". И при замене текста или кода, он изменится не только на сайте, но и на форуме.
По такому же принципу можно сделать поиск и замену для других установленных на сайте модулей. Просмотрите код, и Вы поймете как он работает. Все очень просто. Самое главное, правильно прописать название таблицы базы данных и ее полей.
Удачи.
  • Группа: User
  • Icq: --
  • Комментариев: 181
  • Публикаций: 25
  • что тут продвинутого? lol

    --------------------
    • park0ur
    • Регистрация: 18.01.2009
    • Репутация: (0|0|0)
    • 12 марта 2010 22:07
    • 1
    ^
  • Группа: User
  • Icq: --
  • Комментариев: 2
  • Публикаций: 0
  • А можно привести пример замены заголовков новостей
    • denis3333
    • Регистрация: 19.02.2010
    • Репутация: (0|0|0)
    • 10 ноября 2010 01:53
    • 2
    ^
    Информация
    Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.