Ajax переключение вида кратких новостей на главной странице DLE

Ajax переключение вида кратких новостей на главной странице DLE

 
В данной статье я постараюсь объяснить суть этого хака и как можно подробней описать установку. Установка очень лёгкая и займет всего пару минут.

Описание:
Хак Ajax template — это небольшая модификация которая позволяет менять вид кратких новостей не перезагружая всю страницу.
Данный хак нисколько не нагружает сам сайт. Принцип его работы заключается в том чтобы загрузить дополнительный шаблон кратких новостей, не перезагружая всю страницу.
Демонстрацию этой модификации вы уже видели, а если не видели то можете посмотреть на главной странице этого сайта.

Установка:
Для начала скачиваем архив с файлами модификации/хака

.
Распаковываем архив и раскидываем по папкам нашего сайта DLE. Первым делом подключим его к нашему шаблону. Для этого открываем файл main.tpl и перед тегом </head> вставляем следующие строки:

[aviable=main|cat]<link media="screen" href="{THEME}/css/ajax_temp.css" type="text/css" rel="stylesheet" />[/aviable]

Затем в самом низу этого же файла подключаем .js файл, перед тегом <body> вставляем:

[aviable=main|cat]<script type="text/javascript" src="{THEME}/js/ajax_temp.js"></script>[/aviable]

В этом же файле в месте где хотим чтобы отображался сам переключатель вставляем следующее:

[aviable=main|cat]
<div class="view-type templater">
<a href="#" [default] class="activetempajax" [/default] data-temp="this_1" data-catid="{id_cat}" data-pageid="{cstart}" data-nametemp="default">
<span class="setview view1"></span>
</a>
<a href="#" [list] class="activetempajax"  data-temp="this_2"  data-catid="{id_cat}" data-pageid="{cstart}" data-nametemp="list">
<span class="setview view2"></span>
</a>
<a href="#" [table] class="activetempajax" [/table] data-temp="this_3" data-catid="{id_cat}" data-pageid="{cstart}" data-nametemp="tablet">
<span class="setview view3"></span>
</a>
</div>
[/aviable]

Готово! к шаблону мы подключились. Теперь займемся файлами движка..

Открываем файл  /engine/engine.php и ищем такие строки:

$cache_prefix .= "_tempate_" . $config['skin'];

Ниже дописываем это:

$user_short_tpl = array(
    'default' => 'shortstory.tpl',
    'list' => 'shortstory_list.tpl',
    'tablet' => 'shortstory_tablet.tpl'
);
$user_tpl =(isset($_COOKIE['short_template']) && isset($user_short_tpl[$_COOKIE['short_template']])) ? $_COOKIE['short_template'] : "default";
$cache_prefix .= "_".$user_tpl;

Далее открываем файл  /engine/modules/show.short.php и ищем строки:

if( $category_id and $cat_info[$category_id]['short_tpl'] != '' ) $tpl->load_template( $cat_info[$category_id]['short_tpl'] . '.tpl' );
else $tpl->load_template( 'shortstory.tpl' );

Заменяем эти строки на:

$user_short_tpl = array(
    'default' => 'shortstory.tpl', 
    'list' => 'shortstory_list.tpl', 
    'tablet' => 'shortstory_tablet.tpl' 
);
if($template_ajax)
    $user_tpl = $user_short_tpl[$template_ajax];
else
    $user_tpl =(isset($_COOKIE['short_template']) && isset($user_short_tpl[$_COOKIE['short_template']])) ? $user_short_tpl[$_COOKIE['short_template']] : $user_short_tpl["default"];
if( $category_id and $cat_info[$category_id]['short_tpl'] != '' ) $tpl->load_template( $cat_info[$category_id]['short_tpl'] . '.tpl' );
else{ $tpl->load_template($user_tpl);}

После открываем файл /engine/modules/main.php (если у вас более старая версия DLE то файл index.php корневой!) и находим:

$tpl->set ( '{speedbar}', $tpl->result['speedbar'] );

Ниже вставляем:

$tpl->set ( '{id_cat}', $category_id );
$tpl->set ( '{cstart}', intval($_REQUEST["cstart"]) );
if(isset($_COOKIE['short_template']))
{
    if($_COOKIE['short_template'] == "default")
    {
        $tpl->set_block( "'\[default\](.*?)\[/default\]'si", "\1" );
        $tpl->set_block( "'\[list\](.*?)\[/list\]'si", "" );
        $tpl->set_block( "'\[table\](.*?)\[/table\]'si", "" );
    }
    elseif($_COOKIE['short_template'] == "list")
    {
        $tpl->set_block( "'\[default\](.*?)\[/default\]'si", "" );
        $tpl->set_block( "'\[list\](.*?)\[/list\]'si", "\1" );
        $tpl->set_block( "'\[table\](.*?)\[/table\]'si", "" );
    }
    else
    {
        $tpl->set_block( "'\[default\](.*?)\[/default\]'si", "" );
        $tpl->set_block( "'\[list\](.*?)\[/list\]'si", "" );
        $tpl->set_block( "'\[table\](.*?)\[/table\]'si", "\1" );
    }
}
else
{
    $tpl->set_block( "'\[default\](.*?)\[/default\]'si", "\1" );
    $tpl->set_block( "'\[list\](.*?)\[/list\]'si", "" );
    $tpl->set_block( "'\[table\](.*?)\[/table\]'si", "" );
}

Ну вот и всё! Если вы сделали всё в точности как на писано в данной статье, то хак должен работать!
В файлах shortstory.tpl shortstory_list.tpl shortstory_tablet.tpl настраиваем внешний вид.

Ajax переключение вида кратких новостей на главной странице DLE

 подробнее
Если вам нужно удалить один из переключателей то просто в main.tpl удаляем одну их таких строк:

<a href="#" [table] class="activetempajax" [/table] data-temp="this_3" data-catid="{id_cat}" data-pageid="{cstart}" data-nametemp="tablet">
        <span class="setview view3"></span>
    </a>

А если вдруг возникнут какие-нибудь вопросы, смело можете задать их ТУТ.
Автор модификации: GAMEER
Отдельное спасибо ему!

Если данная статья была для вас полезна, прошу прокомментировать и поделиться ею в соц. сетях 😉
С уважением Mr.Stas. 
Источник: for-dle.ru

Просмотров:

Добавить комментарий