Skip to content

Concrete5 на русском языке

Недавно я столкнулась с проблемой — как удалить блок "Беседа" со страниц сайта. Если бы страниц было немного, то это легко. Просто вручную редактируешь страницу и удаляешь блок. Но, когда у вас количество страниц перевалило за 100, а в моем случае за несколько тысяч, то это работа потребует недели, а может быть и больше. 

Но можно написать небольшой скрипт, который размещается в панели управления под именем "Задачи". В этом разделе есть несколько стандартных задач, например, создание файла sitemap.xml, очистка старых версий страниц, индексация страниц и другие. 

У меня написано несколько кастомных блоков, позволяющих совершать рутинные задачи, такая как удалить версии файлов изображений, для уменьшения объёма занимаемого места. Также была задача "Обновление описания страниц", эта задача выполняется по очереди. Это значит, что на старте задачи берётся одна страница из списка страниц и отправляется на обработку. С этой страницей можно делать всё, что угодно. В данном случае, просто скрипт находит все блоки в области "Главная" (Main) и, если этот блок с идентификатором "core_conversation", то получаем его объект, проверяем есть ли такой блок на этой странице и удаляем.

$a = new Area('Main');

           

          $blocks = $a->getAreaBlocksArray($page);

             

          foreach ($blocks as $b) {

              if ($b->getBlockTypeHandle() == 'core_conversation') { 

                    

                   $block=Block::getByID($b->getBlockID(),$page,$a);

                   if (is_object($block)) $block->delete();

                    break;

               }

          }

Таким образом можно редактировать контент, удаляя старый блок и добавляя новый. Но это уже тема другой статьи.

Пример скрипта для фоновых задач по массовому редактированию контента страниц.

Удачи.


Загрузка беседы