• DONATE to NULLED!
    Форуму и его команде можно помочь, мотивировать модераторов разделов.
    Помогите модератору этого раздела killoff лично.

Помощь Вопросы по DLE (ВНИМАТЕЛЬНО читаем первый пост!!!)

Горбушка

Ищу её...
Регистрация
2 Май 2008
Сообщения
3.444
Реакции
2.524
Для просмотра ссылки Войди или Зарегистрируйся | Для просмотра ссылки Войди или Зарегистрируйся | Для просмотра ссылки Войди или Зарегистрируйся | Для просмотра ссылки Войди или Зарегистрируйся | Для просмотра ссылки Войди или Зарегистрируйся

Если у Вас недостаточно постов/уровня для создания новой темы, пишите свои вопросы здесь.

Если постов хватает - в новую тему.

Спасибо на этом форуме говорят кнопкой "Мне нравится"...
 
Последнее редактирование:
DLE 14. Подскажите, какие правки нужно внести, чтобы изменить ответ сервера с 404-го на 200-й при просмотре пустых категорий (без новостей)? Правки, которые работали в ранних версиях движка, утратили актуальность. Я так понимаю, нужно внести изменения в этот кусок кода из main.php:

Код:
    @header( "HTTP/1.0 404 Not Found" );
    $need_404 = false;
   
    if( $config['own_404'] AND file_exists(ROOT_DIR . '/404.html') ) {
        @header("Content-type: text/html; charset=".$config['charset']);
        echo file_get_contents( ROOT_DIR . '/404.html' );
        die();
       
    } else msgbox( $lang['all_err_1'], $lang['news_err_27'] );

}

if($need_404) {
    @header( "HTTP/1.0 404 Not Found" );
}
 
Как сделать сохранение выбора темы тёмная/светлая на любой странице?

Нашел в сети статью Для просмотра ссылки Войди или Зарегистрируйся

Сделал всё по инструкции. Всё работает, кроме одного. Почему-то сохранение происходит только на главной странице сайта. Если менять тему на другой странице, то выбор темы не сохраняется. Подскажите, что сделал не так?

В main.tpl в head добавил это

PHP:
<?php session_start();if(!isset($_SESSION["theme"])){$_SESSION["theme"] = "light";} ?>

И это

Код:
<link href="{THEME}/style/<?php echo $_SESSION['theme']; ?>.css" type="text/css" rel="stylesheet" id="theme-link">

В низ перед </body> добавил js

Код:
var btn = document.getElementById("theme-button");
var link = document.getElementById("theme-link");
btn.addEventListener("click", function () { ChangeTheme(); });
function ChangeTheme()
{
    let lightTheme = "/templates/kinowalk-utf8/style/light.css";
    let darkTheme = "/templates/kinowalk-utf8/style/dark.css";
    var currTheme = link.getAttribute("href");
    var theme = "";

    if(currTheme == lightTheme)
    {
        currTheme = darkTheme;
        theme = "dark";
    }
    else
    {
        currTheme = lightTheme;
        theme = "light";
    }
    link.setAttribute("href", currTheme);
    Save(theme);
    function Save(theme)
{
    var Request = new XMLHttpRequest();
    Request.open("GET", "./themes.php?theme=" + theme, true); // путь к php файлу отвечающий за сохранение
    Request.send();
}
};

И создал php файл themes.php с содержимым

PHP:
<?php
session_start();

if(isset($_GET["theme"]))
{
    $theme = $_GET["theme"];

    if($theme == "light" || $theme == "dark")
    {
        $_SESSION["theme"] = $theme;
    }
}
?>

Что сделал не так? Почему только на главной происходит сохранение?
Версия DLE 14.0
 
В main.tpl в head добавил это

PHP:
<?php session_start();if(!isset($_SESSION["theme"])){$_SESSION["theme"] = "light";} ?>
вообще в файлах шаблона нельзя использовать PHP. Чем стандартная смена шаблона не устраивает? Там просто настроить нужно шаблоны, и потом смену на выбор шаблона выводить через {changeskin}.
 
У меня тут возникла дилемма, с которой не могу спать спокойно...
Причёсываю код и стандартизирую кое что "по мелочи".
В DLE шаблонизаторе в 90% случаев используется strpos для поиска тегов, но в некоторых на мой взгляд абсурдных местах используется stripos.
strpos - работает с учётом регистра
stripos - без учёта регистра

Так вот использование stripos в некоторых редких случаях тянется со времён царя гороха, вроде как с самых первых версий DLE.
Вот к примеру stripos в DLE 14 :
Код:
/engine/modules/show.short.php

