Система управления сайтом Handy.CMS 3.1. build 2006
Список изменений в билде
1. Изменение в системе распределения прав доступа
В функцию расширения распределения прав доступа (right_access_manager)
PHP код:
setObjectRights($id, $rights, $table, $object_key_field=false, $child_key_field=false, $child_table=false, $parent_key_field=false, $parent_table=false, $child_parent_key=false, $recursive=false)
добавлена переменная $recursive, если она установлена в true, права для объектов в рамках одной таблицы БД будут применены рекурсивно.
Пример:
Есть модуль каталог, неограниченным уровнем вложенности категорий, необходимо от корневой категории применить права ко всем вложенным.
В БД таблица catalogue_cats содержит поля:
- cat_id - ID категории
- cat_parent_id - ID родительской категории
Применяем права:
PHP код:
$this->right_access_manager->setObjectRights($cat_id, $_POST['handy_object'], 'catalogue_cats', 'cat_id', 'cat_id', 'catalogue_cats', $parent_key_field, $parent_table, 'cat_parent_id', true);
2. Обновлена библиотека утилит.
В библиотеку утилит (lib.utils) добавлена функция для провеки типа файла:
PHP код:
checkFileType($ext, $type=false, $other=false)
, где
- $ext - проверяемое расширение;
- $type - тип, к которому должен относиться файл, по-умолчанию image
- $other - массив с пользовательскими расширениями.
В настоящий момент доступно 2 типа:
- image (jpg, jpeg, gif, png, bmp)
- user (пользовательский тип, при его установке, параметр $other должен содержать массив с разрешенными типами файлов).
Пример использования:
PHP код:
private $utils;
// ...
$this->utils = handyCore::loadExtension('lib.utils');
// Файл - изображение?
if($this->utils->checkFileType('jpg', "image")) {
// Действия при прохождении проверки
}
// Пользовательский тип
$array = array('doc', 'xls', 'txt');
if($this->utils->checkFileType('txt', $array)) {
// Действия при прохождении проверки
}
3. Обновление обертки для шаблонизатора smarty
Теперь в шаблонах smarty можно использовать встроенную переменную {$handy_hash}, хранящую уникальное значение.
Это полезно для предотвращения кеширования броузером обновляемых изображений.
Пример использования:
Код HTML:
<img src="some_image.jpg?{$handy_hash}" />
4. Автоматическая генерация META поля title
Если для страницы, не заданы meta-тег title, то он будет автоматически заполнен:
- page_title - заголовок страницы
- menu_title - название пункта в меню, если page_title также пустой
Таким образом это поможет сэкономить время, а также исключить дублирование meta-тега title на страницах, что бывает достаточно критично при продвижении сайта.
5. Добавлен модуль "Индексатор сайта"
Модуль позволяет индексировать сайт, задавая в настройках различные параметры. Возможно также указать:
- Индексировать или нет директории, запрещенные в robots.txt
- Указать неиндексируемые части шаблона
Код HTML:
<!--handy_spider_noindex-->Код, который не нужно индексировать<!--/handy_spider_noindex-->
- Переиндексировать проиндексированные страницы сайта или только индексировать новые
- Устанавливать вес для различных элементов страницы, в которых встречаются индексируемые слова.
6. Добавление и удаление настроек модуля
Добавлены функции:
1) удаление настройки
PHP код:
remExtSettings($name, $ext=false)
2) добавление настройки
PHP код:
addExtSettings($name, $title, $value, $dim, $position=0, $ext=false)
, где
- $name - значение поля setting_name таблицы extensions_settings БД;
- $title - значение поля setting_title таблицы extensions_settings БД;
- $value - значение поля setting_value таблицы extensions_settings БД;
- $dim - значение поля setting_dim таблицыextensions_settings БД;
- $position - значение поля setting_position таблицы extensions_settings БД;
- $ext - системное имя модуля, вызвавшего метод (если не указано, текущий модуль).
7. Автоматизированный вывод и сохранение настроек модуля
Добавлена функция
PHP код:
showExtSettings($ext=false, $settings_not_alone=false)
, которая выводит все настройки модуля. Функция также отвечает за сохранение настроек.
Пример использования:
PHP код:
public function onExecute($param_str){
if($param_str['page']=="spider_settings") {
return $this->extmanager->showExtSettings();
}
}
Результат выполнения:
8. Обновлена функция getExtSettings()
Теперь функция getExtSettings([$full=false, $ext=false]) может отдавать настройки в двух форматах:
- При запуске по-умолчанию: массив, где ключ - наименование свойства, а значение - значение свойства;
- При указании переменной $full в true: массив с полным списком свойств для каждой наствойки.
- $ext - системное имя модуля, чьи свойства мы хотим
Пример #1:
PHP код:
// Находимся в модуле photogallery
$settings = $this->getExtSettings();
в $settings:
Код HTML:
Array (
[param_1] => 0
[param_2] => 1
) Пример #2:
PHP код:
// Находимся в модуле photogallery
$settings = $this->getExtSettings(true);
в $settings:
Код HTML:
[0] => Array (
[extension_settings_id] => 193
[extension_sysname] => photogallery
[setting_name] => param_1
[setting_title] => Описание параметра
[setting_value] => 0
[setting_dim] =>
[setting_position] => 0
)
[1] => Array (
[extension_settings_id] => 194
[extension_sysname] => photogallery
[setting_name] => param_2
[setting_title] => Описание параметра
[setting_value] => 0
[setting_dim] =>
[setting_position] => 0
)
9. Генерация Sitemap
Теперь при индексации сайта будет автоматически генерироваться sitemap.xml, а в robots.txt заноситься данные о расположении sitemap.
10. Обновлен модуль "Группы новостей"
На странице редактирования новости откорректирована возможность загрузки изображения из вложенной папки.
11. Обновление ядра Handy
Внутреннее обновление ядра Handy.CMS. Изменен принцип наименования класса для административного интерфейса, теперь все административные классы именуются по следующему правилу:
$class_name_admin, где $class_name - имя класса
Внимание! Все старые дополнительные модули не совместимы с текущим билдом. Для работы модулей следует сначала обновить билд до 2006, а затем обновить модули.
12. Добавлен метод setLink()
Добавлен метод setLink($node_id[, $view=false, $object_id=false]), где
- $node_id - ID страницы, к которой прикрепляется объект
- $view - название прикрепляемого вида модуля (по-умолчанию не задан)
- $object_id - ID прикрепляемого объекта (по-умолчанию не задан).
Метод создан для более удобного проставления ссылок на объекты модуля.
Метод используется при прикреплении блока модуля к странице (метод onLink()), для того, чтобы в дальнейшем можно было получить ссылку на страницу, куда прикреплен данный вид модуля.
Пример: при прикреплении архива новостей, нам в последствии может потребоваться информация о ссылке (URL) на страницу, где он находится, например, для формирования ссылки на архив, с последних новостей. Для этого, при прикреплении архива к странице, мы в методе onLink() вызываем метод setLink().
PHP код:
// Вызывается при прицеплении модуля к странице
public function onLink($node_id, &$install_data) {
if(@$install_data['params']['view'] == 'producers_list')
$this->setLink($node_id, $install_data['params']['view']);
}
13. Добавлены функции для работы с сессиями
Добавлены ф-ции:
- setSession ($param, $value [, $ext = false]) - установка значения параметра;
- getSession ($param [, $ext = false]) - получение значения параметра;
- unsetSession ($param [, $ext = false]) - удаление параметра из сессии.
где:
- $param - системное название параметра на английском языке;
- $value - значение параметра;
- $ext - модуль, которую принадлежит параметр (по-умолчанию, тот, что вызывает ф-цию).
Пример:
PHP код:
// Устанавливаем нужное значение
$this->setSession('some_var', 25);
//..
// Если значение есть
if($this->getSession('some_var')!=NULL) {
//..
}
// Удаляем переменную
$this->unsetSession('some_var');
Переменные хранятся в специальном системном массиве сессии, для удобства вызова и отсутствия случайного затирания похожих названий.
14. Добавлена функция для получения имени класса, кто вызвал модуль
wasCalledFrom() возвращает системное имя класса, который вызвал модуль.
Пример:
PHP код:
if($this->wasCalledFrom()!="newsgroups") {
//...
}
15. Изменение в библиотеке utils
Изменена функция textToTranslite($text, $delimiter="-"), где
- $text - исходный текст, который нужно перевести в транслит;
- $delimiter - разделитель, на который заменяются пробелы в тексте (по-умолчанию дефис).
Результирующий текст получаем в нижнем регистре.
Статус: выпущен.
Пользователи Handy.CMS 3.1 build 2005 могут обновиться до текущего билда через автоматическую систему обновлений.