J3.x

Difference between revisions of "Creating a simple module/Developing a Basic Module/ru"

From Joomla! Documentation

< J3.x:Creating a simple module
(Created page with "Файл <tt>helper.php</tt> содержит вспомогательный класс, который используется для извлечения данных, ко...")
(Updating to match new version of source page)
 
(28 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
<noinclude><languages /></noinclude>
 
<noinclude><languages /></noinclude>
 
{{J3.x:Creating_a_simple_module/ru}}
 
{{J3.x:Creating_a_simple_module/ru}}
 +
<div class="mw-translate-fuzzy">
 
Модули представляют собой легкие и гибкие расширения. Они используются для малых кусочков страницы, которые, как правило, менее сложные и могут быть замечены вокруг разных компонентов.
 
Модули представляют собой легкие и гибкие расширения. Они используются для малых кусочков страницы, которые, как правило, менее сложные и могут быть замечены вокруг разных компонентов.
 +
</div>
  
 
Вы можете увидеть много примеров модулей в стандартной установке Joomla!: - Меню - Последние Новости - Форма входа - и многое другое.
 
Вы можете увидеть много примеров модулей в стандартной установке Joomla!: - Меню - Последние Новости - Форма входа - и многое другое.
Line 14: Line 16:
 
* <code>mod_helloworld.xml</code> - этот файл содержит информацию о модуле. Он определяет файлы, которые должны быть установлены установщиком Joomla! и задает параметры конфигурации модуля.
 
* <code>mod_helloworld.xml</code> - этот файл содержит информацию о модуле. Он определяет файлы, которые должны быть установлены установщиком Joomla! и задает параметры конфигурации модуля.
  
* <code>helper.php</code> - этот файл содержит вспомогательный класс, который используется, чтобы сделать фактическую работу в получении информации, которая будет отображаться в модуле (как правило, из базы данных или другого источника).
+
* <code>helper.php</code> - этот файл содержит вспомогательный класс, используемый для того, чтобы сделать фактическую работу в получении информации, которая будет отображаться в модуле (как правило, из базы данных или другого источника).
  
 
* <code>tmpl/default.php</code> - это шаблон модуля. Этот файл будет принимать данные, собранные mod_helloworld.php и генерирует HTML, который будет отображаться на странице.
 
* <code>tmpl/default.php</code> - это шаблон модуля. Этот файл будет принимать данные, собранные mod_helloworld.php и генерирует HTML, который будет отображаться на странице.
Line 20: Line 22:
 
== Создание mod_helloworld.php ==
 
== Создание mod_helloworld.php ==
  
Файл <tt>mod_helloworld.php</tt> будет выполнить три задачи:
+
Файл <tt>mod_helloworld.php</tt> будет выполнять три задачи:
 
* включает файл helper.php который содержит класс, который должен быть использован для того чтобы собрать необходимые данные
 
* включает файл helper.php который содержит класс, который должен быть использован для того чтобы собрать необходимые данные
 
* вызывает соответствующий метод вспомогательного класса, чтобы получить данные
 
* вызывает соответствующий метод вспомогательного класса, чтобы получить данные
Line 31: Line 33:
 
<code>require_once</code> используется потому, что наши вспомогательные функции определяются внутри класса, а мы хотим чтобы класс объявлялся только один раз.
 
<code>require_once</code> используется потому, что наши вспомогательные функции определяются внутри класса, а мы хотим чтобы класс объявлялся только один раз.
  
Наш вспомогательный класс, пока еще не был определен, но, когда он появится, он будет содержать один метод: getHello(). Для нашего простого примера, это на самом деле не надо этого делать - сообщение “Привет, мир!” , которое этот метод возвращает может быть просто включен в шаблон. Здесь мы используем вспомогательный класс, чтобы продемонстрировать эту базовую технику.
+
Наш вспомогательный класс, пока еще не был определен, но, когда он появится, он будет содержать один метод: getHello(). Для нашего простого примера, на самом деле не надо этого делать - сообщение “Привет, мир!” , которое этот метод возвращает может быть просто включен в шаблон. Здесь мы используем вспомогательный класс, чтобы продемонстрировать эту базовую технику.
  
 
В настоящее время наш модуль не использует никаких параметров, но мы будем передавать их в любом случае во вспомогательный метод, так что они могут быть использованы позже, если мы решим расширить функционал нашего модуля.
 
В настоящее время наш модуль не использует никаких параметров, но мы будем передавать их в любом случае во вспомогательный метод, так что они могут быть использованы позже, если мы решим расширить функционал нашего модуля.
Line 64: Line 66:
 
$hello = modHelloWorldHelper::getHello($params);
 
$hello = modHelloWorldHelper::getHello($params);
 
require JModuleHelper::getLayoutPath('mod_helloworld');
 
require JModuleHelper::getLayoutPath('mod_helloworld');
 
 
</source>
 
</source>
  
 +
<div class="mw-translate-fuzzy">
 
Единственная строка, которую мы до сих пор не объяснили - это первая строка. Эта строка проверяет, чтобы этот файл включался через приложение Joomla!. Это необходимо, чтобы предотвратить инъекции переменных и другие потенциальные проблем безопасности.
 
Единственная строка, которую мы до сих пор не объяснили - это первая строка. Эта строка проверяет, чтобы этот файл включался через приложение Joomla!. Это необходимо, чтобы предотвратить инъекции переменных и другие потенциальные проблем безопасности.
 +
</div>
  
 
== Создание helper.php ==
 
== Создание helper.php ==
  
 +
<div class="mw-translate-fuzzy">
 
Файл <tt>helper.php</tt> содержит вспомогательный класс, который используется для извлечения данных, которые будут отображаться при выводе модуля. Как говорилось ранее, наш вспомогательный класс будет иметь один метод: getHello(). Этот метод будет возвращать сообщение ‘Привет, мир’.
 
Файл <tt>helper.php</tt> содержит вспомогательный класс, который используется для извлечения данных, которые будут отображаться при выводе модуля. Как говорилось ранее, наш вспомогательный класс будет иметь один метод: getHello(). Этот метод будет возвращать сообщение ‘Привет, мир’.
 +
</div>
  
Here is the code for the helper.php file:
+
Вот код файла helper.php :
 
   
 
   
 
<source lang="php"><?php
 
<source lang="php"><?php
Line 102: Line 107:
 
     }
 
     }
 
}
 
}
 
 
</source>
 
