вопрос
Доброго времени суток. Написал небольшой модуль для вывода всех категорий сайта, в нем кэш прекрасно работает.
Сам модуль:
Потом решил дописать к нему пагинацию, и тут не могу понять что не так, запросы отправляются в базу, переключал на файловый кэш, он сохраняется но модуль его подхватывать не хочет. Не могу понять что не так. Буду признателен за помощь, спасибо.
Модуль с пагинацией:
Сам модуль:
<?php
if( ! defined( 'DATALIFEENGINE' ) ) {die( "Hacking attempt!" );}
$xf = 'categories';
$tpl->result['content'] = dle_cache( $xf, $config['skin'], true );
if( $tpl->result['content'] ) $tpl->result['content'] = json_decode($tpl->result['content'], true);
if( !$tpl->result['content'] ) {
$tpl->load_template( $xf . '.tpl' ); // подключаем шаблон
$categorie = $db->query("SELECT t1.*, t2.count from dle_category t1 join (SELECT cat_id, count(*) as count from dle_post_extras_cats t2 GROUP BY cat_id) t2 ON t1.id = t2.cat_id HAVING t1.id NOT IN (193) ORDER BY t1.posi ASC")->fetch_all(true);
foreach ($categorie as $key => $value) {
$tpl->set('{name}', $value['name']);
$tpl->set('{fulldescr}', $value['fulldescr']);
$tpl->set('{icon}', $value['icon']);
$tpl->set('{link}', get_url($value['id']));
$tpl->set( '{news-count}', $value['count'] );
$tpl->compile('content');
}
$tpl->result['content'];
create_cache ( $xf, json_encode($tpl->result['content'], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES ), $config['skin'], true );
}
$tpl->clear();
Потом решил дописать к нему пагинацию, и тут не могу понять что не так, запросы отправляются в базу, переключал на файловый кэш, он сохраняется но модуль его подхватывать не хочет. Не могу понять что не так. Буду признателен за помощь, спасибо.
Модуль с пагинацией:
<?php
if( ! defined( 'DATALIFEENGINE' ) ) {die( "Hacking attempt!" );}
$xf = 'categories';
$tpl->result['content'] = dle_cache( $xf . $cs, $config['skin'], true );
if( $tpl->result['content'] ) $tpl->result['content'] = json_decode($tpl->result['content'], true);
if( !$tpl->result['content'] ) {
$tpl->load_template( $xf . '.tpl' ); // подключаем шаблон
$catPerPage = 36;
$cs = intval($_GET['cstart']);
$pageCstart = $i = $cstart = ((isset($_GET['cstart']) ? intval($_GET['cstart']) : 1) - 1) * $catPerPage;
$getCountCat = $db->super_query("SELECT COUNT(DISTINCT cat_id) AS count FROM " . PREFIX . "_post_extras_cats t LEFT JOIN " . PREFIX . "_category p ON(t.cat_id=p.id)")['count'];
$endPages = ceil($getCountCat / $catPerPage);
if ($cs > $endPages) {
header("HTTP/1.0 301 Moved Permanently");
header("Location: /" . $xf . "/page/{$endPages}/");
die("Redirect");
}
$config['seo_control'] = false;
$categorie = $db->query("SELECT t1.*, t2.count from dle_category t1 join (SELECT cat_id, count(*) as count from dle_post_extras_cats t2 GROUP BY cat_id) t2 ON t1.id = t2.cat_id HAVING t1.id NOT IN (193) ORDER BY t1.posi ASC LIMIT {$cstart}, {$catPerPage}")->fetch_all(true);
foreach ($categorie as $key => $value) {
$i++;
$tpl->set('{name}', $value['name']);
$tpl->set('{fulldescr}', $value['fulldescr']);
$tpl->set('{icon}', $value['icon']);
$tpl->set('{link}', get_url($value['id']));
$tpl->set( '{news-count}', $value['count'] );
$tpl->compile('content');
}
$tpl->result['content'];
if ($getCountCat > $catPerPage) {
$tpl->load_template('navigation.tpl');
$no_prev = false;
$no_next = false;
if ($cstart > 0) {
$previous = $cstart / $catPerPage;
if ($previous == 1) {
$previous = $config['http_home_url'] . $xf . '/';
} else {
$previous = $config['http_home_url'] . $xf . '/page/' . $previous . '/';
}
$tpl->set_block("'\\[prev-link\\](.*?)\\[/prev-link\\]'si", "<a href=\"" . $previous . "\">\\1</a>");
} else {
$tpl->set_block("'\[prev-link\](.*?)\[/prev-link\]'si", "<span>\\1</span>");
$no_prev = true;
}
$pages = '';
if ($getCountCat > $catPerPage) {
$enpages_count = ceil($getCountCat / $catPerPage);
$cstart = ($cstart / $catPerPage) + 1;
if ($enpages_count <= 10) {
for ($j = 1; $j <= $enpages_count; $j++) {
if ($j != $cstart) {
if ($j == 1) {
$pages .= "<a href=\"" . $config['http_home_url'] . $xf . "/\">$j</a> ";
} else {
$pages .= "<a href=\"" . $config['http_home_url'] . $xf ."/page/" . $j . "/\">$j</a> ";
}
} else {
$pages .= "<span>$j</span> ";
}
}
} else {
$start = 1;
$end = 10;
$nav_prefix = "<span class=\"nav_ext\">{$lang['nav_trennen']}</span> ";
if ($cstart > 0) {
if ($cstart > 6) {
$start = $cstart - 4;
$end = $start + 8;
if ($end >= $enpages_count - 1) {
$start = $enpages_count - 9;
$end = $enpages_count - 1;
}
}
}
if ($end >= $enpages_count - 1) {
$nav_prefix = '';
} else {
$nav_prefix = "<span class=\"nav_ext\">{$lang['nav_trennen']}</span> ";
}
if ($start >= 2) {
if ($start >= 3) {
$before_prefix = "<span class=\"nav_ext\">{$lang['nav_trennen']}</span> ";
} else {
$before_prefix = '';
}
$pages .= "<a href=\"" . $config['http_home_url'] . $xf . "/\">1</a> ".$before_prefix;
}
for ($j = $start; $j <= $end; $j++) {
if ($j != $cstart) {
if ($j == 1) {
$pages .= "<a href=\"" . $config['http_home_url'] . $xf . "/\">$j</a> ";
} else {
$pages .= "<a href=\"" . $config['http_home_url'] . $xf . "/page/" . $j . "/\">$j</a> ";
}
} else {
$pages .= "<span>$j</span> ";
}
}
if ($cstart != $enpages_count) {
$pages .= $nav_prefix . "<a href=\"" . $config['http_home_url'] . $xf . "/page/{$enpages_count}/\">{$enpages_count}</a>";
} else {
$pages .= "<span>{$enpages_count}</span> ";
}
}
}
$tpl->set('{pages}', $pages);
if ($catPerPage < $getCountCat && $i < $getCountCat) {
$next_page = ($i / $catPerPage) + 1;
$next = $config['http_home_url'] . $xf . '/page/' . $next_page . '/';
$tpl->set_block("'\[next-link\](.*?)\[/next-link\]'si", "<a href=\"" . $next . "\">\\1</a>");
} else {
$tpl->set_block("'\[next-link\](.*?)\[/next-link\]'si", "<span>\\1</span>");
$no_next = true;
}
if (!$no_prev || !$no_next) {
$tpl->compile('navi');
switch ($config['news_navigation']) {
case "2":
$tpl->result['content'] = $tpl->result['navi'].$tpl->result['content'];
break;
case "3":
$tpl->result['content'] = $tpl->result['navi'].$tpl->result['content'].$tpl->result['navi'];
break;
default:
$tpl->result['content'] .= $tpl->result['navi'];
break;
}
}
}
create_cache ( $xf . $cs, json_encode($tpl->result['content'], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES ), $config['skin'], true );
}
$tpl->clear();