X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость ( Вход | Регистрация )

Открыть тему
Тема закрыта
> Добавляем новые теги [x][/x] и [not-x][/not-x] для различных переменных., DataLife Engine 9.0
Сергуня
Сергуня
Topic Starter сообщение 30.6.2012, 10:09; Ответить: Сергуня
Сообщение #1


Бывалый
****

Группа: User
Сообщений: 284
Регистрация: 13.4.2008
Из: Подгорица
Поблагодарили: 48 раз
Репутация:   11  


Приветствую вас, господа.

В этой статье я хочу рассказать о кастомизации профиля пользователя, а именно о добавлении собственных тегов: [foto], [not-foto], [not-signature] и переносе существующих с DLE 9.6.

Использую я DataLife Engine девятой версии и, для моих целей, в этой СУК есть не только очень много ненужного функционала, но и существенная недостача необходимого. Очень часто встают задачи, которые не решить без "хирургического вмешательства". Обновляться тоже, по многочисленным причинам, нельзя.

В новых версиях движка появились замечательные теги для шаблона userinfo.tpl, такие как [news-num][/news-num], [not-comm-num][/not-comm-num] и им подобные. Перенести их не составляет труда.

1. Добавляем теги [news-num], [not-news-num], [comm-num], [not-comm-num], [rss] в DLE 9.0:
Развернуть/Свернуть
Открыть engine/modules/profile.php и найти:

if( $row['news_num'] ) {
        
if( $config['allow_alt_url'] == "yes" ) {
            
$tpl->set( '{news}', "<a href=\"" . $config['http_home_url'] . "user/" . urlencode( $row['name'] ) . "/news/" . "\">" . $lang['all_user_news'] . "</a>" );
$tpl->set( '[rss]', "<a href=\"" . $config['http_home_url'] . "user/" . urlencode( $row['name'] ) . "/rss.xml" . "\" title=\"" . $lang['rss_user'] . "\">" );
$tpl->set( '[/rss]', "</a>" );
        
} else {
            
$tpl->set( '{news}', "<a href=\"" . $PHP_SELF . "?subaction=allnews&amp;user=" . urlencode( $row['name'] ) . "\">" . $lang['all_user_news'] . "</a>" );
$tpl->set( '[rss]', "<a href=\"engine/rss.php?subaction=allnews&amp;user=" . urlencode( $row['name'] ) . "\" title=\"" . $lang['rss_user'] . "\">" );
$tpl->set( '[/rss]', "</a>" );
}
} else {
        
$tpl->set( '{news}', $lang['all_user_news'] );
$tpl->set_block( "'\\[rss\\](.*?)\\[/rss\\]'si", "" );
    
}

Заменить найденый код на:

if( $row['news_num'] ) {

if( $config['allow_alt_url'] == "yes" ) {
        
$tpl->set( '{news}', "<a href=\"" . $config['http_home_url'] . "user/" . urlencode( $row['name'] ) . "/news/" . "\">" . $lang['all_user_news'] . "</a>" );
$tpl->set( '[rss]', "<a href=\"" . $config['http_home_url'] . "user/" . urlencode( $row['name'] ) . "/rss.xml" . "\" title=\"" . $lang['rss_user'] . "\">" );
$tpl->set( '[/rss]', "</a>" );
        
} else {
            
$tpl->set( '{news}', "<a href=\"" . $PHP_SELF . "?subaction=allnews&amp;user=" . urlencode( $row['name'] ) . "\">" . $lang['all_user_news'] . "</a>" );
$tpl->set( '[rss]', "<a href=\"engine/rss.php?subaction=allnews&amp;user=" . urlencode( $row['name'] ) . "\" title=\"" . $lang['rss_user'] . "\">" );
$tpl->set( '[/rss]', "</a>" );
}

$tpl->set( '{news-num}', $row['news_num'] );
$tpl->set( '[news-num]', "" );
$tpl->set( '[/news-num]', "" );
$tpl->set_block( "'\\[not-news-num\\](.*?)\\[/not-news-num\\]'si", "" );

} else {
        
$tpl->set( '{news}', $lang['all_user_news'] );
$tpl->set_block( "'\\[rss\\](.*?)\\[/rss\\]'si", "" );
$tpl->set( '{news-num}', 0 );
$tpl->set_block( "'\\[news-num\\](.*?)\\[/news-num\\]'si", "" );
$tpl->set( '[not-news-num]', "" );
$tpl->set( '[/not-news-num]', "" );
}

Найти:

if( $row['comm_num'] ) {
        
$tpl->set( '{comments}', "<a href=\"$PHP_SELF?do=lastcomments&amp;userid=" . $row['user_id'] . "\">" . $lang['last_comm'] . "</a>" );
    
} else {
        
$tpl->set( '{comments}', $lang['last_comm'] );
    
}

Заменить на:

if( $row['comm_num'] ) {

$tpl->set( '[comm-num]', "" );
$tpl->set( '[/comm-num]', "" );
$tpl->set( '{comm-num}', $row['comm_num'] );
$tpl->set( '{comments}', "<a href=\"$PHP_SELF?do=lastcomments&amp;userid=" . $row['user_id'] . "\">" . $lang['last_comm'] . "</a>" );
$tpl->set_block( "'\\[not-comm-num\\](.*?)\\[/not-comm-num\\]'si", "" );
    
} else {
        
$tpl->set( '{comments}', $lang['last_comm'] );
$tpl->set( '{comm-num}', 0 );
$tpl->set_block( "'\\[comm-num\\](.*?)\\[/comm-num\\]'si", "" );
$tpl->set( '[not-comm-num]', "" );
$tpl->set( '[/not-comm-num]', "" );
}
Справились. Сделать это элементарно. Теперь в userinfo.tpl мы можем использовать теги: [news-num][/news-num], [not-news-num][/not-news-num], [comm-num][/comm-num], [not-comm-num][/not-comm-num] и [rss][/rss]. Зачем они нужны? Читайте в официальной документации DLE.

Идем дальше и малость усложняем задачу. До этого мы просто скопировали функционал, а на сей раз кое-что допишем.

Случилось так, что на одном из моих сайтов понадобился тег [not-signature]. Он выводит текст если отсутствует подпись. Его и добавим.

2. Добавляем теги [not-signature][/not-signature] в DLE 9.0:
Развернуть/Свернуть
Открыть engine/modules/profile.php и найти:
if( $row['signature'] and $user_group[$row['user_group']]['allow_signature'] ) {
        
$tpl->set_block( "'\\[signature\\](.*?)\\[/signature\\]'si", "\\1" );
$tpl->set( '{signature}', stripslashes( $row['signature'] ) );
    
} else {
        
$tpl->set_block( "'\\[signature\\](.*?)\\[/signature\\]'si", "" );
    
}

Заменить найденый код на:

if( $row['signature'] and $user_group[$row['user_group']]['allow_signature'] ) {
        
$tpl->set( '[signature]', "" );
$tpl->set( '[/signature]', "" );
$tpl->set( '{signature}', stripslashes( $row['signature'] ) );
$tpl->set_block( "'\\[not-signature\\](.*?)\\[/not-signature\\]'si", "" );
    
} else {
        
$tpl->set( '{signature}', "" );
$tpl->set_block( "'\\[signature\\](.*?)\\[/signature\\]'si", "" );
$tpl->set( '[not-signature]', "" );
$tpl->set( '[/not-signature]', "" );
}
Сделали и это. Тоже ничего сложного. Выводим текст, при отсутствии подписи, тегами: [not-signature]текст[/not-signature].

Гулять, так гулять. Добавим еще несколько. Принцип их работы идентичен предыдущим, но направлен на присутствие/отсутствие аватара у пользователя.

3. Добавляем теги [foto][/foto] и [not-foto][/not-foto] в DLE 9.0:
Развернуть/Свернуть
Открыть engine/modules/profile.php и найти:
if( $row['foto'] and (file_exists( ROOT_DIR . "/uploads/fotos/" . $row['foto'] )) ) $tpl->set( '{foto}', $config['http_home_url'] . "uploads/fotos/" . $row['foto'] );
else $tpl->set( '{foto}', "{THEME}/images/noavatar.png" );

Заменить найденый код на:

if( $row['foto'] and (file_exists( ROOT_DIR . "/uploads/fotos/" . $row['foto'] )) ) $tpl->set( '{foto}', $config['http_home_url'] . "uploads/fotos/" . $row['foto'] );
else $tpl->set( '{foto}', "{THEME}/images/noavatar.png" );
    
if( $row['foto'] ) {
$tpl->set( '[foto]', "" );
$tpl->set( '[/foto]', "" );
$tpl->set( '{foto}', $config['http_home_url'] . "uploads/fotos/" . $row['foto'] );
$tpl->set_block( "'\\[not-foto\\](.*?)\\[/not-foto\\]'si", "" );
    
} else {
$tpl->set_block( "'\\[foto\\](.*?)\\[/foto\\]'si", "" );
$tpl->set( '{foto}', "{THEME}/images/noavatar.png" );
$tpl->set( '[not-foto]', "" );
$tpl->set( '[/not-foto]', "" );
}
Готово. Теперь при отсутствии аватара можно выводить текст в тегах [not-foto][/not-foto], а при его наличии - [foto][/foto].

Вот и все. Посмотрев на код можно понять что ничего сложного в нем нет и, по надобности, идентичные теги можно создать для любой переменной.


--------------------


Поблагодарили: (1)
1
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Горячая тема (нет новых ответов) Leongram - бесплатная программа для продвижения в Instagram
90 DeOne 18053 Сегодня, 0:06
автор: DeOne
Открытая тема (нет новых ответов) Чем сжимать картинки для сайта без потери качества
1st-finstep.ru - Заработок в сети и методы продвижения сайта
8 komarik_vlad 938 Вчера, 23:24
автор: komarik_vlad
Открытая тема (нет новых ответов) Куплю домен для склейки
3 Natali2110 606 Вчера, 21:35
автор: Natali2110
Открытая тема (нет новых ответов) Требуются рерайтеры для медицинского сайта
30 руб за 1000 рерайта
14 Lisel85 2713 Вчера, 19:38
автор: Lisel85
Открытая тема (нет новых ответов) GALAKSION – оптимальный вариант для монетизации вашего сайта!
23 Galaksion_Network 2433 Вчера, 19:17
автор: Galaksion_Network


 



RSS Текстовая версия Сейчас: 13.12.2017, 6:17
Дизайн