Pages, Articles & News
Tools & Plugins
Example / Placeholder Title


Description as an example placeholder. Sample text content for further customization of the "Index36" template.

You are free to edit and customize the template however you like. If you don’t have time or enough knowledge — you can always order template adaptation by contacting me via GitHub or private messages on the digital goods marketplace.

2025-08-22 06:14
Avatar" alt="" class="rounded-circle border border-2 border-light" width="54" height="54">

Решение, пользовательское.

файл /plugins/autoalias2/inc/autoalias2.functions.php 

меняем его содержимое на 

<?php
/**
 * AutoAlias functions for generating URL-friendly aliases from page titles
 *
 * @package AutoAlias
 * @copyright (c) Cotonti Team
 * @license https://github.com/Cotonti/Cotonti/blob/master/License.txt
 * @version 2.0.0
 * @author Cotonti Team
 */

// Проверяем, определена ли константа COT_CODE, иначе прерываем выполнение
defined('COT_CODE') or die('Wrong URL');

// Подключаем основной файл модуля page для работы с его функциями
require_once cot_incfile('page', 'module');

/**
 * Converts a page title into a URL-friendly alias
 *
 * @param string $title The page title to convert
 * @param int $id Page ID, used for prepending to alias if configured
 * @param bool $duplicate Indicates if a duplicate alias was detected
 * @return string The generated alias
 */
function autoalias2_convert($title, $id = 0, $duplicate = false)
{
    // Объявляем глобальные переменные для конфигурации и таблиц транслитерации
    global $cfg, $cot_translit, $cot_translit_custom;

    // Проверяем, включена ли транслитерация и существует ли файл translit
    if ($cfg['plugin']['autoalias2']['translit'] && file_exists(cot_langfile('translit', 'core'))) {
        // Подключаем файл транслитерации для текущего языка
        include cot_langfile('translit', 'core');
        // Если определён пользовательский массив транслитерации, используем его
        if (is_array($cot_translit_custom)) {
            // Применяем пользовательскую транслитерацию через strtr
            $title = strtr($title, $cot_translit_custom);
        // Если есть стандартный массив транслитерации
        } elseif (is_array($cot_translit)) {
            // Принудительно приводим строку к UTF-8 для корректной обработки
            $title = mb_convert_encoding($title, 'UTF-8', mb_detect_encoding($title));
            // Применяем базовую транслитерацию через iconv для обработки нестандартных символов
            $title = iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE', $title);
            // Дополнительно применяем замены из $cot_translit для украинских символов
            foreach ($cot_translit as $key => $val) {
                // Заменяем каждый символ или последовательность на соответствующий транслит
                $title = str_replace($key, $val, $title);
            }
        }
    }

    // Удаляем все символы, кроме букв, цифр, дефиса, подчеркивания и пробела
    $title = preg_replace('#[^\p{L}0-9\-_ ]#u', '', $title);
    // Заменяем пробелы на разделитель, указанный в конфигурации
    $title = str_replace(' ', $cfg['plugin']['autoalias2']['sep'], $title);

    // Приводим строку к нижнему регистру, если включена опция lowercase
    if ($cfg['plugin']['autoalias2']['lowercase']) {
        $title = mb_strtolower($title);
    }

    // Если включено добавление ID в начало и ID не пустой
    if ($cfg['plugin']['autoalias2']['prepend_id'] && !empty($id)) {
        // Добавляем ID в начало алиаса с разделителем
        $title = $id . $cfg['plugin']['autoalias2']['sep'] . $title;
    // Если обнаружен дубликат алиаса
    } elseif ($duplicate) {
        // Проверяем настройку обработки дубликатов
        switch ($cfg['plugin']['autoalias2']['on_duplicate']) {
            case 'ID':
                // Если ID не пустой, добавляем его в конец алиаса
                if (!empty($id)) {
                    $title .= $cfg['plugin']['autoalias2']['sep'] . $id;
                    break;
                }
            default:
                // В противном случае добавляем случайное число от 2 до 99
                $title .= $cfg['plugin']['autoalias2']['sep'] . rand(2, 99);
                break;
        }
    }

    // Возвращаем итоговый алиас
    return $title;
}

