/**
  * @param string $blockName
  * @param array $options
  * @return mixed|string
  */
 public function block($blockName, $options = [])
 {
     // force query available if block details changed in current request
     $block = Block::preloadClone($blockName, isset($options['force_query']));
     $pageId = !empty($options['page_id']) ? Path::unParsePageId($options['page_id']) : $this->pageId();
     $usingGlobalContent = false;
     $blockData = null;
     if (($customBlockData = $this->_getCustomBlockData($blockName)) !== null) {
         // load custom block data for (is also used for repeater content)
         $blockData = $customBlockData;
     } elseif ($block->exists) {
         // load block data
         $globalBlockData = PageBlockDefault::preload($block->id);
         $pageBlockData = PageBlock::preloadPageBlock($pageId, $block->id, $this->pageVersion($pageId));
         // get languages
         $loadForLanguages = [Language::current()];
         if (config('coaster::frontend.language_fallback') == 1 && !in_array(config('coaster::frontend.language'), $loadForLanguages)) {
             $loadForLanguages[] = config('coaster::frontend.language');
         }
         // run through languages until block data found
         foreach ($loadForLanguages as $language) {
             if (!empty($pageBlockData[$language])) {
                 // if custom page block for selected language exists
                 $blockData = $pageBlockData[$language]->content;
             } elseif (!empty($globalBlockData[$language])) {
                 // if default block for selected language exists
                 $blockData = $globalBlockData[$language]->content;
                 $usingGlobalContent = true;
                 break;
             }
         }
         // return raw data
         if (isset($options['raw']) && $options['raw']) {
             return $blockData;
         }
     } else {
         return 'block not found';
     }
     // set version that data has been grabbed for (0 = latest)
     if (empty($options['version'])) {
         $options['version'] = $usingGlobalContent ? 0 : $this->pageVersion($pageId);
     }
     // pass block details and data to display class
     return $block->setPageId($pageId)->setVersionId($options['version'])->getTypeObject()->display($blockData, $options);
 }