Володя
С нами с 18 декабря 2012; Место в рейтинге пользователей: #6- Заметки 41
 - Комментарии 7
 
5 часов назад
            
                Я сделал вот такой скрипт, который можно повесить на cron или запускать вручную при необходимости. Суть в том, что он проходит по всему сайту, генерир...            
        
        
            
            Подскажите, как с помощью StercSeoSiteMap создать карту со ссылками на друге карты ?                            1
                    
    01 ноября 2025, 10:54
            
                Каждое предработное утро я начинаю с чтение новостей. И первым всегда идёт MODX.pro.
От такого дайджеста на меня костюм-тройка чуть сам не налез, б...            
        
        
            
            Дайджест форума за октябрь 2025 глазами DeepSeek                            4
                    
    01 ноября 2025, 10:49
            
                Собственно переговоры прошли успешно, в понедельник передаст мне компонент, к концу месяца будет работать.            
        
        
            
            [CDEKIntegrate] Отправка заказов напрямую в CDEK                            18
                    
    30 октября 2025, 19:01
            
                Два дня проковырялся, пытаясь сделать по этому конфигу.
Один сайт сразу завелся, остальные вместо перехода на страницу редиректят на главную — чудо н...            
        
        
            
            Настройка конфигурации NGINX + PHP-FPM 7.4 на Ubuntu 22.04 + Fastpanel для MODX 2.8.7                            13
                    
    30 октября 2025, 17:34
            
                да да, могу пообедать?            
        
        
            
            Modx 2.8.8 + minishop 2 какая версия php поддерживается?                            13
                    
    28 октября 2025, 22:14
            
                Сам себе отвечу: так как FormIt умеет только прикреплять файл к письму, для чего он файл грузит во временную директорию, надо отдельным хуком переноси...            
        
        
            
            GoogleSheets. Компонент для работы с Google таблицами.                            27
                    
    26 октября 2025, 19:22
            
                всё, спасибо. 
надо было понизить версию PHP -_//            
        
        
            
            [СДЕЛАЙ САМ] SendIt и MiniShop2 - заказ в 1 клик - быстро, просто и бесплатно.                            66
                    
    23 октября 2025, 21:08
            
                Сам отвечу, может кому-то пригодится. 
В классе компонента и его плагине есть проверки статуса заказа. Если статус отличный от «новый», то там сраз...            
        
        
            
            Вопрос по mspYaPay                            1
                    
    
И добавить команду
Сохранить и выйти — кэш будет удаляться в 1:10 по времени сервера, каждые сутки.
2. Галочка есть в настройке страницы. Также есть разные системные настройки кэширования.
3. Не играет роли, сессии хранятся в БД и автоматически чистятся, согласно настроек MODX. Например, таблица с сессиями modx.pro сейчас весит всего 46мб.
4. Можно, конечно, но я бы сократил размер сайта:
Первым делом почистить /core/packages — если ты не планируешь откатывать пакеты, то там нет ничего нужного. Очень часто эта директория весит мегабайт 200 — 300 и совершенно напрасно.
Вторым делом посмотреть, что у тебя там из файлов, картинок, видео? Может, стоит замутить источники файлов и вынести это дело куда-нить на Amazon?
Только еще момент: таким образом нельзя установить свойства, которых еще нет у объекта. К примеру, если у объекта нет свойства test, то нельзя сделать так: $object->test = $value; Свойства test у объекта после этого просто не будет. Вот здесь как раз и придется использовать $object->set($key, $val), чтобы свойство было создано. За эту магию отвечают ООП-методы __set() и __get() у класса xPDOObject. И вот здесь как раз кроется самое интересное (для этого смотрите сорцы xPDO github.com/modxcms/xpdo/blob/master/xpdo/om/xpdoobject.class.php#L739 ). Дело в том, что в методах __get() и __set() сразу прописана работа со связями getOne()/setOne() и т.д. и т.п.
К примеру, можно сделать так: $profile = $user->Profile, что будет равнозначно $profile = $user->getOne('Profile'). Таким образом можно получить свойство $user->Profile->email, даже если именно в этот момент еще не был получен связанный объект modProfile для этого пользователя. Или вот так:
$user = $modx->newObject('modUser', array(
«username» => «NewUser»,
));
$profile = $modx->newObject(«modUserProfile», array(
«email» => $someEmail,
«password» => $somePass,
));
$user->Profile = $profile;
$user->save();
И будут записаны в БД и данные пользователя (modUser), и данные его профиля (modUserProfile).
$user = & $modx->user;
$user->password = 12345;
$user->save();
И будет у вас в таблице в чистом виде пароль 12345.
Значения свойств не обязательно устанавливать через метод ->set(), где выполняются всякие модификации и т.п., их можно устанавливать напрямую, если само свойство у объекта уже есть. Это так же, как вы не установите $user->set('sudo', true);, так как там проверка, и если поле — sudo, то обламывается. Зато можно установить $user->sudo = true; $user->save();
С версии 5.3 в php появились замыкания, а с версии 5.4 к ним добавили два метода: bind и bindTo. Подробнее о теории можно почитать тут.
Эти методы позваляют связать ваше замыкание с конкретным объектом, после чего замыканию становится доступен $this. То есть, фактически, мы можем добавить на лету произвольный метод классу и он будет выполняться в контексте класса.
В рассмотренном мной в заметке случае делается так:
Вуа-ля! Защищенный метод нам доступен из любого класса, поскольку выполняется как будто изнутри класса modUser.