findFirstPublishedRootByHostAndLanguage() публичный статический Метод

Find the first published root page by its host name and language
public static findFirstPublishedRootByHostAndLanguage ( string $strHost, mixed $varLanguage, array $arrOptions = [] ) : PageModel | null
$strHost string The host name
$varLanguage mixed An ISO language code or an array of ISO language codes
$arrOptions array An optional options array
Результат PageModel | null The model or null if there is no matching root page
Пример #1
0
 /**
  * Try to find a root page based on language and URL
  *
  * @return PageModel
  */
 public static function getRootPageFromUrl()
 {
     // HOOK: add custom logic
     if (isset($GLOBALS['TL_HOOKS']['getRootPageFromUrl']) && is_array($GLOBALS['TL_HOOKS']['getRootPageFromUrl'])) {
         foreach ($GLOBALS['TL_HOOKS']['getRootPageFromUrl'] as $callback) {
             /** @var PageModel $objRootPage */
             if (is_object($objRootPage = static::importStatic($callback[0])->{$callback[1]}())) {
                 return $objRootPage;
             }
         }
     }
     $host = \Environment::get('host');
     // The language is set in the URL
     if (\Config::get('addLanguageToUrl') && !empty($_GET['language'])) {
         $objRootPage = \PageModel::findFirstPublishedRootByHostAndLanguage($host, \Input::get('language'));
         // No matching root page found
         if ($objRootPage === null) {
             \System::log('No root page found (host "' . $host . '", language "' . \Input::get('language') . '")', __METHOD__, TL_ERROR);
             throw new NoRootPageFoundException('No root page found');
         }
     } else {
         $accept_language = \Environment::get('httpAcceptLanguage');
         // Find the matching root pages (thanks to Andreas Schempp)
         $objRootPage = \PageModel::findFirstPublishedRootByHostAndLanguage($host, $accept_language);
         // No matching root page found
         if ($objRootPage === null) {
             \System::log('No root page found (host "' . \Environment::get('host') . '", languages "' . implode(', ', \Environment::get('httpAcceptLanguage')) . '")', __METHOD__, TL_ERROR);
             throw new NoRootPageFoundException('No root page found');
         }
         // Redirect to the language root (e.g. en/)
         if (\Config::get('addLanguageToUrl') && !\Config::get('doNotRedirectEmpty') && \Environment::get('relativeRequest') == '') {
             $arrParams = array('_locale' => $objRootPage->language);
             $strUrl = \System::getContainer()->get('router')->generate('contao_index', $arrParams);
             $strUrl = substr($strUrl, strlen(\Environment::get('path')) + 1);
             static::redirect($strUrl, 301);
         }
     }
     return $objRootPage;
 }