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


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

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

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

Распаковываем архив и раскидываем по папкам нашего сайта 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 настраиваем внешний вид.


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

Если данная статья была для вас полезна, прошу прокомментировать и поделиться ею в соц. сетях ;)
С уважением Mr.Stas
Шаблоны DLE


ajax
Комментариев 4
  1. temporary
    Демонстрацию этой модификации вы уже видели, а если не видели то можете посмотреть на главной странице этого сайта.
    При заходе на главную страницу данного сайта через Firefox 47.0.2, эти кнопки позиционируются под кнопкой сортировки, а не в одну линию с ней.
    1. Stanislavskiy11 Админ Ответ
      У меня всё отлично и ровно отображает. Проверял на трёх браузерах и с разных устройств.
  2. temporary
    Скрин:
    Внимание! У Вас нет прав для просмотра скрытого текста.

    Видимо у меня исключение smirk

    1. AleZ Ответ
      Так как данный шаблон адаптивный и нельзя учесть все варианты разрешений, то в некоторых случаях можно найти и другие смещения. Достаточно открыть окно браузера и за уголок его потаскать.  smiley Кстати, возможно вы браузер и не на фулскрин открыли.

Внимание!

Ознакомьтесь со статьёй по ссылке ниже.

Сайт мошенников
Информация