Dleshka.org
Авторизация

Хак Расширенный модуль ПОИСК и ЗАМЕНА.

+2
TipTop 9-03-2010 Хаки DLE 0 комментариев
Расширенный модуль ПОИСК и ЗАМЕНА.


В админке DataLife Engine есть хорошая и полезная функция: Поиск и замена. Существует она для поиска и замена текста или кода в базе данных сайта. Но по умолчанию этот модуль ищет текст только в определенных частях базы данных: новостях, комментариях, облаке тегов, статических страницах и в персональных сообщениях.
Т.е., если Вы установите модуль форума, блога, фотоальбомов или какой-либо другой модуль, то Вы не сможете заменять текст в его базе данных. Если вдруг Вам понадобиться глобальное изменение текста или кода в вашем модуле, то лучше воспользоваться следующим Хаком.

Надо модифицировать всего два файла движка. Речь идет о версии двига 8.3. На более ранних версиях не проверял. Но думаю, получится и там. Буду показывать на примере интеграции DataLife Engine 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')");
     }


Вот этот код (если у Вас установлен DataLife Engine Forum):

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')");
     }


Для новичков объясню, что это код, куда прописываются поля и таблицы базы данных, в которых будет вестись поиск и замена. Т.е., если Вы будете устанавливать Хак для другого модуля, то Вам в обязательном порядке нужно внести в вышеуказанный код другие данные, посмотреть которые можно в phpmyadmin.
Чуть ниже, в тот же файле в 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>


Для удобства, если хотите, чтобы окошко было без "лифта" и более протянутым, то в этом же файле в 112 строке измените значение height на нужное вам, например на 100:
<td style="padding:2px;" width="100%"><select name="table[]" style="height:100px;" multiple>


Закрываем файл.
Открываем languages/Russian/adminpanel.lng и после строк в начале файла:

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


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

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


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

Прошу профи тапками не кидать, знаю, что это элементарный Хак, до которого можно догадаться самому. Но как новичок, который сам искал такой Хак и не нашел, думаю, будет полезен многим начинающим.
Информация
Зарегистрируйтесь чтобы комментировать публикацию.
Авторизация