Вырезать плагином слова из контента
        Есть 2 десятка слов которые нужно вырезать из контента при сохранении и публикации ресурса. Все они в теге p
Например xxx и yyy
Подскажите как это сделать правильно? Плагин есть, надо только записать строку
    
    
                                                                                
            Например xxx и yyy
Подскажите как это сделать правильно? Плагин есть, надо только записать строку
Комментарии: 16
                А в чем сложность? Сделайте плагин на событие OnBeforeDocFormSave
                    if ($modx->event->name != 'OnBeforeDocFormSave') {return false;}
$content     = $resource->get('content');
$words = array('xxx', 'yyy', 'zzz', 'etc..');
$pattern = '/\b(?:' . join('|', $words) . ')\b/i';
$content = preg_replace($pattern, '', $content);
$resource->set('content', $content);            
                Единственное могут быть проблемы со склонениями, тут или расширить список или еще как-то переписать.            
                    
                выглядит годно но не вырезает например такое 
                    <p>xxx</p>сам код такойcase ' OnBeforeDocFormSave':
        /** @var TYPE_NAME $resource */
        if ($resource->get('template') == 24) {
        if (!$resource->content) {
                $resource->set('published', 0);
        }
        }
        
        $content = $resource->get('content');
        $words = array('<p>xxx</p>', '<p>yyy</p>', '<p>zzz</p>', '<p>ddd</p>');
        $pattern = '/\b(?:' . join('|', $words) . ')\b/i';
        $content = preg_replace($pattern, '', $content);
        $resource->set('content', $content);
        $resource->save();
        break;            
                Я что-то это упустил это. Но тут уже сами перепишите, ничего сложного нет.
                    $words = array('xxx', 'yyy', 'zzz', 'etc..');
$pattern = '/<p>(?:' . join('|', $words) . ')<\/p>/i';
$content = preg_replace($pattern, '', $content);            
                почемуто все равно не цепляет :(            
                    
                Тут ошибка:
                    if ($resource->get('template') == 24) {
        if (!$resource->content) {
                $resource->set('published', 0);
        }
        }Можно просто переписать:if ($resource->get('template') == 24 && !$resource->get('content')) $resource->set('published', 0);save можно не ставить, он потом все равно будет сохранять:$resource->save();Проверил, работает, поправьте ошибки и снова проверьте. Может быть проблема в том еще, что она когда удаляет не нужное, но на странице это не показывается, тут наверно нужно как-то отдельно перегружать блок.            
                не удаляет, показывается и в админке и на странице            
                    
                Откройте консоль, и протестируйте. Откуда я знаю, что вы там отправляете.            
                    
                тааак, с этого момента подробнее плиз
ну я тестирую обычно, добавил в поле контент эти сочетания букв
                    ну я тестирую обычно, добавил в поле контент эти сочетания букв
<p>xxx</p><p>yyy</p><p>zzz</p> и сохраняю и удаления не происходит            
                Вы событие у плагина поставили: OnBeforeDocFormSave?            
                    
                да
и на паблишед стоит и на сейв
как я понимаю неверно массив внутри написан :)
только нюансик есть, остаются пустые абзацы
                    и на паблишед стоит и на сейв
как я понимаю неверно массив внутри написан :)
$words = array('xxx,yyy,zzz,etc..'); вот так сработало пасибтолько нюансик есть, остаются пустые абзацы
$words = array('xxx,<p>yyy</p>,zzz,ddd');
 $pattern = '/(?:' . join('|', $words) . ')/i';все эти сочетания в документе в абзацах и все равно от всех остается пустой тег абзаца а точнее c nbsp;<p> </p>            
                Может этот компонет приспособить.            
                    
                тут вобщем то на коменты стоит запускалка
 
                    case 'OnBeforeCommentSave':
        $comment = $modx->event->params['TicketComment']->get('text');
        $output = $matrous->filterText($comment);
        $modx->event->params['TicketComment']->set('text', $output);
        break;ну и непонятно как им управлять :)            
                Так на странице документа есть блок Использование и ссылка на используемую библиотеку.            
                    
                его вообще реально перенастроить на ресурсы а не на комментарии?            
                    
                Я не пробовал, но думаю да.            
                    
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.