В Joomla 5.3 добавление кастомного копирайта в футер сайта — это простой способ персонализировать ваш ресурс, сделав его более профессиональным. Копирайт может включать динамический элемент, такой как текущий год, который автоматически обновляется без необходимости ручных правок. В этой статье мы разберём, как создать кастомный HTML-модуль для копирайта и интегрировать JavaScript-скрипт для динамического обновления года. Мы сосредоточимся на использовании стандартного шаблона Cassiopeia, рекомендуя создание дочернего шаблона (child template) для безопасной кастомизации. Это предотвратит потерю изменений при обновлениях Joomla.

Эта инструкция подойдёт для новичков и опытных пользователей. Мы предполагаем, что у вас есть доступ к админ-панели Joomla и файловой системе сервера (через FTP или хостинг-панель). Текущий год в примерах — 2025, но скрипт сделает его динамическим.

Шаг 1: Создание кастомного HTML-модуля для копирайта

Кастомный копирайт обычно размещается в футере сайта. Для этого используем модуль типа "Custom" (Пользовательский HTML), который позволяет вставить произвольный код.

  1. Войдите в админ-панель Joomla: Перейдите по адресу ваш-сайт/administrator и авторизуйтесь.
  2. Создайте новый модуль:
    • Перейдите в раздел Extensions > Modules (Расширения > Модули).
    • Нажмите кнопку New (Новый).
    • Выберите тип модуля Custom (Пользовательский).
  3. Настройте содержимое модуля:
    • В поле Title (Заголовок) укажите что-то вроде "Кастомный копирайт" (это видно только в админке).
    • В редакторе содержимого вставьте следующий HTML-код:
      <p>© 2012-<span id="currentYear"></span> Поддержка и продвижение <a href="http://jedig.ru" target="_blank" rel="noopener" title="JediG">JediG</a>. Отдых на море - <a href="https://t.me/SukkogradRentBot" target="_blank" rel="noopener" title="подбор аренды">подбор аренды</a></p>
      Здесь <span id="currentYear"></span> — это плейсхолдер для динамического года. Если редактор (например, TinyMCE) фильтрует код, переключитесь на No Editor в настройках пользователя или глобальной конфигурации (System > Global Configuration > Text Filters, выберите "No Filtering" для вашей группы).
  4. Настройте позицию и видимость:
    • В разделе Position (Позиция) выберите подходящую для футера, например, "footer-a" или "footer-b" (зависит от шаблона Cassiopeia).
    • В Menu Assignment (Назначение меню) укажите страницы, где модуль должен отображаться (например, все страницы).
    • Опубликуйте модуль, нажав Save & Close (Сохранить и закрыть).
  5. Проверьте на сайте: Очистите кэш (System > Clear Cache) и обновите фронтенд. Вы увидите статический копирайт без года — его добавим на следующем шаге.

Шаг 2: Создание дочернего шаблона Cassiopeia

Чтобы добавить JavaScript без риска потери изменений при обновлениях, создайте child-шаблон. Это официально рекомендуемый подход в Joomla.

  1. Перейдите в управление шаблонами:
    • Идите в Extensions > Templates > Templates (Расширения > Шаблоны > Шаблоны).
  2. Создайте child-шаблон:
    • Найдите шаблон Cassiopeia и нажмите на него.
    • В меню нажмите Create Child Template (Создать дочерний шаблон).
    • Укажите имя, например, "cassiopeia-child".
    • Joomla создаст новую папку /templates/cassiopeia-child/.
  3. Активируйте child-шаблон:
    • Перейдите в Extensions > Templates > Styles (Расширения > Шаблоны > Стили).
    • Найдите "cassiopeia-child - Default", отметьте и нажмите Set as Default (Установить по умолчанию).
    • Очистите кэш.

Теперь ваш сайт использует child-шаблон, наследующий всё от Cassiopeia.

Шаг 3: Добавление JavaScript-скрипта для динамического года

Скрипт обновит год в реальном времени с помощью JavaScript. Мы добавим его в файл index.php child-шаблона.

  1. Доступ к файлам:
    • Через FTP или файловый менеджер хостинга перейдите в /templates/cassiopeia-child/.
    • Если index.php отсутствует, создайте его, скопировав содержимое из родительского шаблона /templates/cassiopeia/index.php.
  2. Редактируйте index.php:
    • Откройте файл в текстовом редакторе.
    • Найдите закрывающий тег </body> (в конце файла).
    • Перед ним вставьте следующий PHP-код:
      <?php
      // Добавляем JS для обновления текущего года
      $doc = \Joomla\CMS\Factory::getDocument();
      $doc->addScriptDeclaration('
          document.addEventListener("DOMContentLoaded", function() {
              const yearElement = document.getElementById("currentYear");
              if (yearElement) {
                  yearElement.innerText = new Date().getFullYear();
              }
          });
      ');
      ?>
      Этот код использует API Joomla для вставки скрипта. Проверка if (yearElement) предотвращает ошибки, если элемент отсутствует.
  3. Альтернатива: Отдельный JS-файл (для лучшей организации):
    • Создайте папку /templates/cassiopeia-child/js/ (если нет).
    • В ней создайте файл custom.js с содержимым:
      document.addEventListener('DOMContentLoaded', function() {
          const yearElement = document.getElementById('currentYear');
          if (yearElement) {
              yearElement.innerText = new Date().getFullYear();
          }
      });
    • В index.php перед </body> вставьте:
      <?php
      $doc = \Joomla\CMS\Factory::getDocument();
      $doc->addScript($this->baseurl . '/templates/' . $this->template . '/js/custom.js', ['defer' => true]);
      ?>
      Опция defer оптимизирует загрузку.
  4. Сохраните и проверьте:
    • Сохраните файл (CHMOD 644, если нужно).
    • Очистите кэш Joomla и браузера.
    • Обновите сайт: год в копирайте должен быть 2025 (или текущим).

Возможные проблемы и советы

  • Скрипт не работает: Проверьте консоль браузера (F12 > Console) на ошибки. Убедитесь, что модуль опубликован и ID "currentYear" совпадает.
  • Фильтрация кода: Если Joomla удаляет скрипты, используйте расширение "Sourcerer" из Joomla Extensions Directory.
  • Обновления: Child-шаблон защитит ваши изменения.
  • Расширения: Для сложных футеров рассмотрите плагины вроде "Advanced Module Manager".

С помощью этой инструкции вы легко добавите кастомный копирайт, который будет актуальным год за годом. Как это работает можно посмотреть на этом сайте или например на сайте https://vizator.ru