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].

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

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.


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


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


Свернуть

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

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Верстаю для портфолио
5 paradoks0 696 Вчера, 19:34
автор: paradoks0
Открытая тема (нет новых ответов) Русские темы для WordPress. Недорого.
0 SOROKVLAD29 325 Вчера, 10:16
автор: SOROKVLAD29
Открытая тема (нет новых ответов) Сделать видео для инстаграмма
0 katuwa 413 Вчера, 8:25
автор: katuwa
Открытая тема (нет новых ответов) LSSender - лучший софт для работы с ВКонтакте
LSSender - программа для качественной рассылки и пиара во ВКонтакте
14 ange007 4037 23.5.2018, 23:56
автор: ange007
Открытая тема (нет новых ответов) CMS для соцсети с фотогалереями.
4 Gariks 948 23.5.2018, 21:55
автор: BeeBa


 



RSS Текстовая версия Сейчас: 25.5.2018, 9:58
Дизайн