</source>
  
There is no rule stating that we must name our helper class as we have, but it is helpful to do this so that it is easily identifiable and locatable. Note that it is required to be in this format if you plan to use the com_ajax plugin.
+
<div class="mw-translate-fuzzy">
 +
Нет правила, гласящего, что мы должны назвать наш вспомогательный класс так, как он назван у нас, но делать так - это полезно, чтобы его можно было легко идентифицировать и обнаружить. Обратите внимание, что название должно быть в таком формате, если вы планируете использовать плагин com_ajax.
 +
</div>
  
More advanced modules might include database requests or other functionality in the helper class method.
+
Более сложные модули могут включать в себя запросы к базе данных или другие функции во вспомогательном методе класса.
  
== Creating tmpl/default.php ==
+
== Создание tmpl/default.php ==
  
The <tt>default.php</tt> file is the template which displays the module output.
+
Файл<tt>default.php</tt> это шаблон, который выводит модуль.
  
The code for the default.php file is as follows:
+
Код для файла default.php выглядит следующим образом:
 
   
 
   
 
<source lang="php">
 
<source lang="php">
Line 122: Line 128:
 
</source>
 
</source>
  
An important point to note is that the template file has the same scope as the mod_helloworld.php file. What this means is that the variable $hello can be defined in the mod_helloworld.php file and then used in the template file without any extra declarations or function calls.
+
Важный момент, который следует отметить, это то, что файл шаблона имеет ту же область видимости, что и файл mod_helloworld.php . Это означает, что переменная $hello может быть определена в файле mod_helloworld.php, а затем использоваться в файле шаблона, без каких-либо дополнительных объявлений или вызовов функций.
  
