Хак для DLE Несколько форм добавления новостей

Рубрика: Хаки для DLE » Хак DLE 11.2, 11.1, 11.0, 10.6, 10.5, 10.4, 10.3, 10.2, 10.1, 10.0, 9.8, 9.7, 9.6, 9.5, 9.4, 9.3, 9.2, 9.0
Хак для DLE Несколько форм добавления новостей
Если вы задумывались над вопрос: Как сделать несколько форм добавления новостей? Например для разных групп пользователей или для каждого раздела, определенной новости и т.д., то хак для DLE Несколько форм добавления новостей - это решение данной проблемы. www.dle9.com
Хотя в интернет есть разнообразные варианты данной реализации, то советуем обратить на этот вариант от автора Пафнутия, благо его разработки сделаны грамотно с точки оптимизации и решений для движка DataLife Engine.

Один из вариант реализации нескольких форм добавления новостей на DLE-сайт -это копирования addnews.php, что в корне не верно т.к. создаёт кучу бесполезных дублей кода и создаёт лишние проблемы при обновлении сайта.
Кто-то назначает название шаблона через get, что в принципе правильно, но при этом об элементарной фильтрации данных не задумывается, Вот более менее правильное решение, которое в т.ч. не создает проблемы с разными заголовками окна браузера и спидбара для каждого шаблона дле формы добавления новости, ну и приятная мелочь - грамотно работающая ссылка "Добавить ещё" при успешном добавлении новости.
Хак для DLE Несколько форм добавления новостей
Хак для DLE Несколько форм добавления новостей

Т.к. создание отдельного шаблона добавления новости - действие не очень частое, то выносить какие либо настройка в конфиги и прочее не вижу смысла.
Допустим перед нами стоит конкретная задача: реализовать два дополнительных шаблона для добавления новостей, один - добавлять истории (имя шаблона addhistory.tpl), второй - добавлять события (addevent.tpl).

Установка хака Несколько форм добавления новостей

Открываем файл /engine/modules/addnews.php
Находим:

$allow_addnews = true;


Ниже вставляем:

$addnewsTemplate = 'addnews'; // Шаблон по умолчанию
if($_GET['tpl'] == 'history') $addnewsTemplate = 'addhistory'; // Шаблон для добавления историй
if($_GET['tpl'] == 'event') $addnewsTemplate = 'addevent'; // Шаблон для добавления событий


Т.е. из примера мы видим, что для каждого шаблона необходимо создавать отдельное условие, сделано это для того, чтобы избежать сообщений об отсутствующем шаблоне когда не фильтруется $_GET.
Далее находим:

$tpl->load_template( 'addnews.tpl' );


Заменяем на:

$tpl->load_template( $addnewsTemplate.'.tpl' );


Теперь сделаем нормальный ЧПУ для новых форм добавления новостей. Открываем в корне вашего хостинга

.htaccess


Находим:

RewriteRule ^addnews.html$ index.php?do=addnews [L]


Ниже вставляем:

RewriteRule ^addhistory.html$ index.php?do=addnews&tpl=history [L]
RewriteRule ^addevent.html$ index.php?do=addnews&tpl=event [L]


Ну и конечно же нам нужны собственные заголовки для спидбара и метатега title.
Несколько форм добавления новостей

Открываем файл engine/engine.php
Находим:

elseif ($do == 'addnews') $nam_e = $lang['title_addnews'];


Заменяем на

elseif ($do == 'addnews') {
    switch ($_GET['tpl']) {
        case 'history':
            $nam_e = 'Добавление истории';
            break;

        case 'event':
            $nam_e = 'Добавление события';
            break;
        
        default:
            $nam_e = $lang['title_addnews'];
            break;
    }
}

Готово!
Думаю дальнейшее добавление новых шаблонов не составит труда.

Необязательные доработки

После добавления новости через нестандартную форму добавления, если нужно добавить ещё - то по умолчанию при клике на ссылку "Добавить ещё" нас перекинет на стандартную форму добавления. Это и исправим.
Открываем файл engine/modules/addnews.php
Ищем:

if( $config['allow_alt_url'] == "yes" ) msgbox( $lang['add_ok'], "{$msg} <a href="{$config['http_home_url']}" . "addnews.html">$lang[add_noch]</a> $lang[add_or] <a href="{$config['http_home_url']}">$lang[all_prev]</a>" );


Заменяем на:

if( $config['allow_alt_url'] == "yes" ) {				
	$_adnt = explode('tpl=', $_SERVER['QUERY_STRING']);
	$addNewsTplName = ($_adnt[1]) ? $_adnt[1] : 'addnews' ;
	msgbox( $lang['add_ok'], "{$msg} <a href='{$config['http_home_url']}{$addNewsTplName}" . ".html'>$lang[add_noch]</a> $lang[add_or] <a href='{$config['http_home_url']}'>$lang[all_prev]</a>" );
}


Теперь ссылка будет отрабатывать правильно!
Надеюсь статья была вам интересна!
Автор : Пафнутия

Скачать хаки для dle, как хак для DLE Несколько форм добавления новостей в текстовом файле данное решение
  • 60
Рубрика: DLE хаки » Хак для DLE
Ранее » Хак для DLE Cookie Style« Далее Хак Расширяет функционал тега {custom}
Добавление комментарияОставить комментарий