» » » Хак "transfer" для dle - глобализация тегов DLE

Ошибка добавление новости
Вы зашли на сайт как незарегистрированный пользователь.
Для добавления новости Вам требуется зарегистрироваться либо войти на сайт под своим именем.
Ошибка добавление вопроса
Вы зашли на сайт как незарегистрированный пользователь.
Для добавления вопроса Вам требуется зарегистрироваться либо войти на сайт под своим именем.

Хак "transfer" для dle - глобализация тегов DLE

 Robot    2014.03.05    DLE модули     2189 
Хак "transfer" для dle - глобализация тегов DLE


Плюсы:
+ Выводить данные всех тегов которые присутствуют в данном шаблоне в других шаблонах загружаемых на данной странице.

И так для начало установка:
Редактировать будем 3 файла.

Открываем index.php:
Ищем строку:
echo $tpl->result['main'];


Выше добавляем:
/* Глобализация данных хак "transfer" create by rocksmart */
if(count($tpl->result['transfer'])>0){foreach($tpl->result['transfer'] as $index => $itsdata){
$tpl->result['main'] = str_replace ( '{transfer_'.$index.'}', implode($itsdata), $tpl->result['main'] );
}}$tpl->result['main'] = preg_replace( "#\\{transfer_(.+?)\\}#i", "",$tpl->result['main']);

Дальше открываем файл: /engine/classes/templates.class.php
Ищем:
class dle_template {


После добавляем:
var $transfer = array ();


Далее ищем:
function get_real_time() {
		list ( $seconds, $microSeconds ) = explode( ' ', microtime() );
		return (( float ) $seconds + ( float ) $microSeconds);
	}


После вставляем:
/* Глобализация данных хак "transfer" create by rocksmart */
function transfer_result($matches=array()){
$index = $matches[2];
$itsdata = $matches[3];
$this->transfer[$index] = $itsdata;
}


Тут же ищем строку:
if( isset( $this->result[$tpl] ) ) $this->result[$tpl] .= $this->copy_template;
		else $this->result[$tpl] = $this->copy_template;


Выше добавляем:
/* Глобализация данных хак "transfer" create by rocksmart */
if (strpos ($this->template, "[transfer=" ) !== false) {
preg_replace_callback( "#\\[(transfer)=(.+?)\\](.*?)\\[/transfer\\]#is",array( &$this, 'transfer_result'),$this->copy_template);
foreach($this->transfer as $index => $itsdata){
$this->result['transfer'][$index][] = $itsdata;
}}$this->copy_template = preg_replace ( "#\\[(transfer)=(.+?)\\](.*?)\\[/transfer\\]#is","",$this->copy_template);


Открываем файл /engine/classes/parse.class.php для защиты ставим:
После строки:
$source = str_ireplace( "{custom", "{custom", $source );


Вставляем:
$source = str_ireplace( "{transfer", "{transfer", $source );



Установка завершена! Профит как говориться!
Теперь рассмотрим применения:

Строка в шаблоне имеет такой вид: Цитата
[transfer=Уникальный идентификатор]какой либо текст с тегами соответствующими данному шаблону[/transfer]


НАпример:
в fullstory.tpl
в любом месте прописываем:
 [transfer=views]Просмотров: {views}[/transfer]

В любом нужном нам месте main.tpl прописываем:
{transfer_views}


А дальше ваша фантазия для написания и расставления тегов по шаблону.
Вот как я немного пошаманил:

Хак "transfer" для dle - глобализация тегов DLE


Код в fullstory такой был:
 [transfer=title]{title}[/transfer]
                     [transfer=tags]{tags}[/transfer]
                [transfer=views]Просмотров: {views}[/transfer]
                  [transfer=data]Дата: [day-news]{date}[/day-news][/transfer]
                    [transfer=comments-num][com-link]<b>{comments-num}</b>[/com-link][/transfer]
                 [transfer=rate] [rating]<div class="rating">{rating}</div>[/rating][/transfer]
            	[transfer=fullimages]


В main.tpl выводил так:
{transfer_views} фильма {transfer_title}</ul>
           <ul class="topnews">     {transfer_data}</ul>
    <ul class="topnews">Получил коментариев: {transfer_comments-num}</ul>
     <ul class="topnews">Рейтинг: {transfer_rate}</ul>
    {transfer_fullimages}
  {transfer_tags}




В main.tpl можно вывести и всю статистику но при просмотре статистики!
Так же теги профиля при просмотре профиля!
Другие новости по теме:
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.