== Creating mod_helloworld.xml ==
+
== Создание mod_helloworld.xml ==
  
The <tt>mod_helloworld.xml</tt> is used to specify which files the installer needs to copy and is used by the Module Manager to determine which parameters are used to configure the module. Other information about the module is also specified in this file.
+
Файл <tt>mod_helloworld.xml</tt> используется, чтобы указать файлы, которые установщик должен скопировать и он используется Менеджером Модулей, чтобы определить, какие параметры используются для настройки модуля. Другая информация о модуле также указывается в этом файле.
  
The code for <tt>mod_helloworld.xml</tt> is as follows:
+
Код <tt>mod_helloworld.xml</tt> выглядит следующим образом:
 
   
 
   
 
<source lang="xml">
 
<source lang="xml">
Line 150: Line 156:
 
</source>
 
</source>
  
[[S:MyLanguage/Manifest files|Manifest files]] explains the technical details of the elements used in the XML file.
+
[[S:MyLanguage/Manifest files|файлы Манифеста]] объясняют технические детали элементов, используемых в XML-файле.
  
You will notice that there are two additional files that we have not yet mentioned: index.html and tmpl/index.html. These files are included so that these directories cannot be browsed. If a user attempts to point their browser to these folders, the index.html file will be displayed. These files can be left empty or can contain the simple line:
+
Вы заметите, что есть два дополнительных файла, которые мы еще не упоминали: index.html и tmpl/index.html. Эти файлы добавлены для того, чтобы содержимое папок, в которых они расположены не могло быть просмотрено. Если пользователь попытается открыть в своем браузере эти папки - будет отображаться файл index.html. Эти файлы могут быть пустыми или могут содержать простую строку:
 
   
 
   
 
<source lang="html4strict"><html><body bgcolor="#FFFFFF"></body></html></source>
 
<source lang="html4strict"><html><body bgcolor="#FFFFFF"></body></html></source>
  
which will display an empty page.
+
который будет отображать пустую страницу.
  
Since our module does not use any [[S:MyLanguage/Form_field|form fields]], the config section is empty.
+
Так как наш модуль не использует [[S:MyLanguage/Form_field|поля формы]] раздел config пуст.
  
== Conclusion ==
+
== Installing and Viewing the Module ==
 +
To install the module, zip up the parent directory of your source files, to create a file called <tt>mod_helloworld.zip</tt>. Note that it needs to be a .zip file because the server needs to be able to extract it using Apache's mod_zlib library.
 +
Go into Joomla admin, to the Extensions / Manage / Install form, click on the Update Package File tab, and upload your zip file. You should find that the module installs ok. If it doesn't, then compare carefully your code with the code above, and ensure your source code files are named correctly.
 +
To make the module visible on your site web pages go into the Extensions / Modules listing and click on the Hello World module to edit it.
 +
# set the Status to Published
 +
# select the Position where the module should appear (if you're unsure about which Position to set, then navigate to Extensions / Templates / Styles, check which template is assigned on your web pages, then follow [[S:MyLanguage/Finding module positions on any given page|this guide]] to finding the module positions).
 +
# on the Menu Assignment tab set the Module Assignment to "On all pages"
 +
Save and Close your edit form.
 +
Now if you navigate to your site you should see "Hello, World!" displayed in your chosen module position.
  
Module development for Joomla! is a fairly simple, straightforward process. Using the techniques described in this tutorial, an endless variety of modules can be developed with little hassle.
+
== Заключение ==
 +
Разработка модуля для Joomla! это довольно простой и понятный процесс. Используя методы, описанные в этом учебнике, бесконечное разнообразие модулей может быть разработано без особых хлопот.
  
 
<div class="row">  
 
