Данный хак позволяет вывести информацию из загружаемого шаблона в 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}
А дальше ваша фантазия для написания и расставления тегов по шаблону.Можно, как пример, так:
Код в 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]{comments-num}[/com-link][/transfer]
[transfer=rate] [rating]{rating}[/rating][/transfer]
[transfer=fullimages]
В main.tpl выводил так:
{transfer_views} фильма {transfer_title}
- {transfer_data}
- Получил коментариев: {transfer_comments-num}
- Рейтинг: {transfer_rate}
{transfer_fullimages} {transfer_tags}
В main.tpl можно вывести и всю статистику но при просмотре статистики!
Так же теги профиля при просмотре профиля!
Примечание для разработчиков:
При написании новых модулей или скриптов не использовать в коде компиляцию массива с ключем "transfer", так как он объявляется автоматически
$tpl->compile ( 'transfer' );
Источник статьи: http://pro-script.ru/index.php?name=news&op=view&id=498