166: if (stripos ( $tpl->copy_template, "[category=" ) !== false) {
170: if (stripos ( $tpl->copy_template, "[not-category=" ) !== false) {

При этом буквально через несколько строк ниже уже используется strpos :
Код:
/engine/modules/show.short.php

176: if( strpos( $tpl->copy_template, "[catlist=" ) !== false ) {
180: if( strpos( $tpl->copy_template, "[not-catlist=" ) !== false ) {

Все мы знаем что strpos работает быстрее stripos, так зачем же тогда искать именно тег "[category=" без учёта регистра, например - [catEGory=
Может я что-то не знаю и в одной из древних версий DLE часть тегов в шаблоне были в верхнем регистре [CATEGORY= и т.д. ? Иначе у меня нет никаких догадок зачем...
Буду признателен великим гуру, кто сможет мне объяснить это ))
 
Скорее всего либо опечатка, либо об этом просто не задумывались.
Не думаю, что разница между этими функциями и количество из вызовов настолько большое, что стоит на такие мелочи обращать внимение.
Хотя подобных кусков я находил прилично, где в одном месте одна конструкция, а на 10 строк ниже уже другая.

Причиной такого - маленькая команда, закрытый исходный кой (не публичность репозитария) и отсутствие код-ревью от сообщества.

А что касается самих тегов - да, одно время, вроде, их писали капсом, потом забили. Когда пишешь теги капсом - они выделяются из общего HTML
 
А что касается самих тегов - да, одно время, вроде, их писали капсом, потом забили. Когда пишешь теги капсом - они выделяются из общего HTML
Спасибо за ответ, я в принципе так и догадывался, что старое наследие DLE + разные люди писали код.
Это в принципе видно на этом куске по стилю написания пробелов между операторами и функциями - "if (stripos ( $tpl->copy_template"
И ниже кусок уже без такого безумного кол-ва пробелов и расставлены по другому - "if( strpos( $tpl->copy_template"

Учитывая что я за всю свою историю работы с DLE не разу не видел в шаблонах тегов в верхнем регистре + сами разрабы в своих Default шаблонах все теги в нижнем регистре пишут - и вовсе отказался бы от оставшихся stripos в пользу быстрого strpos.

Ато получается одному разрабу нравится strpos, второму stripos+пробелы.
Я просто класс шаблонизатора templates.class.php допилил чуток, добавил в него функцию на проверку тегов.
И все сотни конструкций вида
Код:
if( strpos( $tpl->copy_template, "[catlist=" ) !== false ) {
Плавно превращаются в -
Код:
if ($tpl->if("[catlist=")) {

Код уменьшается в разы, визуально читать его приятно и если какие-то изменения в новых версиях php произойдут, то не придётся по всему движку прыгать и исправлять эти конструкции, достаточно будет в одном месте подправить и всё... Но это всё моя дотошность :eek:
 
Я просто класс шаблонизатора templates.class.php допилил чуток, добавил в него функцию на проверку тегов.
А через пару месяцев выходит новая версия DLE и пилите по новой.
Если вы меняете исходники - делайте хотя бы через плагины.
 
А через пару месяцев выходит новая версия DLE и пилите по новой.
Если вы меняете исходники - делайте хотя бы через плагины.
Это всё понятно, для клиента с этим вообще не нужно заморачиваться, оставляем всё как в оригинале и все довольны.
А для себя для души совсем другие задачи, новые версии DLE представляют интерес исключительно из любопытства с точки зрения исправлений/оптимизаций/новых-функций, ибо то что у меня - уже нельзя назвать DLE в привычном понимании. Я через KDiff3 закидываю 2 версии, старую DLE и новую DLE, все изменения между ними как на ладони, что нравится оставляю и адаптирую под себя, что не нравится вырезаю.
P.S. Про "через пару месяцев" это вы конечно комплимент целсофту сделали :D как по мне 1 раз в пол года обнова выходит.
 
Не могу разобраться, только начал изучать dle и столкнулся с проблемой:
dle 14 nulled на OpenServer, шаблон Default
Установил Yandex Maps согласно инструкции все вставляю, но ничего не выходит, не пойму что не так делаю:
Открыть /templates/Default/addnews.tpl и в самое начало прописать: {include file="engine/modules/ymaps/addnews.php"}

самое не понятное в файл addnews.tpl что не пропиши туда ничего не происходит, даже удалял его, все работает без него, никаких ошибок.
На элементарной херне встрял, понимаю, а куда копать не знаю. Помогите пожалуйста.
 
Назад
Сверху