WEB start

Компьютеры. Интернет. Профессиональное обучение. 055-966-10-17

hit 
counter

Наши преимущества

  • Наши программы обучения ориентированы на конкретного слушателя. Вы можете обучаться по одной из предложенных Вам программ, а можете самостоятельно составить, откорректировать, откорректировать свою персональную программу обучения. Преподаватель, консультант помогают Вам сориентироваться в материале курса при выборе программы обучения.
  • Обучение индивидуальное. Преподаватель проводит занятие только для Вас, ориентируясь на Ваши возможности, предыдущие знания и опыт, скорость восприятия нового материала.
  • Вы учитесь в удобное для Вас время, в удобной для Вас форме, может быть выбран гибкий график занятий, в соответствии с Вашими возможностями и пожеланиями.
  • Обучение проводится дистанционно. Вы можете обучаться, сидя за Вашим компьютером дома или на работе, не тратя время на поездки к месту обучения.


Регистрация на сайте

Joomla 3.x создание модулей

Как написать расширение типа "модуль" для Joomla 3.x

CMS Joomla! 3.x построена с использованием трех разных приложений:

installation (используется для установки Joomla)

administrator (используется для управления контентом)

public (используется для отображения содержимого).

Программа installation используется один раз. Программы administrator и public через концепцию компонентов с модулями. Каждый модуль имеет одну точку входа, расположенную в папке modules. Модули именуются как:

 mod_ИМЯ_МОДУЛЯ / ИМЯ_МОДУЛЯ.php

Разработку модуля можно разделить на несколько этапов:

  • создать файловую структуру модуля
  • внести в неё рабочие файлы<</li>
  • заархивировать в ZIP
  • установить в Joomla

Простой модуль

Далее - создаём простой модуль с именем webstart, который выводит на экран строку: "Ученье - свет!"

Файловая структура модуля

Первое, что нужно сделать - создать стандартную

Существует четыре основных файла, которые используются в стандартном шаблоне для разработки модуля:

  • mod_webstart.php - файл, который является основной точкой входа для модуля, он выполнит амнеобходимые процедуры инициализации, вызовет программу - helper для сбора любых необходимых данных и подключит шаблон, который будет отображать вывод модуля
  • mod_webstart.xml - файл, который содержит информацию о модуле, он определяет файлы, которые необходимо установить с помощью установщика Joomla, задает параметры конфигурации модуля
  • helper.php - файл, который содержит класс helper, который используется для фактической работы модуля,  для чтения информации из баз данных
  • tmpl / default.php - это шаблон модуля - файл который принимает данные, собранные mod_webstart.php, и генерирует HTML-код для вывода в окно браузера
  • index.html - из соображений безопасности во все папки стоит вставлять такой пустой файл-заглушку

Создаём файловую структуру

Создаём на диске папку webstart и в ней - необходимые файлы.


Joomla 3 modules


Вносим в них конфигурацию нашего модуля.

Файл mod_webstart.xml

<?xml version="1.0" encoding="utf-8"?> <extension type="module" version="3.1.0" client="site" method="upgrade"> <name>Web start module</name> <author>WebStart.top project</author> <version>1.0.0</version> <description>My first test module.</description> <files> <filename>mod_webstart.xml</filename> <filename module="mod_webstart">mod_webstart.php</filename> <filename>index.html</filename> <filename>helper.php</filename> <filename>tmpl/default.php</filename> <filename>tmpl/index.html</filename> </files> <config> </config> </extension>

Файл mod_webstart.php

Этот файл выполнит три задачи:

  1. включит файл helper.php, который содержит класс, который будет использоваться для сбора необходимых данных
  2. вызовет соответствующий метод класса для получения данных
  3. подключит шаблон для  вывода.

Класс - helper определяется в файле helper.php. Этот файл включен в инструкцию require_once:


<?php // Check Joomla framework defined('_JEXEC') or die; // Include helper require_once dirname(__FILE__) . '/helper.php'; $hello = modWebStartHelper::sayWodr($params); require JModuleHelper::getLayoutPath('mod_webstart');


В строке

$hello = modWebStartHelper::sayWodr($params);

modWebStartHelper - имя класса, которое задано в файле helper.php

modWebStartHelper::getHello($params) - вызов единственного метода (функции) этого класса - sayWodr()

Директива 

JModuleHelper::getLayoutPath('mod_webstart');

подключает шаблон.

Файл helper.php


<?php class modWebStartHelper { public static function sayWord($params) { return 'Ученье - свет!'; } }


Файл index.html

