Как добавить в Dle новые теги [not-x][not-x]

Раздел: DataLife Engine » Советы по DLE
Как добавить в Dle новые теги [not-x][not-x]
Добрый день, уважаемые.

Эта статья позволит вам при желании сделать и узнать как добавить любой новый тег на вашем веб-ресурсе дле или предложенные теги в уроке для кастомизации профиля пользователя, а именно о вставке в файлы движка собственных тегов: [foto], [not-foto], [not-signature] и переносе существующих с Dle 9.6 в любую ниже версию например дле 9.0

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

Как добавить в Dle новые теги [not-x][not-x] различных переменных


В новых версиях движка появились замечательные теги для шаблона 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 в дле 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 и not-foto в Дле 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].

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

«Автор:»

Мы www.dle9.com рекомендуем статью как добавить в Dle новые теги [not-x][not-x] (not-x) различных переменных
  • 100
Рубрика: Все для DLE » Советы по ДЛЕ
Ранее » Доп поля выводим картинки в новости ссылки скачивания« Далее Как защитить сайт дле от спама лучшее решение
Добавление комментарияОставить комментарий