Форум русской поддержки Joomla!® CMS
04.12.2016, 01:52:36 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

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

 (Прочитано 1040 раз)
0 Пользователей и 1 Гость смотрят эту тему.
orsy
Давно я тут
****

Репутация: +19/-1
Offline Offline

Пол: Мужской
Сообщений: 331


Web-Factor Ukraine


« : 20.02.2016, 18:55:51 »

Предыстория: есть сайт на трех языках (UA/RU/EN). По умолчанию для фронта в настройках сайта выбран украинский язык.

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

Заранее благодарен.
Записан
Ilhom666
Живу я здесь
******

Репутация: +154/-0
Offline Offline

Сообщений: 1333



« Ответ #1 : 20.02.2016, 19:05:08 »

Стандартный способ -
Код
$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';
}
Записан
b2z
Support Team
*****

Репутация: +707/-0
Offline Offline

Пол: Мужской
Сообщений: 7517


Разраблю понемногу


« Ответ #2 : 20.02.2016, 19:28:33 »

Мой вариант http://joomlaforum.ru/index.php/topic,205202.msg1456524.html#msg1456524

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

Репутация: +19/-1
Offline Offline

Пол: Мужской
Сообщений: 331


Web-Factor Ukraine


« Ответ #3 : 21.02.2016, 01:20:02 »

Мой вариант http://joomlaforum.ru/index.php/topic,205202.msg1456524.html#msg1456524

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

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

Репутация: +707/-0
Offline Offline

Пол: Мужской
Сообщений: 7517


Разраблю понемногу


« Ответ #4 : 21.02.2016, 09:37:12 »

В каких случаях не срабатывает привязка к пункту меню?
А Вы почитайте начало темы, которую я привёл.
Записан
orsy
Давно я тут
****

Репутация: +19/-1
Offline Offline

Пол: Мужской
Сообщений: 331


Web-Factor Ukraine


« Ответ #5 : 22.02.2016, 17:11:04 »

А Вы почитайте начало темы, которую я привёл.

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

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

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

Репутация: +372/-4
Offline Offline

Пол: Мужской
Сообщений: 2762



« Ответ #6 : 22.02.2016, 17:28:29 »

Я определяю так:
Код
$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(), '/' );
Записан
orsy
Давно я тут
****

Репутация: +19/-1
Offline Offline

Пол: Мужской
Сообщений: 331


Web-Factor Ukraine


« Ответ #7 : 23.02.2016, 18:32:02 »

А Вы почитайте начало темы, которую я привёл.

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

Код:
$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;
}
}
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet