CMS DataLife Engine - Система управления сайтами

Sander1

местные
  • Публикаций

    70
  • Зарегистрирован

  • Посещение

Репутация

45 Хороший

Информация о Sander1

  • Звание
    Активист

Информация

  • Пол
    Мужчина
  • Город
    Харьков

Посетители профиля

1 109 просмотров профиля
  1. Небольшой баг в clear_cache

    engine/modules/functions.php и engine/inc/include/functions.inc.php if( $file != '.htaccess' AND !is_dir($file) ) { is_dir($file) - проверяется по отношению к имени файла, а не его полному пути к директории Должно быть: if( $file != '.htaccess' AND !is_dir(ENGINE_DIR . '/cache/' . $file) ) {
  2. В настройках доп.поля есть параметр Разделитель для списка перекрестных ссылок в котором если указать символ с пробелами с обеих сторон, пример " / " - то пробел справа будет обрезан. При выводе в шаблоне, запись получается такая: Приходится в поле записывать спецсимвол:
  3. Закладки и approve

    Никогда не скрывалась. Вероятнее всего вы не замечали или не обращали внимания. Ведь ситуация на самом деле довольно таки редкая и мало кто из пользователей заметит, что в избранном не открывается какая-либо новость. А если и заметит, то вряд ли сообщит. На счет количества закладок скажу даже больше, если удалить новость находящуюся в закладках - счетчик уже будет невозможно починить. Можете попробовать сами, создайте тестовый аккаунт и тестовую новость. В тестовом аккаунте добавьте новость в закладки и тут же удалите новость с сайта. Счетчик будет показывать одну новость в закладках, а на странице /favorites/ будет пусто. И никак средствами движка это не исправить. Только посредством ручной правки БД через phpMyAdmin.
  4. Закладки и approve

    Новость на модерации видна в списке коротких новостей на странице закладок example.com/favorites/ для всех пользователей. Версия DLE: любая. Фикс: Открыть файл engine/modules/favorites.php Найти строку: if( $user_group[$member_id['user_group']]['allow_short'] ) $stop_list = ""; Ниже нее вставить: $stop_list .= 'approve=1 AND ';
  5. Тег {news-id}

    Это признаю, не проверил. Столкнулся с проблемой именно в {custom }. Там этот тег есть и работает неправильно.
  6. Тег {news-id}

    На странице полной новости тег {news-id} во всех (!!!) шаблонах отображает ID просматриваемой новости. А именно в шаблонах topnews.tpl, relatednews.tpl и в блоках {custom ...} Происходит это из-за коллизии имени тега в engine/classes/templates.class.php if( defined( 'NEWS_ID' ) ) $this->template = str_ireplace( "{news-id}", NEWS_ID, $this->template );
  7. Беда с /catalog/...

    1. Если контент главной заменить на статическую страницу или custom, то страница http://example.com/catalog/ будет обрабатываться как главная $dle_module = 'main' И в то же время в контенте будет выводится обычный список новостей, игнорируя параметр "Информация выводимая по умолчанию на главной странице:" 2. http://example.com/catalog/0/ engine/init.php elseif (!$do AND $catalog) $dle_module = "catalog"; И получается, что контент страницы формируется правильно, а тут опять $dle_module = 'main' PS. Кто не знает, переменная $dle_module отвечает за работу тега [aviable=...]. И получается, что по URL и контенту мы находимся в каталоге, а тег [aviable - считает, что на главной. PPS. Почему бы в htaccess не использовать запись index.php?do=catalog&catalog=$1
  8. Предложение №1 - убрать запросы в БД при входе на не существующие/удаленные категории: Предложение №2 - исключить запросы вида SELECT count(*) as count FROM dle_post для страниц категорий. Вместо выполнения запросов использовать параметр newscount из переменной $cat_info Предложение №3 - Добавить возможность администратору настраивать очистку кеша при голосовании в рейтинге и добавлении комментария. Сейчас при выставлении оценки и при добавлении комментария - очищается весь кеш новостей с префиксом news_, а это как контент так и блоки custom (и newscount). Но что если на сайте в короткой новости не отображаются ни рейтинг ни количество комментариев. Получается достаточно чистить только кеш полной новости и комментариев. Если кому интересно, решение №1 и №2 описал у себя на сайте
  9. Помогите пожалуйста

    Если я правильно понял ТС, то сейчас статическая страница представляет собой конструкцию: <div> <h1>Заголовок</h1> Текст </div> А нужно типа так: <div> <h1>Заголовок</h1> Текст </div> <div> <h2>Заголовок второй</h2> Текст еще какой-то </div> Для этого можно воспользоваться параметром индивидуального файла шаблона для статической страницы http://prntscr.com/k6bn1m
  10. Предложение по утилите управления плагинами. Добавить "Режим разработчика", чтобы вручную внесенные изменения тут же отображались в работе сайта, но при этом учитывались включенные плагины. Сейчас для этого достаточно вручную добавить автоматическую очистку кеша плагинов, но было бы удобнее если бы была просто кнопка в самой панели управления плагинами. Если кому интересно, в файле engine/classes/plugins.class.php Перед строкой abstract class DLEPlugins { Вставить: @unlink(ENGINE_DIR . '/cache/system/plugins.php');
  11. Когда много категорий становится довольно неудобно добавлять подкатегории. В частности каждый раз приходится искать нужную категорию в списке. Данный хак добавляет кнопку, при клике на которую сразу становится отмеченной выбранная категория. Установщик плагина для DLE 13.0 <?xml version="1.0" encoding="utf-8"?> <dleplugin> <name>Автовыбор родительской категории</name> <description>При создании подкатегории будет автомаитически выбрана родительская категория. by Sander</description> <icon></icon> <version></version> <dleversion></dleversion> <versioncompare>less</versioncompare> <mysqlinstall><![CDATA[]]></mysqlinstall> <mysqlupgrade><![CDATA[]]></mysqlupgrade> <mysqlenable><![CDATA[]]></mysqlenable> <mysqldisable><![CDATA[]]></mysqldisable> <mysqldelete><![CDATA[]]></mysqldelete> <file name="engine/inc/categories.php"> <operation action="before"> <searchcode><![CDATA[<a href=\"?mod=categories&action=edit]]></searchcode> <replacecode><![CDATA[<a href=\"#\" onclick=\"return addSubCat({$id});\"><i title=\"{$lang['cat_add']}\" class=\"fa fa-plus-circle text-success\"></i></a> ]]></replacecode> </operation> <operation action="after"> <searchcode><![CDATA[<script>]]></searchcode> <replacecode><![CDATA[function addSubCat(id) { $('.uniform[name=category]').val(id).selectpicker('render'); $('#newcats').modal(); return false; }]]></replacecode> </operation> </file> </dleplugin> С уважением, Олег Александрович a.k.a. Sander
  12. При создании категории или подкатегории не учитывается параметр posi. Вернее у новой категории этот параметр позиции равен единице, отчего при создании категория размещается не в конце списка, а в начало ветки: Лично мне это кажется дико неудобным. Создал, перетянул (а когда категорий 50 и тянуть со скроллом, запоминая на глазок отсутп... уфф) в конец списка, сохранил. Многовато-лишних действий. <?xml version="1.0" encoding="utf-8"?> <dleplugin> <name>Правильное расположение новых категорий</name> <description>Расположение новой добавленной категории в конец списка ветки. by Sander</description> <icon></icon> <version></version> <dleversion></dleversion> <versioncompare>less</versioncompare> <mysqlinstall><![CDATA[]]></mysqlinstall> <mysqlupgrade><![CDATA[]]></mysqlupgrade> <mysqlenable><![CDATA[]]></mysqlenable> <mysqldisable><![CDATA[]]></mysqldisable> <mysqldelete><![CDATA[]]></mysqldelete> <file name="engine/inc/categories.php"> <operation action="after"> <searchcode><![CDATA['$disable_rating', '$disable_comments')" );]]></searchcode> <replacecode><![CDATA[ $new_id = $db->insert_id(); $posi = $db->super_query("SELECT MAX(posi) as posi FROM ".PREFIX."_category WHERE parentid = $category LIMIT 1"); $posi = $posi['posi'] + 1; $db->query("UPDATE ".PREFIX."_category SET posi = $posi WHERE id = $new_id");]]></replacecode> </operation> </file> </dleplugin> Данный метод подойдет так же и для предыдущих версий DLE. Только там код подключения немного отличается, вставлять нужно после строки, которая начинается на: $db->query( "INSERT INTO " . PREFIX . "_category С уважением, Олег Александрович a.k.a. Sander
  13. Когда категорий не много или занимаешься созданием развернутой структуры категорий - при каждом обновлении страницы приходится повторно нажимать кнопку "Развернуть все". Данный хак запоминает состояние кнопки и при перезагрузке страницы нет необходимости повторно нажимать эту кнопку. Плагин для DLE 13.0 <?xml version="1.0" encoding="utf-8"?> <dleplugin> <name>Запоминать состояние категорий в админке</name> <description>Запоминать состояние кнопок "Развернуть все" и "Свернуть все". by Sander</description> <icon></icon> <version></version> <dleversion></dleversion> <versioncompare>less</versioncompare> <mysqlinstall><![CDATA[]]></mysqlinstall> <mysqlupgrade><![CDATA[]]></mysqlupgrade> <mysqlenable><![CDATA[]]></mysqlenable> <mysqldisable><![CDATA[]]></mysqldisable> <mysqldelete><![CDATA[]]></mysqldelete> <file name="engine/inc/categories.php"> <operation action="before"> <searchcode><![CDATA[ $('.nestable-action').on('click', function(e)]]></searchcode> <replacecode><![CDATA[ if (localStorage.getItem('categoryExpand')) { $('.dd').nestable('expandAll'); }]]></replacecode> </operation> <operation action="after"> <searchcode><![CDATA[ if (action === 'expand-all') { ]]></searchcode> <replacecode><![CDATA[ localStorage.setItem('categoryExpand', true);]]></replacecode> </operation> <operation action="after"> <searchcode><![CDATA[ if (action === 'collapse-all') {]]></searchcode> <replacecode><![CDATA[ localStorage.removeItem('categoryExpand');]]></replacecode> </operation> </file> </dleplugin> Для предыдущих версий (но с новой админкой) так же будет работать, но изменения нужно будет вносить вручную. С уважением, Олег Александрович a.k.a. Sander
  14. Данный хак будет полезен тем, кто часто добавляет новые подкатегории или просто вы ленивая жопа устали каждый раз перебирать файлы шаблона в поисках всех custom-ов и [category для добавления нового ID. С помощью этого хака достаточно будет прописать: [category={subcat=3}] {custom category="{subcat=7}"} [catlist={subcat=2}] В момент загрузки файла шаблона хак выполнит обработку тега, в итоге обработчик получит привычный вид: [category=3,21,22,25,29,33,34,35,39] {custom category="7,59,60,61,66,67,68,69,80"} [catlist=2,8,9,10] Так же можно комбинировать теги: [category={subcat=3},100,105-110] [category={subcat=3},{subcat=7},551] Установка: Для DLE 13.0 достаточно установить плагин: <?xml version="1.0" encoding="utf-8"?> <dleplugin> <name>Обработка тега {subcat=x}</name> <description>Автоматический вывод списка ID подкатегорий заданной &quot;x&quot; категории</description> <icon></icon> <version></version> <dleversion></dleversion> <versioncompare>less</versioncompare> <mysqlinstall><![CDATA[]]></mysqlinstall> <mysqlupgrade><![CDATA[]]></mysqlupgrade> <mysqlenable><![CDATA[]]></mysqlenable> <mysqldisable><![CDATA[]]></mysqldisable> <mysqldelete><![CDATA[]]></mysqldelete> <file name="engine/classes/templates.class.php"> <operation action="before"> <searchcode><![CDATA[function load_template($tpl_name) {]]></searchcode> <replacecode><![CDATA[////////////////////////////////////////////////////////////// private function getSubCatList($match) { global $cat_info; $id = is_array($match) ? $match[1] : $match; if (!$cat_info[$id]) { return $id; } $list = [$id]; foreach ($cat_info as $v) { if ($v['parentid'] == $id) { $list[] = $this->getSubCatList($v['id']); } } return join(',', $list); } //////////////////////////////////////////////////////////////]]></replacecode> </operation> <operation action="after"> <searchcode><![CDATA[$this->template = file_get_contents( $this->dir . "/" . $tpl_name );]]></searchcode> <replacecode><![CDATA[////////////////////////////////////////////////////////////////////////////////////////////// $this->template = preg_replace_callback("#\{subcat=(\d+)\}#i", [&$this, 'getSubCatList'], $this->template); //////////////////////////////////////////////////////////////////////////////////////////////]]></replacecode> </operation> <operation action="after"> <searchcode><![CDATA[$template = file_get_contents( $templatefile );]]></searchcode> <replacecode><![CDATA[////////////////////////////////////////////////////////////////////////////////////////////// $template = preg_replace_callback("#\{subcat=(\d+)\}#i", [&$this, 'getSubCatList'], $template); //////////////////////////////////////////////////////////////////////////////////////////////]]></replacecode> </operation> </file> </dleplugin> Для предыдущих версий инструкция у меня на сайте, если кому будет интересно конечно. С уважением, Олег Александрович a.k.a. Sander
  15. Есть предложения по управлению плагинами. 1. При внесении изменений в php файл в кеше файла в шапке записывать какой именно плагин внес изменения. <?php // Название плагина // И еще название другого плагина /* ===================================================== DataLife Engine - by SoftNews Media Group 2. Добавить в админку поиск по файлу. Чтобы можно было вбить локальный адрес файла и получить сравнительную информацию как на гитхабе. Слева оригинал, справа - модифицированная копия с подсветкой изменений. Или хотя бы просто показать список плагинов которые вносят изменения в этот файл. 3. В имени кеша файла перед хешем прописывать имя файла, к примеру engine.php_226ba0642590b9136386fb777e0a09ec.php 4. Добавить кнопку для пересохранения всех плагинов. Сейчас для этого нужно открыть плагин и просто нажать сохранить, но как-то это не продуктивно. 5. Добавить возможность текстового экспорта/импорта плагина без фактического использования xml файлов.