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

Sander1

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

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

  • Посещение

Репутация

42 Хороший

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

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

Информация

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

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

866 просмотров профиля
  1. Предложение №1 - убрать запросы в БД при входе на не существующие/удаленные категории: Предложение №2 - исключить запросы вида SELECT count(*) as count FROM dle_post для страниц категорий. Вместо выполнения запросов использовать параметр newscount из переменной $cat_info Предложение №3 - Добавить возможность администратору настраивать очистку кеша при голосовании в рейтинге и добавлении комментария. Сейчас при выставлении оценки и при добавлении комментария - очищается весь кеш новостей с префиксом news_, а это как контент так и блоки custom (и newscount). Но что если на сайте в короткой новости не отображаются ни рейтинг ни количество комментариев. Получается достаточно чистить только кеш полной новости и комментариев. Если кому интересно, решение №1 и №2 описал у себя на сайте
  2. Помогите пожалуйста

    Если я правильно понял ТС, то сейчас статическая страница представляет собой конструкцию: <div> <h1>Заголовок</h1> Текст </div> А нужно типа так: <div> <h1>Заголовок</h1> Текст </div> <div> <h2>Заголовок второй</h2> Текст еще какой-то </div> Для этого можно воспользоваться параметром индивидуального файла шаблона для статической страницы http://prntscr.com/k6bn1m
  3. Предложение по утилите управления плагинами. Добавить "Режим разработчика", чтобы вручную внесенные изменения тут же отображались в работе сайта, но при этом учитывались включенные плагины. Сейчас для этого достаточно вручную добавить автоматическую очистку кеша плагинов, но было бы удобнее если бы была просто кнопка в самой панели управления плагинами. Если кому интересно, в файле engine/classes/plugins.class.php Перед строкой abstract class DLEPlugins { Вставить: @unlink(ENGINE_DIR . '/cache/system/plugins.php');
  4. Когда много категорий становится довольно неудобно добавлять подкатегории. В частности каждый раз приходится искать нужную категорию в списке. Данный хак добавляет кнопку, при клике на которую сразу становится отмеченной выбранная категория. Установщик плагина для 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
  5. При создании категории или подкатегории не учитывается параметр 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
  6. Когда категорий не много или занимаешься созданием развернутой структуры категорий - при каждом обновлении страницы приходится повторно нажимать кнопку "Развернуть все". Данный хак запоминает состояние кнопки и при перезагрузке страницы нет необходимости повторно нажимать эту кнопку. Плагин для 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
  7. Данный хак будет полезен тем, кто часто добавляет новые подкатегории или просто вы ленивая жопа устали каждый раз перебирать файлы шаблона в поисках всех 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
  8. Есть предложения по управлению плагинами. 1. При внесении изменений в php файл в кеше файла в шапке записывать какой именно плагин внес изменения. <?php // Название плагина // И еще название другого плагина /* ===================================================== DataLife Engine - by SoftNews Media Group 2. Добавить в админку поиск по файлу. Чтобы можно было вбить локальный адрес файла и получить сравнительную информацию как на гитхабе. Слева оригинал, справа - модифицированная копия с подсветкой изменений. Или хотя бы просто показать список плагинов которые вносят изменения в этот файл. 3. В имени кеша файла перед хешем прописывать имя файла, к примеру engine.php_226ba0642590b9136386fb777e0a09ec.php 4. Добавить кнопку для пересохранения всех плагинов. Сейчас для этого нужно открыть плагин и просто нажать сохранить, но как-то это не продуктивно. 5. Добавить возможность текстового экспорта/импорта плагина без фактического использования xml файлов.
  9. engine/ajax/editnews.php $('.wysiwygeditor').froalaEditor({
  10. Заменять больший кусок кода... } else { $file_link = $config['http_home_url'] . "engine/skins/images/all_file.png"; $data_url = "#"; $file_play = ""; }; if( $this->area == "xfieldsfile" ) {
  11. Админка, добавление новостей на сайте и комментарии: <?xml version="1.0" encoding="utf-8"?> <dleplugin> <name>Froala p tag</name> <description>Перенос строки тегом p вместо br</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/editor/shortnews.php"> <operation action="after"> <searchcode><![CDATA[$('.wysiwygeditor').froalaEditor({]]></searchcode> <replacecode><![CDATA[enter: $.FroalaEditor.ENTER_P,]]></replacecode> </operation> </file> <file name="engine/editor/shortsite.php"> <operation action="after"> <searchcode><![CDATA[$('.wysiwygeditor').froalaEditor({]]></searchcode> <replacecode><![CDATA[enter: $.FroalaEditor.ENTER_P,]]></replacecode> </operation> </file> <file name="engine/editor/comments.php"> <operation action="after"> <searchcode><![CDATA[$('#comments').froalaEditor({]]></searchcode> <replacecode><![CDATA[enter: $.FroalaEditor.ENTER_P,]]></replacecode> </operation> </file> </dleplugin> Не забываем обновлять страницу Ctrl->F5
  12. Выскажу свою скромную точку зрения по поводу маркета в том виде как его сейчас обсуждают. Нет и однозначно нет. Анализировать код и гарантировать его качество/безопасность/надежность? Я вообще даже не представляю, кто на это пойдет. Тем более если учитывать, что очень часто модули кодируют (я в том числе), причем некоторые вообще глобально все файлы закрывают. В моём представлении - достаточно просто чего-то вроде доски объявлений. К примеру тот же Avito. Чтобы был хоть какой-никакой, но централизованный каталог модулей к DLE. Как бесплатных, так и платных. Можно сделать ограничение, к примеру на одну платную публикацию - одна бесплатная. Или сделать ограничение по рейтингу, хочешь в платный раздел - набери 10, 20, 50 лайков за бесплатные модули. Еще как вариант - добавить официальную группу разработчиков проверенных репутацией и временем.
  13. Да я ж не спорю, я к тому, что стоит этот момент как-то задокументировать. Мол так и так, при использовании на главной custom вместо content - нужно скрывать тег {content} в not-aviable=main
  14. Я так не делаю. Нужно было проверить другую вещь и я столкнулся с такой ситуацией. Я лишь сообщил, что при обычном использовании стандартных функций движка выдает не корректный итоговый результат. Параметр этот - http://prntscr.com/jfa92t Что делать с этой информацией - решать вам. Так и есть. В настройках выбрана опция отображения custom на главной. При этом содержимое переменной $tpl->result['content'] пусто и соответственно навигации в нем нет.
  15. Очень радует п.3. Однако есть некоторые сомнения по способам его использования. Ну и предложения само собой. К примеру по инструкции нужно вставить код в functions.php после строки: else $config['allow_cache'] = false; Но таки строки в файле 2, а вставлять нужно после второй. Можно конечно заменять бОльший участок кода: } else $custom_limit = $config['news_number']; if( preg_match( "#cache=['\"](.+?)['\"]#i", $param_str, $match ) ) { if( $match[1] == "yes" ) $config['allow_cache'] = 1; else $config['allow_cache'] = false; Но вот допустим в 13.1 добавится еще код, который будет как раз между этими блоками. И все, инструкцию опять переписывать и адаптировать/совмещать под 2 версии dle. Это частный случай, подобных мест может быть очень много. Следующая возможная проблема - несовместимость 2х модулей в следствии внесенных изменений. К примеру else $config['allow_cache'] = false; На: else { $config['allow_cache'] = false; include "file.php"; } Ну, в принципе по большому счету это не такая уж большая проблема, легко решаема в частном порядке в рамках техподдержки. Но мне кажется будет уже значительно сложнее отслеживать изменения от других файлов и проводить отладку. По поводу предложения. Добавить автозагрузчик классов с поддержкой namespace`ов, чтобы можно было изначально в init.php подключить свои классы модуля. Или же аналогичным образом добавить точки автоподключения файлов модулей в init.php и engine.php. Чтобы можно было автоматически подгружать свои файлы с функциями/классами/загрузчиками и чтобы можно было легко делать вывод контента модулем не подключая его внутри switch ($do) В общем идя интересная и уже хочется пощупать в живую