Три новых фичи в админке (Обновлено)
Во-первых, хочу сообщить, что aceAdminPanel переходит в статус release candidate. Это значит, что новые фичи в текущую версию добавляться не будут. Еще несколько дней тестов и багфиксов, и финальный релиз пойдет в каталог.
Я знаю, что есть пара фич, которые были в прошлой версии, но не перешли пока в эту. Они будут реализованы в следующей версии.
А сейчас хочу написать про три новые маленькие, но, на мой взгляд, полезные функции, которые добавлены в админку некоторое время назад, но я про них пока не говорил.
Если вас, как меня, периодически достает, что временные файлы движка раскиданы по разным папкам, то теперь вы можете их собрать все в одной папке. Для этого в корневой папке движка нужно создать папку _tmp, задать ей соответствующие права (чтоб движок мог там создавать папки и файлы), а в конфиге админки задать параметр:
И в этой папке будут автоматически созданы подпапки:
log — для логов,
sys — для системного кеша и временного размещения загружаемых файлов,
smarty (с подпапками compiled и cache) – для размещения скомпилированных шаблонов и кеша Smarty.
И все! Теперь, если вам вдруг приспичит очищать кеш руками, вы можете просто взять и удалить все подпапки из папки _tmp.
ВАЖНО! В целях безопасности в папке _tmpобязательно нужно создать файл .htaccess с таким вот содержимым:
Или скопируйте этот файл из вашей нынешней папки log или tmp.
Еще больше, чем разбросанные по разным папкам временные файлы, меня достают конфиг-файлы плагинов, которые разбросаны по еще большему числу папок. Но ведь есть общесистемная папка config, и я решил ее использовать для хранения кастомных конфиг-файлов всех плагинов.
Чтобы воспользоваться этой фичей, нужно в папке config создать подпапку plugins, в которой можно хранить файлы с настройками плагинов. Делать это можно аж тремя способами:
1) Вы можете настройки всех своих плагинов держать в одном файле /config/plugins/config.php:
2) Можно создать для каждого плагина отдельный файл и сложить их аккуратно в папке /config/plugins/ вот так:
/config/plugins/config.myplugin.php — это для плагина myplugin
/config/plugins/config.otherplugin.php — это для плагина otherplugin
3) Наконец, можно разложить конфиг-файлы плагинов по своим папкам:
/config/plugins/myplugin/config.php — это для плагина myplugin
/config/plugins/otherplugin/config.php — это для плагина otherplugin
И надо понимать, что нет необходимости переносить в эти файлы абсолютно все настройки, обычные конфиг-файлы плагинов с параметрами по умолчанию на своих местах остаются, а сюда вы заносите только те параметры, которые надо переопределить.
Проверка кастомных конфиг-файлов плагинов делается именно в таком порядке — сначала грузится (если есть) общий файл, потом отдельные конфиг-файлы плагинов, потом — конфиги из подпапок.
И чтоб все это заработало, нужно сделать малую малость — в конфиг-файле админки задать:
Все! Теперь вы получаете гораздо большую гибкость и при обновлении плагинов (можно целиком переписывать папки с плагинами), и при работе с проектом на разных компьютерах (просто на каждом компьютере настройте свои кастомные файлы), и легко переносить проект с локального компьютера на удаленный и т.д.
Добавил поддержку нескольких опций для Smarty, которые могут быть полезны как разработчикам, так и просто тем, у кого есть проекты на LS.
В конфиге админки можно задать следующие параметры:
А теперь анонс: в следующем топике я расскажу о реально крутой фиче, которую я реализовал — это возможность добавлять Smarty-код практически в любое место любого шаблона на этапе его компиляции!
Я знаю, что есть пара фич, которые были в прошлой версии, но не перешли пока в эту. Они будут реализованы в следующей версии.
А сейчас хочу написать про три новые маленькие, но, на мой взгляд, полезные функции, которые добавлены в админку некоторое время назад, но я про них пока не говорил.
Все-все временные файлы в одной папке
Если вас, как меня, периодически достает, что временные файлы движка раскиданы по разным папкам, то теперь вы можете их собрать все в одной папке. Для этого в корневой папке движка нужно создать папку _tmp, задать ей соответствующие права (чтоб движок мог там создавать папки и файлы), а в конфиге админки задать параметр:
config['tmp']['path']['use'] = false;
И в этой папке будут автоматически созданы подпапки:
log — для логов,
sys — для системного кеша и временного размещения загружаемых файлов,
smarty (с подпапками compiled и cache) – для размещения скомпилированных шаблонов и кеша Smarty.
И все! Теперь, если вам вдруг приспичит очищать кеш руками, вы можете просто взять и удалить все подпапки из папки _tmp.
ВАЖНО! В целях безопасности в папке _tmpобязательно нужно создать файл .htaccess с таким вот содержимым:
Order Deny,Allow
Deny from all
Или скопируйте этот файл из вашей нынешней папки log или tmp.
Собираем кофиг-файлы плагинов в кучку
Еще больше, чем разбросанные по разным папкам временные файлы, меня достают конфиг-файлы плагинов, которые разбросаны по еще большему числу папок. Но ведь есть общесистемная папка config, и я решил ее использовать для хранения кастомных конфиг-файлов всех плагинов.
Чтобы воспользоваться этой фичей, нужно в папке config создать подпапку plugins, в которой можно хранить файлы с настройками плагинов. Делать это можно аж тремя способами:
1) Вы можете настройки всех своих плагинов держать в одном файле /config/plugins/config.php:
$config['plugin']['myplugin'] = array(
// тут параметры для плагина myplugin
);
$config['plugin']['otherplugin'] = array(
// тут параметры для плагина otherplugin
);
2) Можно создать для каждого плагина отдельный файл и сложить их аккуратно в папке /config/plugins/ вот так:
/config/plugins/config.myplugin.php — это для плагина myplugin
/config/plugins/config.otherplugin.php — это для плагина otherplugin
3) Наконец, можно разложить конфиг-файлы плагинов по своим папкам:
/config/plugins/myplugin/config.php — это для плагина myplugin
/config/plugins/otherplugin/config.php — это для плагина otherplugin
И надо понимать, что нет необходимости переносить в эти файлы абсолютно все настройки, обычные конфиг-файлы плагинов с параметрами по умолчанию на своих местах остаются, а сюда вы заносите только те параметры, которые надо переопределить.
Проверка кастомных конфиг-файлов плагинов делается именно в таком порядке — сначала грузится (если есть) общий файл, потом отдельные конфиг-файлы плагинов, потом — конфиги из подпапок.
И чтоб все это заработало, нужно сделать малую малость — в конфиг-файле админки задать:
$config['custom_config']['enable'] = true;
Все! Теперь вы получаете гораздо большую гибкость и при обновлении плагинов (можно целиком переписывать папки с плагинами), и при работе с проектом на разных компьютерах (просто на каждом компьютере настройте свои кастомные файлы), и легко переносить проект с локального компьютера на удаленный и т.д.
Дополнительные опции для Smarty
Добавил поддержку нескольких опций для Smarty, которые могут быть полезны как разработчикам, так и просто тем, у кого есть проекты на LS.
В конфиге админки можно задать следующие параметры:
$config['smarty']['options']['compile_check'] = true; // включать ли проверку компиляции шаблонов
Если тут поставить значение false, то Smarty будет компилировать шаблон, только если его еще нет, если есть — использует его без лишних проверок. Рекомендуется использовать на рабочем сервере, если вы не производите на нем никаких изменений — это уменьшает время отдачи страницы$config['smarty']['options']['force_compile'] = false; // принудительная компиляция шаблонов
Полезная опция, когда идет активная разработка и работа над шаблонами. Заставляет Smarty принудительно компилировать все шаблоны. При необходимости можно указать, при обработке каких УРЛов нужно/не нужно перекомпилировать шаблоны. Примеры:$config['smarty']['options']['force_compile'] = array(
'on' => array('topic/*'), // принудительно компилировать все шаблоны только для экшена topic
);
$config['smarty']['options']['force_compile'] = array(
'on' => array('*'), // компилировать для всех URL
'off' => array('topic/edit/*'), // кроме начинающегося с 'topic/edit'
);
$config['smarty']['options']['caching'] = false; // включать ли кеширование
Включает кеширование Smarty. После обработки шаблона страницы и формирования HTML-кода Smarty его кеширует на заданное время (см. ниже). Любые изменения (новые топики, комменты и т.д.) пользователи сайта будут видеть с задержкой, но для высоконагруженных проектов это может дать прирост производительности.$config['smarty']['options']['cache_lifetime'] = 60; // время жизни кеша (в сек)
Используется совместно с предыдущей опциейА теперь анонс: в следующем топике я расскажу о реально крутой фиче, которую я реализовал — это возможность добавлять Smarty-код практически в любое место любого шаблона на этапе его компиляции!
21 комментарий
Хоть и не пользую админку, но ваш вклад в развитие LS трудно переоценить.
По-возможности, расскажите, как можно управлять опциями Smarty из плагинов. Возможно, многим начинающим разработчикам это будет полезно узнать.
На самом деле это не так уж и сложно, если понимать, что такое Smarty и «с чем его едят». Вот тут есть документация: www.smarty.net/docs/en/
Дело за малым — получить доступ непосредственно к объекту Smarty. А это делается просто — вызовом метода GetSmartyObject() модуля Viewer. А получив объект, можно уже вертеть им, как угодно. Например, так:
Т.е. в будущем подразумевает, но не в текущей версии
1) Включить/выключить возможность переголосования за пост/комментарий/блог/пользователя и т.д.
2) Возможность правки формулы начисления рейтинга, к примеру чтобы можно было изменить на целые числа
ради таких фишек готов даже пожертвовать некую денежку =)
По сабжу — это полезно для адаптации плагина под конкретный скин. Напр., совместно вот с этим: livestreet.ru/blog/13060.html
Fatal error: Uncaught exception 'Exception' with message 'Undefined method module: IsBannedByLogin' in /home/r/romanofg/mirpetel.ru/public_html/engine/classes/Engine.class.php:597 Stack trace: #0 /home/r/romanofg/mirpetel.ru/public_html/engine/classes/Engine.class.php(524): Engine->GetModule('IsBannedByLogin') #1 /home/r/romanofg/mirpetel.ru/public_html/engine/classes/Entity.class.php(173): Engine->_CallModule('IsBannedByLogin', Array) #2 /home/r/romanofg/mirpetel.ru/public_html/plugins/aceadminpanel/classes/hooks/HookAdmin.class.php(174): Entity->__call('IsBannedByLogin', Array) #3 /home/r/romanofg/mirpetel.ru/public_html/plugins/aceadminpanel/classes/hooks/HookAdmin.class.php(174): PluginSitemap_ModuleUser_EntityUser->IsBannedByLogin() #4 [internal function]: PluginAceadminpanel_HookAdmin->InitAction(Array) #5 /home/r/romanofg/mirpetel.ru/public_html/engine/modules/hook/Hook.class.php(292): call_user_func_array(Array, Array) #6 /home/r/romanofg/mirpetel.ru/public_html/engine/modules/hook/Hook.class.php(246): ModuleHook- in /home/r/romanofg/mirpetel.ru/public_html/engine/classes/Engine.class.php on line 597
И как бы ничего не правил, плагинов новых не добавлял. Сайту хана походу, как все воскресить?
не работает action html в супер хуках.
в /aceadminpanel/lib/DomFrag.class.php 408 строка, метод __call вызывается для несуществующих методов, и сам вызывает методы из массивов $aGroupMethods и $aSingleMethods.
в массиве $aSingleMethods есть элемент 'html', но в текущем классе и есть метод html!
поэтому для html корректно не срабатывает метод __call.
вобщем в 485 строке я закомментил public function html и у меня все заработало.
может костыльное решение, и я что-то этим сломал, но я уже не в состоянии искать дальше, сори :)