<!DOCTYPE html> <HTML> <HEAD></HEAD> <BODY> No access! </BODY> </HTML>


Сохраняем созданный шаблон в файле webstart.zip

Устанавливаем расширение в Joomla

Joomla 3 modules


Переходим в управление модулями

Joomla 3 modules

Публикуем его

Joomla 3 modules

Видим результат

Joomla 3 modules


Подключение к базе данных

Часто возникает необходимость при установке модуля создать и использовать свою базу данных.

Создадим новый модуль - mod_webstart_db

Для этого необходимо:

в xml - файле описания модуля (mod_webstart_db.xml) добавить теги, которые описывают SQL - запросы, которые будут выполняться при установке модуля (тег install), удалении модуля (тег uninstall), обновлении модуля (тег update). И таг <folder>sql</folder>

Файл mod_webstart_db.xml

<?xml version="1.0" encoding="utf-8"?> <extension type="module" version="3.1.0" client="site" method="upgrade"> <name>Web start team</name> <author>WebStart.top project</author> <authorEmail>Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.</authorEmail> <authorUrl>http://WebStart.top</authorUrl> <version>1.0.0</version> <description>Test module with database</description> <creationDate>January 2018</creationDate> <files> <filename>mod_webstart_db.xml</filename> <filename module="mod_webstart_db">mod_webstart_db.php</filename> <filename>index.html</filename> <filename>helper.php</filename> <filename>tmpl/default.php</filename> <filename>tmpl/index.html</filename> <folder>MySQL</folder> </files> <install> <sql> <file driver="mysql" charset="utf8">MySQL/install.mysql.1.0.0.utf8.sql</file> </sql> </install> <uninstall> <sql> <file driver="mysql" charset="utf8">MySQL/uninstall.mysql.utf8.sql</file> </sql> </uninstall> <update> <schemas> <schemapath type="mysql">MySQL/updates</schemapath> </schemas> </update> <config> </config> </extension>




Добавляем к проекту папку sql

В ней создаём файлы с именами

install.mysql.utf8.sql

uninstall.mysql.utf8.sql

и папку

updates


Joomla 3 modules


Файл install.mysql.utf8.sql (в папке MySQL)

CREATE TABLE IF NOT EXISTS #__web_st_db ( id int(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, myMsg text NOT NULL, lang varchar(5) NOT NULL ); INSERT INTO #__web_st_db (myMsg, lang) VALUES ('Be sure to visit the web-start.top website!', 'en-GB'); INSERT INTO #__web_st_db (myMsg, lang) VALUES ('הקפד לבקר באתר web-start.top!', 'he-IL'); INSERT INTO #__web_st_db (myMsg, lang) VALUES ('Обязательно посетите WEB-сайт web-start.top!', 'ru-RU');


Файл uninstall.mysql.utf8.sql (в папке MySQL)

DROP TABLE IF EXISTS #__web_st_db;


Файл  (в папке MySQL\updates)

# Placeholder file for database changes for version 1.0.0

Файл default.php

<?php defined('_JEXEC') or die; echo $hello;


Файл helper.php

<?php class modWebStartDbHelper { public static function sayWord($params) { // Obtain a database connection $db = JFactory::getDbo(); $lang = JFactory::getLanguage(); // Retrieve the message $query = $db->getQuery(true) -> select($db->quoteName('myMsg'))->from($db->quoteName('#__web_st_db'))->where('lang = ' . $db->Quote($lang->getTag())); // Prepare the query $db->setQuery($query); // Load the row. $result = $db->loadResult(); // Return the message return $result; } }


Файл mod_webstat_db.php

<?php // Check Joomla framework defined('_JEXEC') or die; // Include helper require_once dirname(__FILE__) . '/helper.php'; $hello = modWebStartDbHelper::sayWord($params); require JModuleHelper::getLayoutPath('mod_webstart_db');


Устанавливаем модуль в адинистративной панели Joomla, ставим его в позицию, например 7

Joomla 3 modules


Наш модуль использует свою таблицу в базе данных Joomla, называется она:  #__web_st_db ,  префикс #__  заменяется на префикс всех таблиц в БД Joomla.

Мы также используем информацию о текущем языке, выбранном на сайте. Её мы получаем из Joomla framework:

$lang = JFactory::getLanguage();

$lang->getTag()

Получив префикс языка, мы используем его при выборки нужного сообщения из нашей таблицы в базе данных.

$db->Quote($lang->getTag())

Поэтому при переходе сайта на другой язык наш модуль автоматически получает другое сообщение


Joomla 3 modules