Редактор темы

Реклама
Реклама
Реклама
Реклама

Модуль category-url by sander

  • Автор темы Автор темы Sander
  • Дата начала Дата начала

Sander

Новичок
Регистрация
5 Мар 2016
Сообщения
49
Рейтинг реакций
102
Баллы
33
Возраст
38
1/3
Автор темы
1467093192_category-url.png

Как известно, в 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,


Ффух, вот вроде и все.

Версия DLE: 10.2 - 11.0

С уважением,
Олег Александрович a.k.a. Sander
 
спасибо, потестим 🙂
 
Уууу круто, теперь будет 3 категории кино, сериалы, мультики.
 
Не работает с хлебными крошками, dle 11.2.. В ЧПУ все правильно выводит, в хлебных крошках выводит первую. Может знает как заставить заработать?
 
Последнее редактирование:

Похожие темы Последние темы Популярные темы

Назад
Сверху