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

Как же сделать, чтобы была не одна форма добавления новостей, а несколько?

В интернете имеются разнообразные вариации того как сделать так, чтобы было несколько форм добавления новостей на DLE-сайт.

Кто-то делает копию addnews.php, что абсолютно не правильно, так как делает большое количество не нужных копий кода и тем самым приносит излишние проблемы при обновлении сайта.

Кто-то прописывает наименование шаблона через get, что в принципе верно, но об элементарной фильтрации данных при том не думает, что так же не верно.

Я хочу вам предложить по моему взгляду верное решение, которое вмиг убирает проблемы с различными заголовками окна браузера и спидбара для любого шаблона добавления новости, ну и приятнейшая деталь - точно функционирующая ссылка "Добавить ещё" при удачном добавлении новости.

Так как создать отдельный шаблон добавления новости - работа не весьма частая, то выносить какие-то настройки в конфиги и остальное, смысла нет.

Предположим, перед нами стоит определенная задача: исполнить пару дополнительных шаблонов для добавления новостей, первый - добавлять истории (имя шаблона 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' ); 

Сейчас сделаем нормальный ЧПУ для новых форм добавления новостей. Раскрываем

/.htaccsess  


Находим:

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>" ); } 

Теперь ссылка будет отрабатывать верно!

Буду надеяться, что статья была вам интересна и ожидаю ваших мнений!

Пожаловаться Подписаться
0 ответов
авторизуйтесь чтобы ответить