Руководство по пользовательским функциям functions.custom.php в Cotonti

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

Руководство по пользовательским функциям Cotonti

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

 

1. Активация файла с функциями

Прежде чем использовать функции, вам необходимо убедиться, что файл /system/functions.custom.php включен в конфигурации сайта.

Откройте файл /datas/config.php

Найдите строку:

$cfg['customfuncs'] = false;

И измените её на:

$cfg['customfuncs'] = true;

Теперь Cotonti будет автоматически загружать ваши пользовательские функции из /system/functions.custom.php.

 

 

2. Размещение кода функций

Весь предоставленный ниже код должен быть помещен в один файл: /system/functions.custom.php.

 

 

Описание функций и примеры 

 

1. Функция cot_getUserDataOwner()

Эта функция является вспомогательной. Она ищет пользователя-владельца страницы по его ID или имени в URL.

Для чего

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

Когда использовать

Когда вам нужно программно получить данные о владельце страницы: его логин, email, дату регистрации и т.д. Эта функция возвращает PHP-массив и не предназначена для прямого использования в шаблонах.

Где использовать

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

 

Код функции
/**
 * Получает данные пользователя-владельца страницы.
 *
 * Эта функция определяет владельца страницы на основе параметров 'id' или 'u' из URL.
 * Если параметры отсутствуют, она использует ID текущего авторизованного пользователя.
 *
 * @return array|null Массив данных пользователя или null, если пользователь не найден.
 */
function cot_getUserDataOwner()
{
    // Импортируем из GET-параметра 'id' число (INT), это ID пользователя
    $id = cot_import('id', 'G', 'INT');
    // Импортируем из GET-параметра 'u' строку (TXT), это username пользователя
    $u = cot_import('u', 'G', 'TXT');

    // Если передан username, но не передан id
    if (!empty($u) && empty($id)) {
        // Выполняем запрос в БД: выбираем user_id из таблицы пользователей, где user_name совпадает с $u
        $id = Cot::$db->query(
            'SELECT user_id FROM ' . Cot::$db->users . ' WHERE user_name = ? LIMIT 1',
            [$u]
        )->fetchColumn();
    }
    // Если не передан ни id, ни username, но текущий юзер авторизован
    elseif (empty($id) && empty($u) && Cot::$usr['id'] > 0) {
        // Тогда используем id текущего авторизованного пользователя
        $id = Cot::$usr['id'];
    }

    // Проверяем существование пользователя в БД по полученному id и возвращаем его данные
    if ($id > 0) {
        return Cot::$db->query(
            'SELECT * FROM ' . Cot::$db->users . ' WHERE user_id = ? LIMIT 1',
            [$id]
        )->fetch();
    }

    return null;
}

 

Пример использования в PHP
// Пример использования функции в PHP-коде
$userData = cot_getUserDataOwner();
if ($userData) {
    echo "Привет, " . $userData['user_name'] . "!";
}

 

2. Функция cot_isOwner()

 

Эта функция предназначена для проверки прав доступа. Она использует cot_getUserDataOwner() для того, чтобы определить, является ли текущий авторизованный пользователь владельцем страницы.

Для чего

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

Когда использовать

Когда вам нужно отобразить кнопки «Редактировать» или «Удалить», доступ к которым должен быть только у владельца страницы.

Где использовать

Исключительно в шаблонах (.tpl) с помощью тега {PHP|...}.

Код функции

/**
 * Проверяет, является ли текущий пользователь владельцем страницы.
 *
 * Эта функция использует cot_getUserDataOwner() для получения данных владельца
 * и сравнивает его ID с ID текущего авторизованного пользователя.
 *
 * @return bool True, если текущий пользователь — владелец страницы, иначе False.
 */
function cot_isOwner()
{
    // Получаем данные владельца страницы с помощью вспомогательной функции
    $ownerData = cot_getUserDataOwner();

    // Возвращаем true, если данные найдены и ID владельца совпадает с ID текущего пользователя
    if (!empty($ownerData) && Cot::$usr['id'] > 0 && Cot::$usr['id'] == $ownerData['user_id']) {
        return true;
    }

    // Если условия не выполнены, возвращаем false
    return false;
}

 

Пример использования в шаблоне

 

<!-- Если текущий пользователь — владелец страницы -->
<!-- IF {PHP|cot_isOwner()} -->
    <a href="{PAGE_ID|cot_url('page','m=edit&id=$this')}">{PHP.L.Edit}</a>
<!-- ENDIF -->

 

 

3. Функция cot_isTopicAuthor()

Эта функция специально разработана для форумов. Она проверяет, является ли текущий пользователь автором топика, который он сейчас просматривает.

Для чего

Вывести или скрыть контент для автора конкретного топика.

Когда использовать

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

Где использовать

