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

ZverMaster
Всё о сайтростоении и SEO
Black Зелёный Blue Red Gold
Twitter
FriendFeed
RSS
  • Главная
  • Контакты

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

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



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

При создании этого блога я также столкнулся с рядом проблем. Первой проблемой были комментарии, были только поля "Имя", "E-mail" и "Текст комментария". Что же здесь плохого, чего не хватает? Не хватает поля "Сайт"!
Данное поле, можно сказать, наталкивает читателя оставить комментарий. Ну и что что ссылка с nofollow и noindex, главное что она есть и будет. ad Да и потом можно поставить мод для DLE "Активные комментаторы" - это ещё больше натолкнёт посетителей вашего блога оставлять комментарии, т.к. данный мод выводит на главную страницу ссылки на блоги(сайты) активных комментаторов.

Теперь давайте перейдём к проблемме. Как же добавить дополнительное поле в блок комментаторов? Сложного здесь ничего нет, необходимо лишь отредактировать некоторые файлы 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>

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

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

Да, кстати, это ещё не всё! Мы добавили поле "Сайт", оно у нас отображается, но теперь мы не видим поле 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]


Ну вот вроде и всё... ab теперь в нужном для Вас месте будет выводится и e-mail комментатора, который будет виден только администратору блога(сайта).

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

    Похожие новости:
  • Использвание плагина LightBox
  • Создание галереи с помощью CSS3
  • Изменения на блоге...
  • DimoninG-Captcha для DLE
  • Меню в стиле Mac OS

Хотите первым узнавать о новых материалах на блоге? Подписывайтесь на RSS канал блога, а если же вы не знаете что такое RSS, советую вам воспользоваться подпиской ниже, и получать обновления на e-mail:

Вы также можете присоединиться ко мне в Twitter, либо Google Buzz.

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



8 комментария:

  1. lanu написал, 26 октября 2009 23:55

    Хорошая инструкция, спасибо! Очень подробно и доходчиво.


  1. Игорь написал, 12 декабря 2009 16:41

    А как сделать в ноиндек и нофоллов?


  1. Zver написал, 12 декабря 2009 19:32

    Игорь в шаге 2 есть код отвечающий за вывод ссылок. Начинается с a href и т.д., ну как обычно, вообщем нужно просто обрамить эту ссылку в noindex и и добавить к ней атрибут noffollow.

    P.S. Скоро изменю статью, в новой версии DLE немного по другому всё...


  1. Игорь написал, 20 декабря 2009 19:38

    Да я пробовал поставить на дле 8,3 не получиль что-то(((


  1. Zver написал, 20 декабря 2009 19:53

    Игорь шаг 2 нужно применять к файлу engine/classes/comments.class.php

    Если не получится, напиши в аську - помогу.


  1. Влад написал, 28 декабря 2009 15:15

    DLE 8.3 второй шаг надо изменить, ибо нет там такого.


  1. ioganvays написал, 9 января 2010 09:36

    Спасибо. Давно искал как добавить поля....
    Надо будет после праздников попробовать.
    Еще понравился материал про галерки....
    И еще мысль для материала.... Встретил я не так давно интересный урок как рипать шаблоны для юкоз, но ничего достаточно подробного для ДЛЕ не нашел... может найдется у вас такая информация - был бы благодарен.


  1. Gamlet написал, 19 января 2010 12:18

    Уважаемый, Zver, спасибо за информацию.
    Просьба к Вам, создать подобную статью для добавления доп. полей для новостей. Понимаю, что силами самого движка это можно легко организовать, но в этом случае при добавлении новости поля рассполагать произвольно не получается. Прошу помочь. И если есть возможность, то как сделать так, чтобы при добавлении новости незарегистрированный пользователь вводил свой придуманный код, который в дальнейшем будет использоваться при удалении/редактировании новости?



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

Имя (обязательно)

Почта (не публикуется) (обязательно)

Сайт (публикуется)

Я не робот!

abacad
aeafag
ahaiak
amanao
apaqat
auavay
azbdbe
bfbgbh
bibjbk
blbnbo
bpbsbt
bvbw

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


Введите свой e-mail адрес:

  

Количество читателей блога Zver-Master:


    • Категории

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

    • Блоги по теме:

    • Облако тегов

        Требуется для просмотра Flash Player 9 или выше.

    • Недавние записи

      • Мой Google Reader

      • Архивы

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