Хочешь добавить на сайт Joomla что-то своё — например, калькулятор, форму, блок с данными — но не хочешь лезть в ядро и портить шаблон? Тогда тебе нужен модуль.
В этой статье я покажу, как создать простой модуль-калькулятор, который можно включать, выключать и настраивать через админку Joomla — без единой правки в ядре сайта.
Модуль — это небольшой блок контента, который можно разместить в любой позиции сайта (например, в сайдбаре, шапке или подвале). Его можно включать/выключать, настраивать и показывать только на нужных страницах.
Примеры модулей: меню, логотип, погода, формы, баннеры — и, конечно, калькулятор.
В папке /modules/
создай новую папку с именем:
/modules/mod_calculator/
Создай файл mod_calculator.xml
внутри папки модуля. Это файл описания — он расскажет Joomla, что за модуль ты устанавливаешь.
<?xml version="1.0" encoding="utf-8"?>
<extension type="module" version="4.0" client="site" method="upgrade">
<name>MOD_CALCULATOR</name>
<author>Ты</author>
<version>1.0.0</version>
<description>Простой калькулятор</description>
<files>
<filename module="mod_calculator">mod_calculator.php</filename>
<folder>tmpl</folder>
</files>
<config>
<fields name="params">
<fieldset name="basic">
<field
name="header"
type="text"
label="Заголовок"
description="Заголовок модуля"
default="Калькулятор"
/>
<field
name="show_result"
type="list"
label="Показывать результат"
default="1"
>
<option value="1">Да</option>
<option value="0">Нет</option>
</field>
</fieldset>
</fields>
</config>
</extension>
Создай файл mod_calculator.php
. Он просто подключает шаблон.
<?php
defined('_JEXEC') or die;
require JModuleHelper::getLayoutPath('mod_calculator', 'default');</code></pre>
<h2>Шаг 4: Шаблон модуля (tmpl/default.php)</h2>
<p>Создай папку <code>tmpl</code> и внутри — файл <code>default.php</code>. Это и будет тело модуля.</p>
<pre><code><?php
defined('_JEXEC') or die;
// Получаем параметры
$header = $params->get('header', 'Калькулятор');
$showResult = $params->get('show_result', 1);
// Обработка формы
$result = null;
if ($_SERVER['REQUEST_METHOD'] === 'POST' && $showResult) {
$a = (float)($_POST['num1'] ?? 0);
$b = (float)($_POST['num2'] ?? 0);
$op = $_POST['op'] ?? 'add';
switch ($op) {
case 'add': $result = $a + $b; break;
case 'sub': $result = $a - $b; break;
case 'mul': $result = $a * $b; break;
case 'div': $result = $b != 0 ? $a / $b : 'Ошибка: деление на 0'; break;
default: $result = 'Ошибка';
}
}
?>
<!-- Вывод модуля -->
<div class="mod-calculator">
<?php if ($header) : ?>
<h3><?php echo htmlspecialchars($header); ?></h3>
<?php endif; ?>
<form method="post">
<input type="number" name="num1" placeholder="Число 1" required>
<input type="number" name="num2" placeholder="Число 2" required>
<select name="op">
<option value="add">+</option>
<option value="sub">-</option>
<option value="mul">*</option>
<option value="div">/</option>
</select>
<button type="submit">=</button>
</form>
<?php if ($result !== null && $showResult): ?>
<p><strong>Результат:</strong> <?php echo htmlspecialchars($result); ?></p>
<?php endif; ?>
mod_calculator
в ZIP-архив.Теперь ты можешь делать любые модули: формы обратной связи, блоки с погодой, таймеры, счётчики — всё, что угодно. Главное — выносить логику в отдельный модуль, а не встраивать в шаблон.
Удачи в разработке на Joomla!
Внимание: Cтатьи здесь сгенерированы нейросетью, пока не правил ошибки, только запустил его да и не до этого. Просто чтобы вы знали и не запускали ядерный реактор по моим статьям ))
НО!
Каждый кейс я реально делал минимум один раз. Серьёзно.
Сервера стоят, клиенты довольны, дата-центры не горят.
Это не просто копипаста — это опыт, выстраданный в бою, просто пересказанный через ИИ.
Если у вас есть вопросы, или Нашли неточность? пишите в коментах —
вместе поправим и сделаем статью более качественной. Я лично объясню нюансы из практики.
Комментарии
Пока нет комментариев. Будьте первым!