Дополнительные поля в DLE комментариях
10 октября 2009 Автор: Zver
Прокомментировать

Данный блог сделан на DLE. Почему именно на DLE? Не знаю, просто мне эта CMS очень нравится, хотя иногда я бывает и жалею что сделал блог на DLE, но это только иногда!
Понятно что DLE это портальная CMS, а для блога нужно что-нибудь другое, WordPress и т.д. Я хочу сказать, что много того, что должно быть на блоге, и есть в WordPress, нет на DLE.
При создании этого блога я также столкнулся с рядом проблем. Первой проблемой были комментарии, были только поля "Имя", "E-mail" и "Текст комментария". Что же здесь плохого, чего не хватает? Не хватает поля "Сайт"!
Данное поле, можно сказать, наталкивает читателя оставить комментарий. Ну и что что ссылка с nofollow и noindex, главное что она есть и будет.
Теперь давайте перейдём к проблемме. Как же добавить дополнительное поле в блок комментаторов? Сложного здесь ничего нет, необходимо лишь отредактировать некоторые файлы DLE CMS.
Но перед тем как приступить к редактированию файлов, в базу данных нужно добавить новое поле url, в котором и будут храниться ссылки на сайты ваших комментаторов.
Для добавления поле url в БД зайдите в phpMyAdmin, выберите базу данных вашего блога(сайта) и в списке таблиц, который находится слева, выберите таблицу dle_comments. В центральной колонке появится список полей таблицы dle_comments, а чуть ниже форма для добавления нового поля. Пишем, что нужно добавить 1 поле, ставим отметку на "после", и выбираем "email", жмём на кнопку "Ок".
После нажатия кнопки "Ок" нужно заполнить форму добавления нового поля данными:
Поле - url
Тип - VARCHAR
Длины/Значение - 100
Дальше заполнять ничего не нужно, жмите на кнопку "Сохранить".
А можно сделать ещё проще... открыть нужную базу данных, и воспользовавшись вкладкой SQL выполнить следующий запрос:
ALTER TABLE `dle_comments` ADD `url` VARCHAR(100) NOT NULL AFTER `description`;
Если никаких ошибок не вылезло, значит запрос отправлен удачно и поле url создано.
Ну, а теперь давайте приступим к редактированию самих файлов DLE CMS:
1. Откройте в NotePad++, Macromedia Dreamweaver или в Блокноте файл engine/modules/addcomments.php и воспользовавшись поиском редактора, либо вручную, найдите строку:
$mail = $db->safesql( $parse->process( trim( $_POST['mail'] ) ) );
И после неё вставьте:
$url = $db->safesql( $parse->process( trim( $_POST['url'] ) ) );
В этом же файле найдите строку:
$mail = $member_id['email'];
И после неё вставьте:
$url = $member_id['url'];
Здесь же ищите:
if( strlen( $mail ) > 50 and ! $is_logged ) {
$stop[] = $lang['news_err_2'];
$CN_HALT = TRUE;
}
Ниже вставьте:
if( strlen( $url ) > 50 and ! $is_logged ) {
$stop[] = $lang['news_err_30'];
$CN_HALT = TRUE;
}
И после:
if( $mail != "" ) {
if( !preg_match( "/^[.A-z0-9_-]+[@][A-z0-9_-]+([.][A-z0-9_-]+)+[A-z]{1,4}$/", $mail ) ) {
$stop[] = $lang['news_err_10'];
$CN_HALT = TRUE;
}
}
Вставьте:
if( $url != "" ) {
if( !preg_match("/((http(s?)://)|(www.))([w.]+)([/w+.-?]+)/", $url) ) {
$stop[] = $lang['news_err_10'];
$CN_HALT = TRUE;
}
}
2. Сохраните изменения в файле addcomments.php, после чего откройте файл engine/modules/show.full.php, найдите в нём
строку:
$row['gast_email'] = stripslashes( $row['gast_email'] );
После которой вставьте:
$row['url'] = stripslashes( $row['url'] );
В этом же файле найдите:
if( $row['gast_email'] != "" ) {
$tpl->set( '{author}', "<a href="".htmlspecialchars($row['gast_email'],
ENT_QUOTES)."" target="_blank">" . $row['gast_name'] . "</a>" );
} else {
$tpl->set( '{author}', $row['gast_name'] );
}
И замените на:
if( $row['url'] != "" ) {
$tpl->set( '{author}', "<a href="".htmlspecialchars($row['url'],
ENT_QUOTES)."" target="_blank">" . $row['gast_name'] . "</a>" );
} else {
$tpl->set( '{author}', $row['gast_name'] );
}
3. Откройте файл вашего шаблона addcomments.tpl, и в нужное место, где должно отображаться поле "Сайт", вставьте:
<p><input type="text" name="url" id="url" size="22" /> Сайт</p>
Ну вот и всё, теперь у вас в блоке добавления комментариев будет поле "Сайт"
Единственный минус данного хака, это то что если ваши комментаторы будут вписывать в поле "Сайт" ссылки без http://, то их ссылки будут неправильно отображатся, а это не есть хорошо. Правда с этой проблемой я пока не разобрался, если есть желающие помочь - буду очень благодарен и дополню пост, с ссылкой на вас.
Да, кстати, это ещё не всё! Мы добавили поле "Сайт", оно у нас отображается, но теперь мы не видим поле e-mail. Чтобы посмотреть e-mail`ы cвоих комментаторов нужно опять же лезть в phpMyAdmin, а это же так долго... необходимо решить эту проблему, ведь иногда бывает нужно отправлять письма и комментаторам.
Итак, откройте файл engine/modules/show.full.php, найдите в нём строчку:
$tpl->set_block( "'[fast](.*?)[/fast]'si", "" );
И после неё вставьте:
$tpl->set( '{mail}', $row['gast_email'] );
После чего в файле шаблона comments.tpl в нужном месте вставьте:
[group=1]
E-mail комментатора [email={mail}]{mail}[/email].
[/group]Ну вот вроде и всё...
С уважением, Евгений
Хотите первым узнавать о новых материалах на блоге? Подписывайтесь на канал блога, а если же вы не знаете что такое RSS, советую вам воспользоваться подпиской ниже, и получать обновления на :
Вы также можете присоединиться ко мне в , либо .
Метки: DLE, Хаки
Категории: CMS » DataLife Engine Просмотров: 1144
Категории: CMS » DataLife Engine Просмотров: 1144





