Как определить в шаблоне многоязычного сайта Joomla адрес главной страницы?

  • 7 Ответов
  • 1467 Просмотров

0 Пользователей и 1 Гость просматривают эту тему.

*

Оффлайн orsy

  • ****
  • 390
  • [+]21 / [-]1
  • Web-Factor Ukraine
    • Просмотр профиля
    • Студия "Web-factor"
Предыстория: есть сайт на трех языках (UA/RU/EN). По умолчанию для фронта в настройках сайта выбран украинский язык.

Вопрос: Как в шаблоне получить адрес главной страницы или переменную, которая будет давать TRUE если текущая страница является главной.
То есть скрипт должен понимать что и "site.ru/" и "site.ru/ru/" и "site.ru/en/" это всё главные страницы.
Я мог бы просто прописать все эти варианты, но хотелось бы иметь универсальный вариант для определения главной страницы независимо от установленных языков и текущего языка сайта.

Заранее благодарен.

*

Оффлайн Ilhom666

Стандартный способ -
Код: (php) [Выделить]
$app = JFactory::getApplication();
$menu = $app->getMenu();
$lang = JFactory::getLanguage();
if ($menu->getActive() == $menu->getDefault($lang->getTag())) {
echo 'This is the front page';
}
else {
echo 'Accueil';
}


*

Оффлайн orsy

  • ****
  • 390
  • [+]21 / [-]1
  • Web-Factor Ukraine
    • Просмотр профиля
    • Студия "Web-factor"
Мой вариант http://joomlaforum.ru/index.php/topic,205202.msg1456524.html#msg1456524

К меню можно привязываться, но это не всегда срабатывает.

В каких случаях не срабатывает привязка к пункту меню?


*

Оффлайн orsy

  • ****
  • 390
  • [+]21 / [-]1
  • Web-Factor Ukraine
    • Просмотр профиля
    • Студия "Web-factor"
А Вы почитайте начало темы, которую я привёл.

Попробовал использовать ваш код, может чего-то не понимаю, но мне кажется что ваш метод не учитывает то, что на главной странице основного языка не будет префикса, а на остальных есть.

То есть если сравнивать адреса то главная страница, которая не имеет префикса языка не будет считаться главной?

Всплывает проблема, над решением которой я бьюсь уже 3 дня. Как узнать язык контента, выбранный по умолчанию для фронта.
« Последнее редактирование: 22.02.2016, 18:32:02 от orsy »

*

Оффлайн Aleks.Denezh

Я определяю так:
Код: (php) [Выделить]
$language = JFactory::getLanguage();
$languages = JLanguageHelper::getLanguages( 'lang_code' );
$isHomePage = $language->getTag() === $language->getDefault()? JUri::base() === JUri::current() : JUri::base(). $languages[$language->getTag()]->sef === rtrim( JUri::current(), '/' );
Мой  блог по разработке на Joomla CMS!
Хотите отблагодарить материально? Мой WMR: R861060179016

*

Оффлайн orsy

  • ****
  • 390
  • [+]21 / [-]1
  • Web-Factor Ukraine
    • Просмотр профиля
    • Студия "Web-factor"
А Вы почитайте начало темы, которую я привёл.

Немного доработал ваш вариант, подскажите везде ли будет работать вот этот код:

$currUrl = substr(JUri::base(), 0, -1).$_SERVER['REQUEST_URI'];
$defLang = JComponentHelper::getParams('com_languages')->get('site');

if (JLanguageMultilang::isEnabled()){
    $uris = array();
foreach (JLanguageHelper::getLanguages() as $lang){
if($lang->lang_code === $defLang){
$uris[$lang->lang_code] = JUri::base();
}else{
$uris[$lang->lang_code] = JUri::base(). $lang->sef . '/';
}
}
if($currUrl ==  $uris[JFactory::getLanguage()->getTag()] ){
$isHomePage = 1;
} else {
$isHomePage = 0;
}
}else{
if($currUrl ==  JUri::base() ){
$isHomePage = 1;
} else {
$isHomePage = 0;
}
}