- PVSM.RU - https://www.pvsm.ru -
Про систему Kasseler CMS [1] мало кто слышал, но все же она существует. Документации по системе очень мало, а в документации по плагинам рассмотрены самые простые примеры, которые не дают возможности пользователю увидеть всей силы так называемых хуков. В серии постов хочу продемонстрировать примеры написания плагинов для данной системы.
В системе реализовано три вида дополнений:
В данном разделе рассмотрим структуру плагина – хука.
Данный тип плагина размещается в корне каталога ./hooks/ без создания собственной директории и должен соответствовать следующим требованиям:
<?php
/**
* ----------------------------------------------------------------------
* @filetype hook
* @name Мой плагин
* @description Описание
* @copyright Habrahabr
* @author Habrahabr
* @email habrahabr@habrahabr.ru
* @link http://habrahabr.ru/
* @updateLink *
* @license BSD
* @version 1.0
* @create 23.05.2013
* @minVersion 1073
* @maxVersion *
* ----------------------------------------------------------------------
*/
if(!defined('FUNC_FILE')) die('Access is limited');
//Your code
?>
Где:
@filetype – тип плагина
@name – название плагина
@description – описание плагина
@copyright – копирайт
@author – автор или авторы через запятую
@email – контактные email
@link – страница дополнения
@updateLink – страница обновлений
@license – вид лицензии
@version – версия плагина
@create – дата создания
@minVersion – минимальная ревизия системы поддержки плагина
@maxVersion – максимальная ревизия системы поддержки плагина
Теперь напишем свой хук. Задача следующая: написать дополнение, которое отключает страницу проверки вводимой информации при регистрации пользователя.
В системе Kasseler CMS при регистрации пользователя, а точнее после ввода всей информации (логина, пароля, адреса электронной почты), пользователь переходит на страницу, где видит еще раз введенную информацию. Это иногда вводит в заблуждение пользователей и они прерывают регистрацию, думая что регистрация закончена.
Как мы видим задача очень проста, необходимо просто что-то отключить, поэтому нам не нужно создавать огромный плагин с конфигурацией и управлением, достаточно написать хук одной или нескольких функций.
Для того чтобы понять, что нам нужно изменить в работе системы, открываем файл профиля и находим функцию отвечающую за регистрацию (сохранение) пользователей. Это функция registration.
В этой функции имеется условие: if(isset($_SESSION['validate'])),
которое и определяет, нужно ли сохранить пользователя, или же предоставить ему страницу проверки введенных данных. В случае, если переменная будет установлена – страница проверки выводится не будет.
function registration_no_check(){
//устанавливаем необходимые переменные для обхода страницы подтверждения
$_SESSION['validate'] = true;
$_POST['create_user'] = true;
if(!isset($_POST['timezone'])) $_POST['timezone'] = '';
//повторный вызов оригинала для продолжения выполнения кода
registration();
}
//регистрируем хук
hook_register('registration', 'registration_no_check');
Здесь нужно понимать одно правило, что все хуки функций вызываются до оригинала, а сам оригинал может и не отработать, если в функции-хуке нет обратного вызова. А также необходимо учесть небольшой нюанс – если в функции-хуке нет обратного вызова оригинала, то даже при наличии других функций-хуков. которые зарегистрированных к этой функции, они не отработают, так как выполнение закончится на вашем дополнении.
Собственно ваше дополнение готово, для того чтобы добавить его через админпанель необходимо заархивировать в zip архив.
![Написание плагина для Kasseler CMS [часть 1] Написание плагина для Kasseler CMS [часть 1]](http://www.pvsm.ru/images/napisanie-plagina-dlya-Kasseler-CMS-chast-1-.png)
Надеюсь на то, что пост будет полезен, и я смогу описать оставшихся два вида дополнений.
Дальше интереснее…;)
Автор: bad_guy
Источник [2]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/web-razrabotka/35180
Ссылки в тексте:
[1] Kasseler CMS: http://www.kasseler-cms.net/
[2] Источник: http://habrahabr.ru/post/180885/
Нажмите здесь для печати.