воскресенье, 9 января 2011 г.

Настройка модуля Поиск и замена в DLE

Открываем  редактором файл 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'            =>  "в форуме",


ВСЕ! Теперь, в модуле "Поиск и замена" помимо всего прочего будет доступна опция "в форуме". И при замене текста или кода, он изменится не только на сайте, но и на форуме.
По такому же принципу можно сделать поиск и замену для других установленных на сайте модулей. Просмотрите код, и Вы поймете как он работает. Все очень просто. Самое главное, правильно прописать название таблицы базы данных и ее полей.

а если надо разширить настройки поиск и замена в новостях
например поиск и замена в названии новостей
добавляем  строку
$db->query("UPDATE `" . PREFIX . "_post` SET `title`=REPLACE(`title`,'$find','$replace')");
таким  же методом делаем и в других модулях