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

Рубрика: Хаки для DLE » Хак DLE 13.1, 13.0, 12.1, 12.0, 11.3, 11.2, 11.1, 11.0, 10.6, 10.5, 10.4, 10.3, 10.2, 10.1, 10.0, 9.8
Хак для 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 Несколько форм добавления новостей в текстовом файле данное решение
Хак для DLE Несколько форм добавления новостей Например для разных групп пользователей или для каждого раздела, определенной новости и т.д. всё лучшее у нас форумы, хаки, модули, шаблоны.
  • 60
Рубрика: DLE хаки » Хак для DLE
Ранее » Хак для DLE Cookie Style« Далее Хак Расширяет функционал тега {custom}
Нажмите на ссылку, чтобыОставить комментарий