В шаблонах форумов, обычно в forums.posts.tpl  за пределами цилка постов BEGIN: FORUMS_POSTS_ROW и END: FORUMS_POSTS_ROW  .

Код функции
/**
 * Проверяет, является ли текущий пользователь автором топика.
 *
 * Эта функция получает ID топика напрямую из URL и сравнивает user_id автора топика
 * с ID текущего авторизованного пользователя.
 *
 * @return bool True, если текущий пользователь — автор топика, иначе False.
 */
function cot_isTopicAuthor()
{
    // Объявляем глобальную переменную, содержащую имя таблицы форумов.
    global $db_forum_topics;

    // Импортируем ID топика напрямую из URL-параметра 'q'.
    $topicId = cot_import('q', 'G', 'INT');

    // Проверяем, авторизован ли пользователь, и передан ли ID топика.
    if (!Cot::$usr || Cot::$usr['id'] <= 0 || empty($topicId)) {
        return false;
    }

    // Выполняем запрос в БД.
    $posterId = Cot::$db->query(
        "SELECT ft_firstposterid FROM $db_forum_topics WHERE ft_id = ? LIMIT 1",
        [$topicId]
    )->fetchColumn();

    // Возвращаем true, если ID автора топика совпадает с ID текущего пользователя.
    if ($posterId > 0 && Cot::$usr['id'] == $posterId) {
        return true;
    }

    // Если условия не выполнены, возвращаем false.
    return false;
}

 

Пример использования в шаблоне
<!-- IF {PHP|cot_isTopicAuthor()} -->
    <b> Привет {PHP.usr.profile.user_name}, ты много пропустил</b>
<!-- ENDIF -->

 

 

4. Функция cot_isPageAuthor()

Эта функция работает аналогично cot_isTopicAuthor(), но предназначена для страниц (статей) и использует ID владельца страницы.

Для чего

Вывести или скрыть контент для автора конкретной статьи.

Когда использовать

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

Где использовать

В шаблонах страниц, обычно в page.tpl.

Код функции

/**
 * Проверяет, является ли текущий пользователь автором статьи.
 *
 * Эта функция получает ID статьи напрямую из URL и сравнивает user_id автора статьи
 * с ID текущего авторизованного пользователя.
 *
 * @return bool True, если текущий пользователь — автор статьи, иначе False.
 */
function cot_isPageAuthor()
{
    // Объявляем глобальную переменную, содержащую имя таблицы статей.
    global $db_pages;

    // Импортируем ID статьи напрямую из URL-параметра 'id'.
    $pageId = cot_import('id', 'G', 'INT');

    // Проверяем, авторизован ли пользователь, и передан ли ID статьи.
    if (!Cot::$usr || Cot::$usr['id'] <= 0 || empty($pageId)) {
        return false;
    }

    // Выполняем запрос к БД.
    $ownerId = Cot::$db->query(
        "SELECT page_ownerid FROM $db_pages WHERE page_id = ? LIMIT 1",
        [$pageId]
    )->fetchColumn();

    // Возвращаем true, если ID владельца статьи совпадает с ID текущего пользователя.
    if ($ownerId > 0 && Cot::$usr['id'] == $ownerId) {
        return true;
    }

    // Если условия не выполнены, возвращаем false.
    return false;
}

 

Пример использования в шаблоне

<!-- IF {PHP|cot_isPageAuthor()} -->
    <b> Привет {PHP.usr.profile.user_name}, ты автор этой статьи.</b>
<!-- ENDIF -->
6 минут чтения Sodium Carbonate

Комментарии (0)

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

Автор контента

webitproff

Оффлайн

Sodium Carbonate

Последняя авторизация: 19.07.2026 01:57

  • Страница размещена: 06.09.2025 11:24
  • Последнее обновление: 06.09.2025 23:17
  • Язык:

Похожие страницы

Файл functions.custom.php в Cotonti
1 В файл functions.custom.php в Cotonti обычно добавляют дополнительные пользовательские функции, которые не входят в
Тип custom в переменных конфигурации
2 Тип 'custom' в переменных конфигурации Возможности типа 'custom' Новый тип custom предоставляет
Файл admin.functions.php в Cotonti CMF
3 Основное назначение файла admin.functions.php и его место в системе Файл admin.functions.php в системе Cotonti CMF
Полное руководство по настройке ЧПУ для модуля Forums в Cotonti
4 Это руководство поможет вам настроить красивые URL для разделов, тем и сообщений форума Cotonti. В результате
Руководство по методам parse(), text() и out() в XTemplate Cotonti Siena
5 Руководство для новичков: методы assign(), parse(), text() и out() в XTemplate (CoTemplate) Cotonti Siena
Cotonti Siena CMF • 22.02.2026 20:28 webitproff