• Автор:

    Flesha
  • Добавлено:

    ноя 14, 2013
  • Комментариев:

    0
  • Просмотров:

    1606

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

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

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

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

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

Установка:

1) Открываем файл /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' );


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

    /.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]


3) Ну и конечно же нам нужны собственные заголовки для спидбара и метатега 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;
}
}


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

Разработчик: ПафНутиЙ
Вернуться
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.