public function get_external_view(string $full_path, string $mode = 'html', array $data=null){
    if ( !router::is_mode($mode) ){
      die("Incorrect mode $full_path $mode");
    }
    if ( ($this->get_mode() === 'dom') && (!defined('BBN_DEFAULT_MODE') || (BBN_DEFAULT_MODE !== 'dom')) ){
      $full_path .= ($full_path === '' ? '' : '/').'index';
    }
    $view = null;
    if ( $this->has_view($full_path, $mode) ){
      $view = self::$loaded_views[$mode][$full_path];
    }
    else if ( $info = $this->router->route(basename($full_path), 'free-'.$mode, \dirname($full_path)) ){
      $view = new mvc\view($info);
      $this->add_to_views($full_path, $mode, $view);
    }
    if ( \is_object($view) && $view->check() ){
      return \is_array($data) ? $view->get($data) : $view->get();
    }
    return '';
  }