Сторінки, статті та новини
Інструменти та плагіни
Заготовка заголовок


Опис як приклад заготовки. Приклад текстового контенту для подальшої кастомізації шаблону "Index36".

Редагувати шаблон можна на власний розсуд. Якщо у вас немає часу або знань – завжди можна замовити адаптацію шаблону, написавши мені через GitHub або особисті повідомлення на публічній сторінці маркетплейсу цифрових товарів.

29.01.2025 22:51

Если вы с репозитория обновили свой сайт, до актуальной версии Cotonti 0.9.26 beta и у вас "слетело" отображение некоторых расширений, их блоков или ссылок на них, то проблема может быть в следующем:

возьмем например плагин "whosonline", если раньше ссылку выводили примерно так:

            <!-- IF {PHP.cot_plugins_active.whosonline} -->
            <li>
              <a class="uk-link-muted" href="{PHP|cot_url('whosonline')}">
                <span class="uk-margin-small-x uk-light">
                  <i class="fa-solid fa-earth-americas fa-xl"></i>
                </span>
                <span class="uk-text-middle">{PHP.L.WhosOnline}</span>
              </a>
            </li>
            <!-- ENDIF -->

то теперь нужно так:

            <!-- IF {PHP|cot_plugin_active('whosonline')} -->
            <li>
              <a class="uk-link-muted" href="{PHP|cot_url('whosonline')}">
                <span class="uk-margin-small-x uk-light">
                  <i class="fa-solid fa-earth-americas fa-xl"></i>
                </span>
                <span class="uk-text-middle">{PHP.L.WhosOnline}</span>
              </a>
            </li>
            <!-- ENDIF -->

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

{PHP.cot_plugins_active.namePlugin}

где namePlugin - это название плагина, которое всегда соответсвует названию папки этого плагина.

Обратите внимание на {PHP.cot_ и {PHP|cot_

{PHP.cot_ -  вызываем переменную, в данном случае глобальную.

{PHP|cot_ - вызаваем функцию, в данном случает также в глобальной видимости

То есть изменился способ проверки, установлен ли плагин, чтобы отдать код, который внутри условия.

 

Решение за 10 секунд

Если раньше использовали конструкцию вида

<!-- IF {PHP.cot_plugins_active.whosonline} -->

то сейчас используем такую

<!-- IF {PHP|cot_plugin_active('whosonline')} -->

Название плагина помещаем в одинарные кавычки, обрамляем круглыми скобками, и после PHP, вместо точки, ставим вертикальную черту.

 

 

Для тех кто хочет знать больше - можно почитать ниже

Это старая функция и её код

/**
 * Проверяет, установлен ли плагин и активен ли он в текущий момент
 *
 * @global array $cot_plugins_enabled Реестр активированных плагинов
 * @param string $name Имя плагина
 * @return bool Возвращает true, если плагин активен, иначе false
 */
function cot_plugin_active($name)
{
    global $cot_plugins_enabled; // Подключаем глобальную переменную $cot_plugins_enabled, содержащую данные об активных плагинах

    // Проверяем, является ли $cot_plugins_enabled массивом и существует ли в нем элемент с ключом $name
    return is_array($cot_plugins_enabled) && isset($cot_plugins_enabled[$name]); 
    // Если $cot_plugins_enabled - массив и в нем есть элемент с ключом $name, возвращаем true, иначе false
}

 

Пояснение:

  1. global $cot_plugins_enabled;
    Подключается глобальная переменная $cot_plugins_enabled, которая содержит список активных плагинов. Если переменная не подключена, функция не сможет проверить активность плагина.

  2. is_array($cot_plugins_enabled)
    Проверяет, что $cot_plugins_enabled является массивом. Это нужно, чтобы избежать ошибок, если переменная была определена, но не инициализирована как массив.

  3. isset($cot_plugins_enabled[$name])
    Проверяет, существует ли элемент с ключом $name в массиве $cot_plugins_enabled. Ключ $name соответствует имени плагина, который мы проверяем на активность.

  4. Возвращаемое значение
    Если оба условия выполняются (переменная является массивом и плагин существует в массиве активных плагинов), функция возвращает true. В противном случае — false.

Эта функция проста, но устарела в версии 0.9.26.

Использовалась для проверки, активирован ли конкретный плагин в системе Cotonti.

 

Это новая функция и её код

/**
 * Проверяет, установлен ли плагин и активен ли он в текущий момент
 *
 * @param string $extensionCode Код плагина
 * @return bool Возвращает true, если плагин активен, иначе false
 */
function cot_plugin_active($extensionCode)
{
    // Проверяем, что код плагина не пустой
    if (empty($extensionCode)) { // Если переменная $extensionCode пуста
        return false; // Возвращаем false, так как код плагина отсутствует
    }

    // Получаем экземпляр сервиса расширений и проверяем, активен ли плагин
    return ExtensionsService::getInstance() // Получаем объект-одиночку ExtensionsService
        ->isActive($extensionCode, ExtensionsDictionary::TYPE_PLUGIN); 
        // Вызываем метод isActive, передавая код плагина ($extensionCode) и тип расширения (плагин)
}

Пояснения:

  1. if (empty($extensionCode))
    Проверяется, задан ли код плагина ($extensionCode). Если он пустой, функция сразу возвращает false, так как проверка на активность невозможна без корректного кода плагина.

  2. ExtensionsService::getInstance()
    Это вызов метода для получения объекта-одиночки (singleton) класса ExtensionsService. Такой подход обеспечивает единый экземпляр службы для управления расширениями (модулями и плагинами).

  3. ->isActive($extensionCode, ExtensionsDictionary::TYPE_PLUGIN)
    Метод isActive проверяет, активен ли указанный плагин. Передаются два аргумента:

    • $extensionCode — код плагина.
    • ExtensionsDictionary::TYPE_PLUGIN — тип расширения (в данном случае, плагин). Константа TYPE_PLUGIN указывает, что проверяется именно плагин, а не модуль.

Итог:

Эта функция более универсальна, так как делегирует проверку на активность службы расширений. Она работает корректно, если структура приложения поддерживает классы ExtensionsService и ExtensionsDictionary.

 

 

Відредаговано: webitproff (09.03.2025 23:21, 1 рік тому)
Обліковий запис