/**
  * @param string $name
  * @param array $arguments
  * @return mixed|string
  * @throws PageBuilderException
  */
 public function __call($name, $arguments)
 {
     if (strpos($name, 'block_') === 0) {
         $validTypes = Block::getBlockClasses();
         $blockType = strtolower(substr($name, 6));
         if (!empty($validTypes[$blockType])) {
             $blockName = $arguments[0];
             if (!isset($this->blockSettings[$blockName])) {
                 $this->blockSettings[$blockName] = [];
             }
             if (!isset($this->blockSettings[$blockName]['type'])) {
                 $this->blockSettings[$blockName]['type'] = $blockType;
             }
         }
     }
     try {
         return parent::__call($name, $arguments);
     } catch (PageBuilderException $e) {
         $error = $e->getMessage() . ' (themes.' . $this->theme . '.templates.' . $this->template;
         $error .= $this->categoryView ? ' ' . $this->categoryView : $this->categoryView;
         $error .= $this->repeaterView ? ' ' . $this->repeaterView : $this->repeaterView;
         $error .= ')';
         $this->errors[] = $error;
         throw new PageBuilderException($error);
     }
 }
 private function _typeList()
 {
     $selectArray = [];
     foreach (Block::getBlockClasses() as $blockName => $blockClass) {
         $selectArray[$blockName] = $blockName;
     }
     return $selectArray;
 }