Evgeny

Evgeny

Был в сети 04 августа 2023, 10:05
Заказы принимаю
Изучил, вроде делаю все как надо, в снипете конструкция работает, а в плагине нет… понять не могу почему.

<?php
$contentblocks = $modx->getService('PageBlocks', 'PageBlocks', MODX_CORE_PATH . 'components/pageblocks/model/');
$blocks = $contentblocks->getCollection('pageBlock');


$output = '';
foreach ($blocks as $block) {
    $output .= $modx->getChunk($block->chunk, $block->values);
}

$count = strlen(strip_tags($output)); 
 
switch ($modx->event->name) {
    case 'OnDocFormSave':
        $resource->setTVvalue('symbols', $count);
        break;
}
Может кто-то подсказать, как правильно написать плагин, который срабатывает на сохранение документа и записывает количество символов всех блоков в TV-переменную «symbols»? Это код возвращает «0».

<?php

$contentblocks = $modx->getService('PageBlocks', 'PageBlocks', MODX_CORE_PATH . 'components/pageblocks/model/');
$contentblocks = strlen(strip_tags($contentblocks));

switch ($modx->event->name) {
    case 'OnDocFormSave':
        $resource->setTVvalue('symbols', $contentblocks);
        break;
}
Спасибо, что озвучили решение.

Мне кажется, логично его озвучить в готовом виде, пусть оно и простое. Тем более, что даже автор вопроса, несмотря на то, что считает себя разработчиком, допустил ошибки и не сразу дошел до решения.
Человек задал конкретный вопрос, ему дали подсказку, он сделал решение. Почему бы это решение не вывести на всеобщее обозрение? Я не понимаю, почему это так сложно? Сделать это и облегчить работу для других разработчиков. Он и сам то не сразу понял, как правильно делать. Так бы время и силы экономили. Но можно, конечно, возомнить себя крутыми разработчиками и зажать решение для, типа, ламеров…
Версии PHP все перепробовал. Ставил 3 раза новую MODX поверх – ничего не помогало. Заработало потом, непонятно почему…

Сначала была ошибка со SMARTY – удалил полностью.
Потом появилась ошибка:
[Fri May 17 16:57:40 2019] [error] [pid 15575] sapi_apache2.c(325): [client 185.17.130.57:35568] PHP Fatal error: Call to a member function setCachePath() on null in /home/c/public_html/core/model/modx/modmanagerrequest.class.php on line 79

Спасибо за предложение помощи! =)
Да вот на своем сервере проблем не было, а как перенес на Timeweb, так начались косяки. У меня ощущение, что это они там чего-то мутят. Как раз несколько дней назад перестала работать админка, ошибка 500 была, они логи ошибки не хотели давать, но сказали, что нужно вирусы удалить. Ну и предложили услуги своей партнерской компании. Мы, конечно, на них забили и сами все вычистили на своем сервере, но вот как перенесли, проблема с админкой осталась.