Одна и та же статья в разных категориях. Как реализовать?

В системе управления контентом MODX вы можете легко реализовать ситуацию, когда одна и та же статья отображается в разных категориях. Для этого можно воспользоваться механизмом "Псевдонимов" (alias) и функцией вывода ресурсов через сниппеты.

Шаг 1: Создайте категории для статей
Перед тем как приступить к работе с псевдонимами, необходимо создать категории для ваших статей. Вы можете создать категории через раздел "Размещение" в административном интерфейсе MODX.

Шаг 2: Создайте ресурс для статьи
Создайте новый ресурс для вашей статьи с общим содержимым (заголовком, текстом и прочими деталями), но не определяйте его категорию. Используйте псевдоним для идентификации статьи. Псевдоним должен быть уникальным и понятным, чтобы легко на него ссылаться.

Шаг 3: Создайте сниппет для вывода статьи
Создайте сниппет (назовем его, например, "Article"), который будет отвечать за вывод статьи на страницу. В коде сниппета вы можете использовать функцию "getId" для получения идентификатора ресурса по его псевдониму. Затем, используя функцию "getResources", вы можете получить все ресурсы с данным идентификатором, т.е. все копии статьи. Далее вы можете отобразить каждую копию статьи в нужной категории, используя функции вывода ресурсов и фильтрацию по категориям.

Пример кода сниппета "Article":

<?php
$alias = $modx->getOption('alias', $scriptProperties); // Получаем псевдоним статьи
$id = $modx->getId($alias); // Получаем идентификатор ресурса по псевдониму
$resources = $modx->getResources(array('parent' => $categoryId)); // Получаем все копии статьи в разных категориях
$output = '';

foreach ($resources as $resource) {
    // Выполняем проверку и выводим только статьи с искомым идентификатором
    if ($resource['id'] == $id) {
        $output .= $modx->runSnippet('Resource', array('id' => $resource['id'])); // Выводим статью
    }
}

return $output;

Здесь "categoryId" - это идентификатор категории, в которой вы хотите отобразить статьи.

Шаг 4: Вывод статей на страницу
Теперь вы можете использовать сниппет "Article" на любой странице, чтобы вывести статьи из разных категорий. Просто вызовите сниппет с различными значениями параметров для разных категорий.

Пример использования сниппета на странице:

[[Article? &categoryId=`1`]] // Вывод статей из категории с идентификатором 1
[[Article? &categoryId=`2`]] // Вывод статей из категории с идентификатором 2

Таким образом, вы можете легко реализовать ситуацию, когда одна и та же статья отображается в разных категориях в системе MODX.