<div class="row">  
<div class="large-6 columns">{{Basic button|S:MyLanguage/J3.x:Creating_a_simple_module/Introduction|Prev: Introduction|class=expand success}}</div>
+
<div class="large-6 columns">{{Basic button|S:MyLanguage/J3.x:Creating_a_simple_module/Introduction|Назад: Введение|class=expand success}}</div>
<div class="large-6 columns">{{Basic button|S:MyLanguage/J3.x:Creating_a_simple_module/Using_the_Database|Next: Using the Database|class=expand}}</div>
+
<div class="large-6 columns">{{Basic button|S:MyLanguage/J3.x:Creating_a_simple_module/Using_the_Database|Далее: Использование базы данных|class=expand}}</div>
 
</div>
 
</div>
 
__NOTOC__
 
__NOTOC__

Latest revision as of 18:52, 21 July 2020

Other languages:
Bahasa Indonesia • ‎Deutsch • ‎English • ‎Nederlands • ‎español • ‎français • ‎português do Brasil • ‎русский • ‎中文(台灣)‎
Joomla! 
3.x
Урок
Создание простого модуля

Данная серия материалов написана о том, как разработать какой-либо модуль для Joomla! в версии Joomla 3.x. Вы можете пройтись по материалам этой серии с помощью выпадающего навигационного меню.

Начните со вступления и пройдитесь по материалам этой серии с помощью либо расположенной внизу навигационной кнопки, либо расположенного справа навигационного текстового блока (Материалы в этой серии).




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

Вы можете увидеть много примеров модулей в стандартной установке Joomla!: - Меню - Последние Новости - Форма входа - и многое другое.

Этот учебник объяснит, как создать простой модуль "Привет мир". С помощью данного руководства вы узнаете основную файловую структуру модуля. Затем эта базовая структура может быть расширена, чтобы произвести более сложные модули.

Файловая Структура

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

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

Создание mod_helloworld.php

Файл mod_helloworld.php будет выполнять три задачи:

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

Вспомогательный класс определяется в нашем файле helper.php . Этот файл включается выражением require_once:

require_once dirname(__FILE__) . '/helper.php';

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

Наш вспомогательный класс, пока еще не был определен, но, когда он появится, он будет содержать один метод: getHello(). Для нашего простого примера, на самом деле не надо этого делать - сообщение “Привет, мир!” , которое этот метод возвращает может быть просто включен в шаблон. Здесь мы используем вспомогательный класс, чтобы продемонстрировать эту базовую технику.

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

Метод вспомогательного класса вызывается следующим образом:

$hello = modHelloWorldHelper::getHello($params);

Полный файл mod_helloworld.php

Полный файл mod_helloworld.php выглядит следующим образом:

<?php
/**
 * Hello World! Module Entry Point
 * 
 * @package    Joomla.Tutorials
 * @subpackage Modules
 * @license    GNU/GPL, see LICENSE.php
 * @link       http://docs.joomla.org/J3.x:Creating_a_simple_module/Developing_a_Basic_Module
 * mod_helloworld is free software. This version may have been modified pursuant
 * to the GNU General Public License, and as distributed it includes or
 * is derivative of works licensed under the GNU General Public License or
 * other free or open source software licenses.
 */

// No direct access
defined('_JEXEC') or die;
// Include the syndicate functions only once
require_once dirname(__FILE__) . '/helper.php';

$hello = modHelloWorldHelper::getHello($params);
require JModuleHelper::getLayoutPath('mod_helloworld');

Единственная строка, которую мы до сих пор не объяснили - это первая строка. Эта строка проверяет, чтобы этот файл включался через приложение Joomla!. Это необходимо, чтобы предотвратить инъекции переменных и другие потенциальные проблем безопасности.

Создание helper.php

Файл helper.php содержит вспомогательный класс, который используется для извлечения данных, которые будут отображаться при выводе модуля. Как говорилось ранее, наш вспомогательный класс будет иметь один метод: getHello(). Этот метод будет возвращать сообщение ‘Привет, мир’.

Вот код файла helper.php :

