Разработан модуль по заказу Открытого института для поздравления обучающихся и сотрудников. Модуль написан на языке программирования php по стандартам joomla и опубликован на главной странице сайта визитки
Файловая структура
mod_peoples_birthday
— директория модуля на сервере.- tmpl
default.php
— шаблон модуля, который принимает данные, собранныеmod_peoples_birthday.php
и генерирует HTML, который будет отображаться на странице.
helper.php
— файл содержит вспомогательный класс, используемый для того, чтобы сделать фактическую работу в получении информации, которая будет отображаться в модуле.mod_peoples_birthday.php
— основной файл входа для модуля, который выполняет необходимые процедуры инициализации, вызова вспомогательных средств для сбора данных и содержит шаблон для отображения вывода модуля.mod_peoples_birthday.xml
— файл содержит информацию о модуле и определяет файлы, которые должны быть установлены установщиком Joomla! Так же данный файл задает параметры конфигурации модуля.
- tmpl
Исходный код
tmpl/default.php
PHP
<?php
// No direct access
defined( '_JEXEC' ) or die;
$option = [];
$option['driver'] = 'mysql';
$option['host'] = '';
$option['user'] = '';
$option['password'] = '';
$option['database'] = '';
$option['prefix'] = '';
$db = & JDatabase::getInstance( $option );
$users = $db->getQuery(true);
// $db -> setQuery("SELECT user_id, surname, name, patronymic FROM users WHERE DAY(date_of_birth) = ". date("d") ." AND MONTH(date_of_birth) = ". date("m") ." AND user_id > 100");
$db -> setQuery("SELECT
applications.user_id,
users.surname,
users.name,
users.patronymic
FROM applications
LEFT OUTER JOIN users
ON applications.user_id = users.user_id
WHERE applications.status = 1
AND users.user_id > 100
AND DAY(users.date_of_birth) = ". date("d") ."
AND MONTH(users.date_of_birth) = ". date("m") ."
GROUP BY applications.user_id");
// $db -> setQuery("SELECT user_id, surname, name, patronymic FROM users WHERE date_of_birth >= '1986-02-08' AND date_of_birth <= '1986-02-08' AND user_id >= 100");
$users = $db->loadObjectList();
/*
print '<pre>';
print_r( $users );
print '</pre>';
*/
if( count( $users ) > 0 ) {
print '<div class="module-title bg-blef" style="margin-bottom: 5px;"><span>'. $module->title .'</span></div>';
print '<div class="module'. $moduleclass_sfx .'">';
print '<table class="table table-hover">';
print '<caption>Желаем Вам добра и удачи, благополучия в доме, мирного неба, достатка, а также профессионализма высшей пробы!</caption>';
print '<tbody>';
foreach( $users AS $user ) {
print '<tr>';
print '<td>'. $user->surname .' '. $user->name .' '. $user->patronymic .'</td>';
print '</tr>';
}
print '</tbody>';
print '</table>';
print '</div>';
}
helper.php
PHP
<?php
// No direct access
defined( '_JEXEC' ) or die;
/**
* Class Module Helper
* @author alvasdem
*/
class modPeoplesBirthdayHelper
{
/**
* getData method
* @param $params
* @return array
*/
static function getData( $params )
{
$db = JFactory::getDbo();
return array();
}
}
mod_peoples_birthday.php
PHP
<?php
// No direct access
defined( '_JEXEC' ) or die;
require_once( dirname( __FILE__ ) . '/helper.php' );
// $data = modPeoplesBirthdayHelper::getData( $params );
$moduleclass_sfx = htmlspecialchars( $params->get( 'moduleclass_sfx' ) );
require( JModuleHelper::getLayoutPath( 'mod_peoples_birthday', $params->get( 'layout', 'default' ) ) );
mod_peoples_birthday.xml
XML
<?xml version="1.0"?>
<extension type="module" version="1.0.0" method="upgrade" client="site">
<name>Именинники сегодня</name>
<author>alvasdem</author>
<authorEmail></authorEmail>
<authorUrl></authorUrl>
<copyright></copyright>
<license></license>
<version>1.0</version>
<description></description>
<files>
<filename module="mod_peoples_birthday">mod_peoples_birthday.php</filename>
<filename>index.html</filename>
<filename>helper.php</filename>
<folder>tmpl</folder>
</files>
<config>
<fields name="params">
<fieldset name="advanced">
<field name="layout" type="modulelayout" label="JFIELD_ALT_LAYOUT_LABEL"
description="JFIELD_ALT_MODULE_LAYOUT_DESC"/>
<field name="moduleclass_sfx" type="text" label="COM_MODULES_FIELD_MODULECLASS_SFX_LABEL"
description="COM_MODULES_FIELD_MODULECLASS_SFX_DESC"/>
<field name="cache" type="list" label="COM_MODULES_FIELD_CACHING_LABEL"
description="COM_MODULES_FIELD_CACHING_DESC" default="1">
<option value="0">COM_MODULES_FIELD_VALUE_NOCACHING</option>
<option value="1">JGLOBAL_USE_GLOBAL</option>
</field>
</fieldset>
</fields>
</config>
</extension>