Верх страницы
Обложка к записи Joomla: определение главной страницы
Время для прочтения: 0 мин. 0 сек.

Joomla: определение главной страницы

Чтобы в Joomla вывести какие-либо данные только на главной странице сайта (например, рекламу Sape), надо эту главную как-то определить программно. Порывшись на просторах интернета, я нашел такой кусок кода:

$menu = JSite::getMenu();
if ($menu->getActive() == $menu->getDefault()) {
    echo 'Главная страница';
} else { 
    echo 'Это не главная страница';
}

Этот код функционирует, но с ошибками. Если несколько пунктов меню ссылаются на главную, то, соответственно, работать не будет. Так что этот код использовать не рекомендуется!

Правильным является такой подход:

if(JRequest::getVar('view') == "frontpage" ) {
    echo 'Главная страница';
}
else {
    echo 'Это не главная страница';
}

Если у вас главная страница — это, допустим, список материалов или список товаров, тогда попробуйте так (в 2.5 работает точно):

if (JUri::base() === JUri::current()) {
    echo 'Главная страница';
} else {
    echo 'Это не главная страница';
}

Автор: Кобзарёв Михаил

Русский разработчик с 20-ти летним стажем. Работаю с PHP, ООП, JavaScript, Git, WordPress, Битрикс, Joomla, Drupal, Opencart, DLE, Laravel, Moonshine, SuiteCRM.

Оптимизирую сайты под Google Page Speed, настраиваю импорты для больших магазинов на WooCommerce + WP All Import. Пишу плагины на заказ. Все мои услуги.

Веду блог о разработке, дайджест в телеграмме и в ВК.

Вы всегда можете нанять меня.

Комментарии
Подписаться
Уведомить о
guest

14 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
Денис
10 лет назад

Щас редко что то вешается только на главную страницу. Сейчас все блоки сквозные.

Максим
Максим
10 лет назад

Спасибо. про метатеги напиши. например как автогенерировать их из текста, если нет прописанных тегов для статьи

mraak
mraak
8 лет назад

if($_SERVER[‘REQUEST_URI’]==’/’ || $_SERVER[‘REQUEST_URI’]==’/index.php’){ echo «Это полюбому главная страница»; }

mihdan
8 лет назад
Ответить на  mraak

Кто вам сказал, что joomla может быть только в корне проекта? Может же быть в каталоге, например, site.ru/joomla/

mraak
mraak
8 лет назад
Ответить на  mihdan

А что вам мешает добавить соответстующие строки в данную конструкцию?

mihdan
8 лет назад
Ответить на  mraak

Смысл ставить костыли, когда в API все уже предусмотрено?

mraak
mraak
8 лет назад
Ответить на  mihdan

Смысл напрягать API, тратя дополнительные ресурсы и память, ради простейшей операции?

mihdan
8 лет назад
Ответить на  mraak

У нас с вами разные взгляды на жизнь, делайте как вам удобно, никто не запрещает, я всегда следую API

mraak
mraak
8 лет назад
Ответить на  mihdan

Вы совершенно правы, я стараюсь никогда не следовать чужому API, именно из за взглядов на жизнь. Особенно, я категорически отказываюсь следовать API Joomla, ибо считаю что лишний раз пинать этого «слона» с монстроподобной архитектурой из роутеров, контроллеров, валидаторов и т.д. ради определения главной страницы это как минимум не профессионально. Когда у вас будет 500+ проектов на жумле под присмотром, вы то-же начнёте обращать внимание на подобные мелочи. Особенно когда они все на одном VDS. Что вы знаете о этих методах JRequest::getVar или JUri::base() ? Сколько происходит лишних обращений к БД, сколько происходит лишних операций i/o на диск? Сколько выделяется дополнительно памяти для свойств этих классов? Вот например про суперглобальную переменную $_SERVER всё известно, она и так уже существует в любом случае…

Vlad_Is_Lav
6 лет назад

На мультиязычном сайте код не работает.

Uliana Zeleniuk
4 лет назад

На мультиязічном сайте не один из вариантов не работает корректно

Предыдущая запись

Давайте дружить
в Телеграме

Авторский блог вашего покорного слуги в Telegram про web, программирование, алгоритмы, инструменты разработчика, WordPress, Joomla, Opencart, Laravel, Moonshine, фильмы и сериалы