Написание кода блока.
В наборе портальной системы есть много блоков выполняющих различные задачи. Но часто возникает ситуация что мы не находим блок с нужным нам механизмом работы. В данной статье я расскажу как можно создать блок с собственным кодом на вашем сайте. В качестве примера возьмем блок с несложным и совершенно бесполезным алгоритмом работы. Блок будет выводить текущий день недели. Если у вас еще нет домена вам принадлежащего то можно зарегистрировать настроив свой собственный домен на сервер с портальной системой или выбрать свободный домен из уже настроенных третьего уровня http://что-то.mpak.su. Если имя свободно вы попадете в форму регистрации домена. Обязательно укажите в форме регистрации свои контактные данные. Их будем в дальнейшем использовать для получения доступа к файловой системе хоста. После регистрации заходим в форму которая предоставляет доступ к файловой системе. Указав имя хостк доступ к которому хотим получить и контактные данные указанные при регистрации получаем на почту параметры доступа по фтп протоколу к файловой системе. Итак у вас фтп доступ к серверу. Заходим в папку и создаем каталог /include/blocks/ В этой директории система хранит блоки не связанные с модулями. Каждый раз при работе система проверяет наличие файлов в директории вашего хоста. Если в директории система найдет новый блок то он станет доступен для использования в списке типов блокоу. Если будет найден блок с имя файла которого совпадает с существующим - при вызове код существующего будет заменен на код блока размещенного в директории вашего хоста. Для упрощения процесса разработки в системе уже есть блок "Пустышка". Копируем его содержимое в файл с новым именем. Имя нового файла может быть произвольным. Назовем новый блок week.php. У нас должен получиться файл с такаим содержимым.
<? die; # Нуль
if ((int)$arg['confnum']){
# Востановление параметров модуля
// if (count($res = mpql(mpqw("SELECT param FROM {$GLOBALS['conf']['db']['prefix']}blocks WHERE id = {$arg['confnum']}")))) $param = unserialize($res[0]['param']);
# Сохранение параметров модуля
// if (count($param)) mpqw("UPDATE {$GLOBALS['conf']['db']['prefix']}blocks SET param = '".serialize($param)."' WHERE id = {$arg['confnum']}");
return;
}
echo "Блок пустышка";
?>
В блоке уже созданны несколько строк предназначенных для востановления и сохранения параметров блока через меню настроек админстраницы. В качестве примера установлена одна строка вывода строки "Блок пустышка". Основное что мы должны сделать для создания нового это изменить его название которое будет отображаться в админменю. Название это записано в первой строке кода блока после символа #. Назовем его ДеньНедели. Часть кода связанную с изменением настроек уберем так как в нашем блоке не предполагается изменять настройки через админменю. Нам остается заменить строку вывода на свою. Две строки необходимые для отображения дня недели.
В первом задаются названия дней недели. Во втором отображается текущий элемент. В итоге получаем такое содержимое.
<? die; # ДеньНедели
$w = array( '1'=>'Понедельник','Вторник','Среда','Четверг','Пятница','Суббота','Воскресенье');
echo $w[date('w')];
?>
Вот в общем то и все блок готов. Остается его установить на страницу.
<? die; # Нуль
if ((int)$arg['confnum']){
# Востановление параметров модуля
// if (count($res = mpql(mpqw("SELECT param FROM {$GLOBALS['conf']['db']['prefix']}blocks WHERE id = {$arg['confnum']}")))) $param = unserialize($res[0]['param']);
# Сохранение параметров модуля
// if (count($param)) mpqw("UPDATE {$GLOBALS['conf']['db']['prefix']}blocks SET param = '".serialize($param)."' WHERE id = {$arg['confnum']}");
return;
}
echo "Блок пустышка";
?>
В блоке уже созданны несколько строк предназначенных для востановления и сохранения параметров блока через меню настроек админстраницы. В качестве примера установлена одна строка вывода строки "Блок пустышка". Основное что мы должны сделать для создания нового это изменить его название которое будет отображаться в админменю. Название это записано в первой строке кода блока после символа #. Назовем его ДеньНедели. Часть кода связанную с изменением настроек уберем так как в нашем блоке не предполагается изменять настройки через админменю. Нам остается заменить строку вывода на свою. Две строки необходимые для отображения дня недели.
В первом задаются названия дней недели. Во втором отображается текущий элемент. В итоге получаем такое содержимое.
<? die; # ДеньНедели
$w = array( '1'=>'Понедельник','Вторник','Среда','Четверг','Пятница','Суббота','Воскресенье');
echo $w[date('w')];
?>
Вот в общем то и все блок готов. Остается его установить на страницу.