Загрузка. Пожалуйста, подождите...

ZverMaster
Программирование, разработка, SEO, продвижение сайтов...
Синий Зелёный
  • Главная
  • Карта сайта
  • Контакты

Дополнительные поля в DLE комментариях

10 октября 2009 Автор: Zver Прокомментировать


Данный блог сделан на DLE. Мне эта CMS очень нравится, хотя иногда я бывает и жалею что сделал блог на DLE, но это только иногда! ab
Понятно что DLE это портальная CMS, а для блога нужно что-нибудь другое, WordPress и т.д. Я хочу сказать, что много того, что должно быть на блоге, и есть в WordPress, нет на DLE.

При создании этого блога я также столкнулся с рядом проблем. Первой проблемой были комментарии.
В форме добавления комментариев были только поля "Имя", "E-mail" и "Текст комментария" - не хватало поля "Сайт", функция которого мотивировать читателей оставить комментарий к тому или иному посту, ведь появится ещё одна ссылка на его блог либо сайт. Ну и что что ссылка с nofollow и noindex, главное что она есть и будет. ad

Вернусь к теме добавления дополнительных полей в форму добавления комментариев. Сразу скажу что сложного здесь ничего нет, необходимо лишь отредактировать некоторые файлы DLE CMS.

Перед тем как приступить к редактированию файлов, советую сделать backup базы данных и изменяемых ниже файлов, мало ли...

Первое что нужно сделать, это добавить в базу данных(а именно в таблицу dle_comments) поле url, в котором будут храниться ссылки на сайты комментаторов.
Для добавления поле url в БД зайдите в phpMyAdmin, выберите базу данных вашего блога(сайта) и в списке таблиц, который находится слева, выберите таблицу dle_comments. В центральной колонке появится список полей таблицы dle_comments, а чуть ниже форма для добавления нового поля. Пишем, что нужно добавить 1 поле, ставим отметку на "после", и выбираем "email", жмём на кнопку "Ок".
После нажатия кнопки "Ок" нужно заполнить форму добавления нового поля данными:

Поле - url
Тип - VARCHAR
Длины/Значение - 100

Дальше заполнять ничего не нужно, жмите на кнопку "Сохранить".

Можно сделать ещё проще, открыв нужную базу данных в phpMyAdmin, и воспользовавшись вкладкой SQL выполнить следующий запрос:

ALTER TABLE `dle_comments` ADD `url` VARCHAR(100) NOT NULL AFTER `email`;

Если никаких ошибок и предупреждений не появилось, значит запрос отправлен удачно и поле 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[] = "В поле \"Сайт\" введено неверное значение.";
    $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 ) ) {
        $url = "http://".$url;
    }
}


В этом же файле найдите строки:

if( $is_logged ) $db->query( "INSERT INTO " . PREFIX . "_comments (post_id, user_id, date, autor, email, text, ip, is_register, approve) values ('$post_id', '$member_id[user_id]', '$time', '$name', '$mail', '$comments', '$_IP', '1', '$where_approve')" );
            else $db->query( "INSERT INTO " . PREFIX . "_comments (post_id, date, autor, email, text, ip, is_register, approve) values ('$post_id', '$time', '$name', '$mail', '$comments', '$_IP', '0', '$where_approve')" );


И замените их на:

if( $is_logged ) $db->query( "INSERT INTO " . PREFIX . "_comments (post_id, user_id, date, autor, email, text, ip, is_register, approve) values ('$post_id', '$member_id[user_id]', '$time', '$name', '$mail', '$comments', '$_IP', '1', '$where_approve')" );
            else $db->query( "INSERT INTO " . PREFIX . "_comments (post_id, date, autor, email, url, text, ip, is_register, approve) values ('$post_id', '$time', '$name', '$mail', '$url', '$comments', '$_IP', '0', '$where_approve')" );


2. Сохраните изменения в файле addcomments.php, после чего откройте файл engine/modules/show.full.php, найдите в нём следующие строки:

$comments->query = "SELECT " . PREFIX . "_comments.id, post_id, " . PREFIX . "_comments.user_id, date, autor as gast_name, " . PREFIX . "_comments.email as gast_email, text, ip, is_register, name, " . USERPREFIX . "_users.email, news_num, comm_num, user_group, reg_date, signature, foto, fullname, land, icq, xfields FROM " . PREFIX . "_comments LEFT JOIN " . USERPREFIX . "_users ON " . PREFIX . "_comments.user_id=" . USERPREFIX . "_users.user_id WHERE " . PREFIX . "_comments.post_id = '$news_id'" . $where_approve . " ORDER BY date " . $config['comm_msort'];


Замените на:

$comments->query = "SELECT " . PREFIX . "_comments.id, post_id, " . PREFIX . "_comments.user_id, date, autor as gast_name, " . PREFIX . "_comments.email as gast_email, url, text, ip, is_register, name, " . USERPREFIX . "_users.email, news_num, comm_num, user_group, reg_date, signature, foto, fullname, land, icq, xfields FROM " . PREFIX . "_comments LEFT JOIN " . USERPREFIX . "_users ON " . PREFIX . "_comments.user_id=" . USERPREFIX . "_users.user_id WHERE " . PREFIX . "_comments.post_id = '$news_id'" . $where_approve . " ORDER BY date " . $config['comm_msort'];


3. Сохраните изменения в файле show.full.php. Откройте файл engine/classes/comments.class.php, найдите в нём строку:

$row['gast_email'] = stripslashes( $row['gast_email'] );


После которой вставьте:

$row['url'] = stripslashes( $row['url'] );


В этом же файле найдите:

if( $row['gast_email'] != "" ) {

                    $tpl->set( '{author}', "<a href=\"mailto:".htmlspecialchars($row['gast_email'], ENT_QUOTES)."\">" . $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>


Ну вот и всё, теперь у вас в форме добавления комментариев будет поле "Сайт". После добавления кем-нибудь комментария, его ник(имя) будет служить ссылкой на его блог(сайт). Также необходимо обрамить данную ссылку в noindex и nofollow, но это уже сами, если не получится - пишите в комментариях, объясню как это сделать. ad

Единственный минус данного хака, это то что если ваши комментаторы будут вписывать в поле "Сайт" ссылки без http://, то их ссылки будут неправильно отображаться, а это не есть хорошо.
Так же необходимо отключить AJAX комментирование, иначе хак работать не будет.

С этими двумя проблемами я пока не разобрался, если есть желающие помочь - буду очень благодарен и дополню пост, с ссылкой на вас. ad

С уважением, Евгений

Не забывайте подписываться на блог, а также присоединяйтесь ко мне в следующих социальных сервисах:

    Похожие новости:
  • Изменения на блоге...
  • DimoninG-Captcha для DLE
  • 10 лучших расширений для Google Chrome
  • Использование плагина LightBox jQuery
  • Меню в стиле Mac OS

Метки: DLE, Хаки
Категории: CMS » DataLife Engine
Просмотров: 2233



Комментарии:


Добавление коментария:

  • Подписывайтесь на блог

  • Категории

    • SEO
    • Продвижение сайтов
    • Сайтостроение
      • HTML и CSS
      • jQuery
    • CMS
      • DataLife Engine
    • Интересное из Twitter`а
    • Эксперименты
    • Мысли вслух
  • Спонсоры

  • Мой twitter

     
  • Популярные записи

    • Меню в стиле Mac OS
    • Фильтры Яндекса
    • Использование плагина LightBox jQuery
    • Создание галереи с помощью CSS3
    • Дополнительные поля в DLE комментариях
  • Архивы

    • Май 2010 (1)
    • Апрель 2010 (1)
    • Ноябрь 2009 (1)
    • Октябрь 2009 (1)
    • Июль 2009 (4)
    • Февраль 2009 (2)
    • Январь 2009 (6)
    • Декабрь 2008 (2)
    • Показать весь архив
Реклама
Статистика
Rambler's Top100
© 2009 Евгений Копач Копирование материалов запрещено!