Редактор темы

Вопрос? Автопереход в новость после ее добавления

  • Автор темы Автор темы Estomel
  • Дата начала Дата начала

Estomel

Посетитель
Регистрация
5 Фев 2018
Сообщения
95
Рейтинг реакций
30
Баллы
18
Возраст
30
1/3
Автор темы
Всем привет

DataLife Engine: 19.0

При создании новости появляется информация о предложении создать ещё одну новость или вернуться на главную

cxccl11sTAyoRB-lcRHqXUy4EtdBgxQeNeogkMVbMt-zqA6cegUEDJJV2HGwltVTAIY_QbR-5LAkAsjDIYv3q1EO.jpg

Можно ли как нибудь заставить актуальную версию dle переходить сразу в только что созданную мной новость без вот таких сообщений?

Пробовал разные хаки чтобы это исправить но они все на очень старые версии dle и на 19 версии не работают.
 
Estomel думаю, физически это возможно, но нужно уметь в PHP/DLE, либо найти того кто умеет и поможет
 
Патч для твоего файла engine/inc/addnews.php (админка)
Найди самый низ в elseif( $action == "doaddnews" ), там где:


Код:
$_SESSION['dp']['dp_'.md5($_POST['duplicateprotection'])] = true;

msg( "success", ... );

Замени этот блок на:


Код:
$_SESSION['dp']['dp_'.md5($_POST['duplicateprotection'])] = true;

// === АВТОРЕДИРЕКТ ПОСЛЕ ДОБАВЛЕНИЯ ===
// 1) на созданную новость
$redirect_url = $full_link;

// если вдруг вернулся относительный путь — делаем абсолютный
if (strpos($redirect_url, 'http://') !== 0 && strpos($redirect_url, 'https://') !== 0) {
   $redirect_url = $config['http_home_url'] . ltrim($redirect_url, '/');
}

header("Location: " . $redirect_url);
exit;

Если хочешь редиректить в редактирование, замени $redirect_url на:


Код:
$redirect_url = $config['http_home_url'] . "admin.php?mod=editnews&action=editnews&id=" . intval($id);

Важно ЭТО работает из Админки.
Для пользовательского шаблона:
2) Добавь создание $full_link всегда (после вставки/обновления, когда известен $insert_id)
Сразу перед строкой:


Код:
msgbox( $lang['add_ok'], ...

вставь:


Код:
// === BUILD FULL LINK FOR REDIRECT ===
$redirect_id = intval($insert_id ? $insert_id : $row['id']);

if ($redirect_id > 0) {

   $r = $db->super_query("SELECT id, date, category, alt_name FROM " . PREFIX . "_post WHERE id='{$redirect_id}' LIMIT 1");

   if (!empty($r['id'])) {

       $r['date'] = strtotime($r['date']);

       $full_link = DLEUrl::BuildUrl('showfull', [
           'category'  => get_url($r['category']),
           'year'      => date('Y', $r['date']),
           'month'     => date('m', $r['date']),
           'day'       => date('d', $r['date']),
           'news_name' => $r['alt_name'],
           'newsid'    => $r['id']
       ]);

       // абсолютный URL, если вернулся относительный
       if (strpos($full_link, 'http://') !== 0 && strpos($full_link, 'https://') !== 0) {
           $full_link = $config['http_home_url'] . ltrim($full_link, '/');
       }

       header("Location: " . $full_link);
       exit;
   }
}
3) И сразу после этого удали/закомментируй старый msgbox(...), иначе он уже не выполнится (после exit).
Поверка была на DLE 19.0
 
Но мне кажеться логичнее бы было в твой блок добавить вопрос с переходом в новость! Что бы не заниматься принудиловкой!
 

Похожие темы Последние темы Популярные темы

Назад
Сверху