8Dle
Авторизация

Фикс для подкатегорий с одинаковым URL [DLE 9.x - 10.x]

Данный хак решает проблему для категорий у которых должен быть с одинаковым URL но сами они находятся как подкатегории в основных категориях.

Для тех кто не понимает, объясняю примером. К примеру есть две категории основные :
* Фильмы
* Сериалы
У категории Фильмы есть подкатегория Боевик, который имеет url - boevik. На сайте это видно как /film/boevik. Теперь хотим создать ту же категорию только для основной категории Сериалы. На что получим ошибку Что данная категория уже есть. Но это не так, для сериалов ее нет только для фильмов.

Этот хак, решит эту проблему.
Открываем /engine/modules/functions.php находим там код :
function get_ID($cat_info, $category) {
    foreach ( $cat_info as $cats ) {
        if( $cats['alt_name'] == $category ) return $cats['id'];
    }
    return false;
}


Меняем на :
function get_ID($cat_info, $category) {
    $arr_cat = array();
    foreach ( $cat_info as $cats ) {
        if( $cats['alt_name'] == $category ) $arr_cat[] = $cats['id'];
    }
   
    if(count($arr_cat) > 1)
    {
        if($_GET['category'])
        {
            $name_first_cat = explode('/', $_GET['category']); $name_first_cat = $name_first_cat[0];
            foreach($arr_cat as $first_cat)
            {
                if($cat_info[$cat_info[$first_cat]['parentid']]['alt_name'] == $name_first_cat) return $first_cat;
            }
        }
    }
    else
        return $arr_cat[0];
    return false;
}

Далее открываем /engine/inc/categories.php находим и удаляем код :
$row = $db->super_query( "SELECT alt_name FROM " . PREFIX . "_category WHERE alt_name ='{$alt_cat_name}'" );

if( $row['alt_name'] ) {
    msg( "error", $lang['cat_error'], $lang['cat_eradd'], "?mod=categories" );
}

Далее ищем и удаляем :
$row = $db->super_query( "SELECT id, alt_name FROM " . PREFIX . "_category WHERE alt_name = '$alt_cat_name'" );
if( $row['id'] and $row['id'] != $catid ) {
	msg( "error", $lang['cat_error'], $lang['cat_eradd'], "javascript:history.go(-1)" );
}

Указывать ссылки только по полным путям /film/boevik и /serial/boevik. Если же перейти просто на /boevik то выдаст первую категорию которая ближе в массиве.

Жмите на Кнопу ниже, или подписывайтесь!


Читайте также
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.
Причины головной боли и способы ее лечения своими силами! Читай на
lwm-company.ru
septiktyumen.ru


Dle это движок который изначально проектировался для создания новостных сайтов, но по мере своего развития движка значительно расширил свою функциональность и стал универсальным средством разработки и сопровождения сайтов и блогов различной направленности и тематики. По сравнению с другими бесплатными (и некоторыми платными) CMS системами движок dle обладает довольно обширными возможности.

Авторизация