/**
 * Updates the alias for a specific page in the database
 *
 * @param string $title Page title to convert
 * @param int $id Page ID
 * @return string The generated alias
 */
function autoalias2_update($title, $id)
{
    // Объявляем глобальные переменные для конфигурации и базы данных
    global $cfg, $db, $db_pages;
    // Инициализируем флаг дубликата
    $duplicate = false;
    // Повторяем, пока есть дубликаты и не включено prepend_id
    do {
        // Генерируем алиас с учётом заголовка, ID и флага дубликата
        $alias = autoalias2_convert($title, $id, $duplicate);
        // Проверяем, существует ли такой алиас в базе для других страниц
        if (!$cfg['plugin']['autoalias2']['prepend_id']
            && $db->query("SELECT COUNT(*) FROM $db_pages WHERE page_alias = '$alias' AND page_id != $id")->fetchColumn() > 0) {
            // Если алиас занят, устанавливаем флаг дубликата
            $duplicate = true;
        } else {
            // Обновляем алиас в базе данных для указанного page_id
            $db->update($db_pages, array('page_alias' => $alias), "page_id = $id");
            // Сбрасываем флаг дубликата
            $duplicate = false;
        }
    } while ($duplicate && !$cfg['plugin']['autoalias2']['prepend_id']);
    // Возвращаем итоговый алиас
    return $alias;
}

 

2. должен быть файл по адресу: /lang/ua/translit.ua.lang.php

а нем код:

<?php
/**
 * Таблиця транслітерації ГОСТ 7.79-2000 / ISO-9, система Б
 * В порядку зменшення пріоритету при обробці
 */
global $cot_translit, $cot_translitb;
$cot_translit = array(
	'ці' => 'ci',
	'Ці' => 'Ci',
	'ЦІ' => 'CI',
	'це' => 'ce',
	'Це' => 'Ce',
	'ЦЕ' => 'CE',
	'ци' => 'cy',
	'Ци' => 'Cy',
	'ЦИ' => 'CY',
	'ц' => 'cz',
	'Ц' => 'Cz',
	'ч' => 'ch',
	'Ч' => 'Ch',
	'щ' => 'shh',
	'Щ' => 'Shh',
	'ш' => 'sh',
	'Ш' => 'Sh',
	'ж' => 'zh',
	'Ж' => 'Zh',
	'ї' => 'yi',
	'Ї' => 'Yi',
	'ю' => 'yu',
	'Ю' => 'Yu',
	'я' => 'ya',
	'Я' => 'Ya',
	'є' => 'ye',
	'Є' => 'Ye',
	'и' => 'y',
	'И' => 'Y',
	'ґ' => 'g',
	'Ґ' => 'G',
	'а' => 'a',
	'А' => 'A',
	'б' => 'b',
	'Б' => 'B',
	'в' => 'v',
	'В' => 'V',
	'г' => 'g',
	'Г' => 'G',
	'д' => 'd',
	'Д' => 'D',
	'е' => 'e',
	'Е' => 'E',
	'з' => 'z',
	'З' => 'Z',
	'і' => 'i',
	'І' => 'I',
	'й' => 'y',
	'Й' => 'Y',
	'к' => 'k',
	'К' => 'K',
	'л' => 'l',
	'Л' => 'L',
	'м' => 'm',
	'М' => 'M',
	'н' => 'n',
	'Н' => 'N',
	'о' => 'o',
	'О' => 'O',
	'п' => 'p',
	'П' => 'P',
	'р' => 'r',
	'Р' => 'R',
	'с' => 's',
	'С' => 'S',
	'т' => 't',
	'Т' => 'T',
	'у' => 'u',
	'У' => 'U',
	'ф' => 'f',
	'Ф' => 'F',
	'х' => 'x',
	'Х' => 'X',
	'ь' => '',
	'№' => '#'
);

/**
 * Зворотне перетворення
 */

$cot_translitb = array_flip($cot_translit);

/**
 * Додаємо апостроф, оскільки він транслітерується тільки в один бік
 */

$cot_translit['’'] = 'y';
$cot_translit['\''] = 'y';

 

 

 

 

 

Account