Максим

Максим

Был в сети 7 часов назад
Заказы принимаю
С libxml только глюки и непредсказуемая работа. Проблемам уже десяток лет. Вечно «костыли» какие-то надо придумывать. То с кириллицей проблемы, то обёртку надо делать, если грузишь фрагмент html-кода, то еще какая-то шляпа вылезет.

Вот сейчас вроде всё уже сделал и работает, но между
<!-- -->
всё равно «кракозябры» вместо кириллицы. Да, можно забить на это, но тем не менее.

Если и делать такую «обработку html», то только либо через сниппет, либо как тут через OnLoadWebDocumen, чтобы не потерять исходный html из контента ресурса.
При добавлении записи вылезает ошибка:
SocialNetworksItem_err_save
В логах вот такая ошибка:
[2025-06-17 10:14:14] (ERROR @ C:\webserver\domains\komitet\core\xpdo\om\xpdoobject.class.php : 1452) Error HY000 executing statement:
INSERT INTO `modx_socialnetworks_items` (`name`, `link`, `active`) VALUES ('vk', 'https://vk.com/archives.kurganobl', 1)
Array
(
    [0] => HY000
    [1] => 1364
    [2] => Field 'position' doesn't have a default value
)
У меня не работает с Login. Когда сниппет возвращает false, страница сыпется в 500-ю ошибку (в консоле на вкладе Сеть). Login 1.9.12. К логам сервера нет доступа, в логах MODX ничего нет.
Я же правильно понимаю, что название сниппета нужно добавлять в preHooks? Больше ведь ничего не надо делать? (ну кроме вызова сниппет в html-форме)
Какие задачи ты решаешь с помощью Vue?
В моей практике были разные сложные калькуляторы стоимости продукции. Можно конечно и на PHP отправлять запросы, но это явно дольше (запросы отправлять дополнительные), чем сразу на стороне клиента считать данные.
Раз уж в статье написано про «подтянуть в очередной раз свои знания в PHP», напишу тут свои мысли.

1. Работать с датами можно через объект DateTime. Насколько помню там даже можно просто сравнивать даты обычным оператором $myDate > $yourDate
2. Может быть имеет смысл не привязываться к году, а просто выводить за столько то дней до и после определённой даты. Новый год всегда 1 января не важно какого года, другие праздники тоже.
3. На мой взгляд удобнее и нагляднее вместо:
$start = $modx->getOption('start', $scriptProperties, '');
$end = $modx->getOption('end', $scriptProperties, '');
$chunk = $modx->getOption('tpl', $scriptProperties, '');
писать в таком стиле:
$options = array_merge([
        'start'   => '',
        'end'    => '',
        'tpl'      => "@INLINE {$var}"
    ], $scriptProperties);
4. Я всегда стараюсь делать один return в сниппетах или функциях. Для меня лично тоже так удобнее и нагляднее (единая точка выхода).