Category-URL

Как известно, в DLE при построении ссылки на полную новость (ЧПУ 2) и в спидбаре отображается та категория, которая просто идет первой в списке. Этот хак позволяет индивидуально выбирать отдельную категорию для формирования ссылки на полную новость и для отображения в спидбаре.
Данная тема особенно актуальна для киносайтов.
Хочу сразу предупредить, я не проводил тщательного всестороннего тестирования, поэтому если возникнут вопросы или проблемы - пишите в теме у меня на сайте.
Работает он только на страницах админки, при добавлении и редактировании новости. Выглядит он следующим образом:
Вот так будут выглядеть ссылка на новость и выбранные категории:
Установка
Выполнить запрос в БД:
ALTER TABLE `dle_post` ADD `category_url` MEDIUMINT( 8 ) NOT NULL DEFAULT '0' AFTER `category`;Открыть файл engine/inc/addnews.php
Найти код:
<div class="form-group">
<label class="control-label col-md-2">{$lang['addnews_cat']}</label>
<div class="col-md-10">
<select data-placeholder="{$lang['addnews_cat_sel']}" name="category[]" id="category" onchange="onCategoryChange(this)" $category_multiple style="width:100%;max-width:350px;">{$categories_list}</select>
</div>
</div>После него вставить:
<div class="form-group">
<label class="control-label col-md-2">Основная категория</label>
<div class="col-md-10">
<select data-placeholder="{$lang['addnews_cat_sel']}" name="category_url" class="categoryselect" onchange="onCategoryChange(this)" style="width:350px;">{$categories_list}</select>
</div>
</div>Найти строку:
$category = $_POST['category'];После нее вставить:
$category_url = intval( $_POST['category_url'] );Найти код:
category,Заменить на
category, category_url,В этой же строке найти код:
'$category_list',Заменить на:
'$category_list', '$category_url',Открыть файл engine/inc/editnews.php
Найти строку:
$categories_list = CategoryNewsSelection( $cat_list, 0 );После нее вставить:
$category_url = CategoryNewsSelection( $row['category_url'], 0 );Найти код:
<div class="form-group">
<label class="control-label col-md-2">{$lang['edit_cat']}</label>
<div class="col-md-10">
<select data-placeholder="{$lang['addnews_cat_sel']}" name="category[]" id="category" onchange="onCategoryChange(this)" {$category_multiple} style="width:350px;">{$categories_list}</select>
</div>
</div>После него вставить:
<div class="form-group">
<label class="control-label col-md-2">Основная категория</label>
<div class="col-md-10">
<select data-placeholder="{$lang['addnews_cat_sel']}" name="category_url" class="categoryselect" onchange="onCategoryChange(this)" style="width:350px;">{$category_url}</select>
</div>
</div>Найти строку:
$category = $_POST['category'];После нее вставить:
$category_url = intval( $_POST['category_url'] );Найти код (2шт):
category='$category_list',Заменить на:
category='$category_list', category_url='$category_url',Открыть файл engine/modules/show.full.php
Найти строку:
$category_id = intval( $row['category'] );После нее вставить:
if($row['category_url']) $category_id = $row['category_url'];Найти строку:
$category_id = $row['category'];После нее вставить:
if($row['category_url']) $category_id = $row['category_url'];Открыть файлы engine/modules/show.short.php и engine/modules/show.custom.php
Найти строку:
$row['category'] = intval( $row['category'] );После нее вставить:
if($row['category_url']) $row['category'] = $row['category_url'];Открыть файлы engine/engine.php и engine/modules/functions.php
Найти все:
p.category,Заменить на:
p.category, p.category_url,Открыть файл engine/modules/lastcomments.php
Найти код:
" . PREFIX . "_post.categoryЗаменить на:
" . PREFIX . "_post.category, " . PREFIX . "_post.category_urlОткрыть файл engine/classes/comments.class.php
Найти строку:
$row['category'] = intval( $row['category'] );После нее вставить:
if($row['category_url']) $row['category'] = $row['category_url'];Ффух, вот вроде и все.
Версия DLE: 10.2 - 11.0
С уважением,
Олег Александрович a.k.a. Sander