13.11.13, 23:48
0 комментарий
  DLE Хаки

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

В сети есть разные варианты реализации нескольких форм добавления новостей на 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


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


Находим:

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.

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


Открываем файл 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: 9.x-10.1
Автор: ПафНутиЙ

Реклама

Напишите своё мнение

  • acuteaggressiveair_kissangel
    badbbbeachbeee
    biggrinbig_bossblumblush
    boastbombboredombye
    clappingcraycrazycurtsey
    dancedashdeclarediablo
    diroldon-t_mentiondownloaddrinks
    first_moveflirtfocusfool
    friendsgive_heartgive_rosegood
    hangheartheathelp
    hihunterhystericireful
    kingkisslaughlazy
    lolmail1mambaman_in_love
    mdamega_shokmoilmosking
    musicneanegativenew_russian
    okon_the_quietpardonparting
    partypilotpioneerpleasantry
    popcormpranksterprevedpunish
    roflrtfmrussiansad
    sarcasticscarescratchsearch
    secretsensoredshokshout
    slowsmilesmokesoldier
    soldier_girlsorryspitefulspruce_up
    stinkersuicidesunsuperstition
    swoonteasetenderthanks
    thisto_pick_ones_noseto_take_umbragetreaten
    umnikunknwvampirevava
    victorywackowhistlewink
    wizardyahooyesyu
    e101e102e103e104
    e105e106e107e108
    e109e110e111e112
    e113e114e115e116
    e117e118e119e120
    e121e122e123e124
    e125e126e127e128
    e129e130e131e132
    e133e134e135e136
    e137e138e139e140
    e141e142e143e144
    e145e146e147e148
    e149e150e151e152
    e153e154e155e156
    e157e158e159e160
    e161e162e163e164
    e165e166e167e168
    e169e170e171e172
    e173e174e175e176
    e177e178e179e180
    e181e182e183e184
    e185e186e187e188
    e189e190e191e192
    e193e194e195e196
    e197e198e199e200
    e201e202e203e204