SEQUEL.ONE

SEQUEL.ONE

Был в сети 30 июня 2026, 13:59
Заказы принимаю
Можно и TV-параметром обойтись, вводить в него id категорий через запятую и потом через pdoResource получить их список ресурсов через пареметр resources. Тоесть вставить твшку в вывод pdoResource примерно так:

{'!pdoResource' | snippet : [
'parents' => 0,
'resources' => $_modx->resource.tv_name
'tpl' => ''
]}
Это самый примитивный способ.
Целый день потратил на то, чтобы запустить плагин на сайте со всеми идентичными настройками как у другого сайта где он работает, плагин даже ошибок никаких в лог не пишет :(

Ума не приложу как его завести((( Похоже придётся поочерёдно все плагины по-выключать.
Нашёл в чём дело в файле \core\components\localizator\model\localizator\localizator.class.php

if($language) {
            if (preg_match("/^(http(s):\/\/)/i", $language->http_host)) {
                $site_url = $language->http_host;
            }
            else
                $site_url = MODX_URL_SCHEME . $language->http_host;
Вот эту строчку

$site_url = MODX_URL_SCHEME . $language->http_host;
заменить на

$site_url = 'https://' . $language->http_host;
Но костыль не очень конечно. Если обновлять на новые версии, то всё потрётся. Как придумать по деликатнее способ?
Сейчас у себя пробую данный плагин. Похоже дело в нём, если на плагин повесить событие OnHandleRequest и добавить следующий код, то в сервисе last-modified.com/ru/ всё отдаёт корректно.

<?php
$LastModified_unix = 1294844676; // время последнего изменения страницы
$LastModified = gmdate("D, d M Y H:i:s \G\M\T", $LastModified_unix);
$IfModifiedSince = false;
if (isset($_ENV['HTTP_IF_MODIFIED_SINCE']))
    $IfModifiedSince = strtotime(substr($_ENV['HTTP_IF_MODIFIED_SINCE'], 5));  
if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']))
    $IfModifiedSince = strtotime(substr($_SERVER['HTTP_IF_MODIFIED_SINCE'], 5));
if ($IfModifiedSince && $IfModifiedSince >= $LastModified_unix) {
    header($_SERVER['SERVER_PROTOCOL'] . ' 304 Not Modified');
    exit;
}
header('Last-Modified: '. $LastModified);
Пробую сейчас поковырять сам плагин.
А всё. Разобрался. Надо было так писать:

$c->leftJoin('ExtrasPackages', 'ExtrasPackages', 'ExtrasPackages.id = ExtrasReleases.package_id');
        $c->select(array($this->modx->getSelectColumns('ExtrasReleases', 'ExtrasReleases')));
        $c->select(array('ExtrasPackages.id as package_id', 'ExtrasPackages.name as package_name'));
        $c->groupby($this->classKey . '.id');

        $package_id = trim($this->getProperty('package_id'));
        if ($package_id) {
            $c->where(array(
                'package_id' => $package_id
            ));
        }
Спасибо. Но у меня не вышло. После того как добавляю в процессор:

$c->leftJoin('ExtrasPackages', 'ExtrasPackages', '`ExtrasPackages`.`id` = `'.$this->classKey.'`.`package_id`');
        $c->select($this->modx->getSelectColumns($this->classKey, $this->classKey));
        $c->select('`ExtrasPackages`.`id` as `package_id`');
        $c->groupby($this->classKey . '.package_id');

        $package_id = trim($this->getProperty('id'));
        if ($package_id) {
            $c->where(array(
                'package_id' => $package_id
            ));
        }
Таблица перестаёт отображаться вообще.
С Babel можно делать, не обязательно структуру одну и туже соблюдать, там же на контекстах работает. А как писали выше там удобно страницы связывать чтобы редиректы с одной страницы типа /about редиректило на /en/about

Но с последним чем работал это Localizator, использовать только если структура одна и таже.
У меня задача такая. На сайте A в компонент свой записываются логин и пароль от сайта B. Нужно получить через API доступ к содержимому определённого PHP файла на сайте B используя логин и пароль из компонента сайта A. Может ли кто-нибудь скинуть пример самой проверки по логину и паролю? Я себе, если честно, слабо представляю(((