<?php
/**
 * Helper class for Hello World! module
 * 
 * @package    Joomla.Tutorials
 * @subpackage Modules
 * @link http://docs.joomla.org/J3.x:Creating_a_simple_module/Developing_a_Basic_Module
 * @license        GNU/GPL, see LICENSE.php
 * mod_helloworld is free software. This version may have been modified pursuant
 * to the GNU General Public License, and as distributed it includes or
 * is derivative of works licensed under the GNU General Public License or
 * other free or open source software licenses.
 */
class ModHelloWorldHelper
{
    /**
     * Retrieves the hello message
     *
     * @param   array  $params An object containing the module parameters
     *
     * @access public
     */    
    public static function getHello($params)
    {
        return 'Hello, World!';
    }
}

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

Более сложные модули могут включать в себя запросы к базе данных или другие функции во вспомогательном методе класса.

Создание tmpl/default.php

Файлdefault.php это шаблон, который выводит модуль.

Код для файла default.php выглядит следующим образом:

<?php 
// No direct access
defined('_JEXEC') or die; ?>
<?php echo $hello; ?>

Важный момент, который следует отметить, это то, что файл шаблона имеет ту же область видимости, что и файл mod_helloworld.php . Это означает, что переменная $hello может быть определена в файле mod_helloworld.php, а затем использоваться в файле шаблона, без каких-либо дополнительных объявлений или вызовов функций.

Создание mod_helloworld.xml

Файл mod_helloworld.xml используется, чтобы указать файлы, которые установщик должен скопировать и он используется Менеджером Модулей, чтобы определить, какие параметры используются для настройки модуля. Другая информация о модуле также указывается в этом файле.

Код mod_helloworld.xml выглядит следующим образом:

<?xml version="1.0" encoding="utf-8"?>
<extension type="module" version="3.1.0" client="site" method="upgrade">
    <name>Hello, World!</name>
    <author>John Doe</author>
    <version>1.0.0</version>
    <description>A simple Hello, World! module.</description>
    <files>
        <filename>mod_helloworld.xml</filename>
        <filename module="mod_helloworld">mod_helloworld.php</filename>
        <filename>index.html</filename>
        <filename>helper.php</filename>
        <filename>tmpl/default.php</filename>
        <filename>tmpl/index.html</filename>
    </files>
    <config>
    </config>
</extension>

файлы Манифеста объясняют технические детали элементов, используемых в XML-файле.

Вы заметите, что есть два дополнительных файла, которые мы еще не упоминали: index.html и tmpl/index.html. Эти файлы добавлены для того, чтобы содержимое папок, в которых они расположены не могло быть просмотрено. Если пользователь попытается открыть в своем браузере эти папки - будет отображаться файл index.html. Эти файлы могут быть пустыми или могут содержать простую строку:

<html><body bgcolor="#FFFFFF"></body></html>

который будет отображать пустую страницу.

Так как наш модуль не использует поля формы раздел config пуст.

Installing and Viewing the Module

To install the module, zip up the parent directory of your source files, to create a file called mod_helloworld.zip. Note that it needs to be a .zip file because the server needs to be able to extract it using Apache's mod_zlib library. Go into Joomla admin, to the Extensions / Manage / Install form, click on the Update Package File tab, and upload your zip file. You should find that the module installs ok. If it doesn't, then compare carefully your code with the code above, and ensure your source code files are named correctly. To make the module visible on your site web pages go into the Extensions / Modules listing and click on the Hello World module to edit it.

  1. set the Status to Published
  2. select the Position where the module should appear (if you're unsure about which Position to set, then navigate to Extensions / Templates / Styles, check which template is assigned on your web pages, then follow this guide to finding the module positions).
  3. on the Menu Assignment tab set the Module Assignment to "On all pages"

Save and Close your edit form. Now if you navigate to your site you should see "Hello, World!" displayed in your chosen module position.

Заключение

Разработка модуля для Joomla! это довольно простой и понятный процесс. Используя методы, описанные в этом учебнике, бесконечное разнообразие модулей может быть разработано без особых хлопот.