Вывод статических страниц в категории
Думаю многим будет интересно сделать отображение статических страниц на странице категории в DLE. На примере ниже, попробуем вывести статические страницы в вкладках/табах. После установка модуля, в Админ-панели > раздел Категории, у нас появиться дополнительное поле с выбором статических страниц. В итоге, в категориях будут отображаться такие вкладки/табы с заголовком и содержимым статических страниц, которые укажите в админке. Работать это будет только при редактировании категорий.
Установка:
1. Выполнить SQL запрос в базу данных:
ALTER TABLE `dle_category` ADD `cat_tabs` VARCHAR(255) NOT NULL DEFAULT '' AFTER `allow_rss`;
2. Создать engine/inc/cat_statistics.php с содержимым:
3. Открыть engine/inc/category.php и найти:
$db->query( "UPDATE " . PREFIX . "_category SET parentid='$parentid', name='$cat_name', alt_name='$alt_cat_name', icon='$cat_icon', skin='$skin_name', descr='$description', keywords='$keywords', news_sort='$news_sort', news_msort='$news_msort', news_number='$news_number', short_tpl='$short_tpl', full_tpl='$full_tpl', metatitle='$meta_title', show_sub='$show_sub', allow_rss='$allow_rss', fulldescr='$fulldescr', disable_search='$disable_search', disable_main='$disable_main', disable_rating='$disable_rating', disable_comments='$disable_comments' WHERE id='{$catid}'" );
Заменить на:
$statics = implode(",", $_POST["statics"]); #kyl
$db->query( "UPDATE " . PREFIX . "_category SET parentid='$parentid', name='$cat_name', alt_name='$alt_cat_name', icon='$cat_icon', skin='$skin_name', descr='$description', keywords='$keywords', news_sort='$news_sort', news_msort='$news_msort', news_number='$news_number', short_tpl='$short_tpl', full_tpl='$full_tpl', metatitle='$meta_title', show_sub='$show_sub', allow_rss='$allow_rss', fulldescr='$fulldescr', disable_search='$disable_search', disable_main='$disable_main', disable_rating='$disable_rating', disable_comments='$disable_comments', cat_tabs='{$statics}' WHERE id='{$catid}'" );
Найти далее:
<div class="form-group">
<label class="control-label col-md-2 col-sm-3">{$lang['cat_addicon']}</label>
Добавить выше, с самого начала строки:
HTML;
include ENGINE_DIR . "/inc/cat_statistics.php";
echo <<<HTML
4. Открыть engine/engine.php и найти:
// ################ Вывод отдельной категории #################
if ($do == "cat" and $category != '' and $subaction == '') {
Добавить ниже:
#kyl
$cats = $db->query( "SELECT cat_tabs FROM " . PREFIX . "_category WHERE id = {$category_id} ORDER BY ID LIMIT 1" );
$cats_ = $db->get_row( $cats );
if(!empty($cats_["cat_tabs"])){
$stats = explode(",", $cats_["cat_tabs"]);
$stats_where = "";
foreach ($stats as $stat) {
$stats_where .= "id = {$stat} OR ";
}
$stats_where = substr($stats_where, 0, -4);
$stat = $db->query( "SELECT * FROM " . PREFIX . "_static WHERE ".$stats_where." ORDER BY ID" );
$stat_row = array();
while ( $static = $db->get_row( $stat ) ) {
array_push($stat_row, array(
"descr" => $static["descr"],
"template" => $static["template"]
));
}
$tabs = '<div class="tabs">
<ul class="tabs__caption">';
foreach($stat_row as $key => $rows){
if($key == 0) $tabs .= '<li class="active">'.$rows["descr"].'</li>';
else $tabs .= '<li>'.$rows["descr"].'</li>';
}
$tabs .= '</ul>';
foreach($stat_row as $key => $rows){
if($key == 0){
$tabs .= '<div class="tabs__content active">
'.$rows["template"].'
</div>';
} else{
$tabs .= '<div class="tabs__content">
'.$rows["template"].'
</div>';
}
}
$tabs .= '</div>';
$tpl->set('{tabs-static}', $tabs);
} else $tpl->set('{tabs-static}', "");
#kyl
5. В любой JS шаблона добавить Jquery код:
$('ul.tabs__caption').on('click', 'li:not(.active)', function() {
$(this).addClass('active').siblings().removeClass('active').closest('div.tabs').find('div.tabs__content').removeClass('active').eq($(this).index()).addClass('active');
});
6. В шаблон добавить стили:
.tabs__content {
display: none; /* по умолчанию прячем все блоки */
}
.tabs__caption{
padding: 0;
margin: 0;
}
.tabs__content.active {
margin: 0;
padding: 20px;
border: 1px #ffd400 solid;
display: block; /* по умолчанию показываем нужный блок */
}
.tabs__caption li.active{
background: #000;
color: #ffd400;
}
.tabs__caption li{
background: #ffd400;
display: inline-block;
padding: 10px;
color: #000;
list-style: none;
cursor: pointer;
}
7. В нужное место main.tpl добавить:
{tabs-static}
Готово!
• Автор: Kylaksizov
Посетители, находящиеся в группе Гость, не могут оставлять комментарии к данной публикации.