Как в плагине получить все блоки PageBlocks вместе?
Может кто-то подсказать, как правильно написать плагин, который срабатывает на сохранение документа и записывает количество символов всех блоков PageBlocks в TV-переменную «symbols»?
Этот код возвращает «0»:
Этот код возвращает «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;
}
Комментарии: 2
Я думаю надо изучить схему компонента, получить методом getIterator() все блоки привязанные к текущему ресурсу, потом в цикле получить у каждого блока поле с контентом, потом вырезать тэги и посчитать количество символов, путём инкрементирования какой-нибудь переменной, например, $count. А потом записать это значение в TV symbols.
Изучил, вроде делаю все как надо, в снипете конструкция работает, а в плагине нет… понять не могу почему.
<?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;
}
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.