Тег Category=X с учетом подкатегорий
Ну прям очень не нравится перечислять все, вновь добавленные, категории. Никакой динамики. Добавил значит пользователь новую категорию и что? Её нигде нет, так как она не описана в main.tpl в теге [category=X]. Данный хак поможет это дополнить.
Установка:
1. Открыть engine/modules/functions.php и найти:
function check_category( $matches=array() ) {
Добавить выше:
### IDteam.info Субкатегории ###
function check_sub( $matches=array() ) {
global $category_id;
if(!preg_match("#[0-9,]+#is", $matches[2]) || ($matches[1] != "subcategory" && $matches[1] != "subcatlist" && $matches[1] != "not-subcategory" && $matches[1] != "not-subcatlist")) return $matches[0];
$thiscategory = explode(",", $category_id)[0];
$cats = explode(',', $matches[2]);
foreach ($cats as $one) {
$withsub = explode("|", get_sub_cats($one));
if(strpos($matches[1], "not-") === false) {
if(in_array($thiscategory, $withsub)) {
return $matches[3];
}
} else {
if(!in_array($thiscategory, $withsub)) {
return $matches[3];
}
}
}
return "";
}
2. Открыть engine/modules/main.php и найти:
if (stripos ( $tpl->copy_template, "[category=" ) !== false) {
Добавить выше:
### IDteam.info Субкатегории ###
if (stripos ( $tpl->copy_template, "[subcategory=" ) !== false) {
$tpl->copy_template = preg_replace_callback ( "#\\[(subcategory)=(.+?)\\](.*?)\\[/subcategory\\]#is", "check_sub", $tpl->copy_template );
}
if (stripos ( $tpl->copy_template, "[not-subcategory=" ) !== false) {
$tpl->copy_template = preg_replace_callback ( "#\\[(not-subcategory)=(.+?)\\](.*?)\\[/not-subcategory\\]#is", "check_sub", $tpl->copy_template );
}
3. Открыть engine/modules/show.short.php, engine/modules/show.full.php и engine/modules/show.custom.php и найти:
if( strpos( $tpl->copy_template, "[catlist=" ) !== false ) {
Добавить выше:
### IDteam.info Субкатегории ###
if (stripos ( $tpl->copy_template, "[subcategory=" ) !== false) {
$tpl->copy_template = preg_replace_callback ( "#\\[(subcategory)=(.+?)\\](.*?)\\[/subcategory\\]#is", "check_sub", $tpl->copy_template );
}
if (stripos ( $tpl->copy_template, "[not-subcategory=" ) !== false) {
$tpl->copy_template = preg_replace_callback ( "#\\[(not-subcategory)=(.+?)\\](.*?)\\[/not-subcategory\\]#is", "check_sub", $tpl->copy_template );
}
if( strpos( $tpl->copy_template, "[subcatlist=" ) !== false ) {
$tpl->copy_template = preg_replace_callback ( "#\\[(subcatlist)=(.+?)\\](.*?)\\[/subcatlist\\]#is", "check_sub", $tpl->copy_template );
}
if( strpos( $tpl->copy_template, "[not-subcatlist=" ) !== false ) {
$tpl->copy_template = preg_replace_callback ( "#\\[(not-subcatlist)=(.+?)\\](.*?)\\[/not-subcatlist\\]#is", "check_sub", $tpl->copy_template );
}
Теперь в шаблонах можно использовать теги:
[subcategory=X]текст[/subcategory]
[not-subcategory=X]текст[/not-subcategory]
[subcatlist=X]текст[/subcatlist]
[not-subcatlist=X]текст[/not-subcatlist]
Данные теги проверят саму категорию и все подкатегории. Категории можно перечислять через запятую и для каждой будет произведена проверка по субкатегориям.
Готово!
• Источник
Посетители, находящиеся в группе Гость, не могут оставлять комментарии к данной публикации.