/** * @param $xml * @return mixed */ public function execBlock($xml) { $languageMenu = array(); $currentLocale = $this->locale->getLocale()->id; $currentMenuItem = $this->route->getCurrentMenuItem(); foreach ($currentMenuItem->translations as $translation) { $url = $translation->getUrl(true); $languageMenu[$translation->locale->id] = array('enable' => $translation->active, 'url' => $url, 'active' => $translation->locale->id === $currentLocale, 'name' => $translation->locale->name); } foreach ($languageMenu as $locale => $language) { if ($language['enable'] === false) { $menuItem = $currentMenuItem; do { $menuItem = $menuItem->parent; } while ($menuItem->parent); $translation = $menuItem->getTranslation($locale); $languageMenu[$locale]['url'] = $translation ? $translation->url : '/'; } else { $localeData = $this->db->getRepository('\\Fraym\\Locale\\Entity\\Locale')->findOneById($locale); $localeData = explode('_', strtolower($localeData->locale)); $this->template->addHeadData('<link rel="alternate" hreflang="' . $localeData[0] . '" href="' . $language['url'] . '" />', 'hreflang_' . $localeData[0]); } } $this->languageMenuController->renderHtml($languageMenu); }