Intereting Posts
Как разобрать блок комментариев PHP-стиля PHP? как удалить parsererror: SyntaxError: Неожиданный токен <в JSON в позиции 0 Получить название из ссылки, PHP Простой HTML DOM Parser Откат Mysqli не работает Сортировка массива по свойству объекта в PHP? Не удалось подключиться к WSDL Как создать учетную запись электронной почты в Cpanel через PHP? получить запрошенный контроллер в предварительном контролере крючка в кодеригенере Где вкладка Synchronize в PhpMyAdmin Как получить целое число от MySQL как целое в PHP? Как я могу использовать подстановочный поиск для получения списка из леса в CakePHP? php показать все изображения в каталоге и отсортировать по последнему измененному Каков наилучший способ автоматического генерации getters и seters для класса в php? Можно ли ОБНОВИТЬ таблицу JOINed, используя активную запись Codeigniter? Yii Framework 2.0 Загрузка файлов Ошибка finfo_file (): не удалось открыть поток: нет такого файла или каталога

Как вы можете проверить, находитесь ли вы на главной странице в Joomla?

Я работаю над сайтом Joomla, и мне нужно, чтобы передняя страница выглядела несколько иначе, чем остальные страницы, но недостаточно, чтобы гарантировать использование двух тем (это боль, чтобы обновить две таблицы стилей и два набора изображения каждый раз, когда я хочу сделать небольшое изменение).

Мои мысли – сделать небольшое испытание в index.php шаблона: если мы находимся на главной странице, обслуживаем X, в противном случае будем обслуживать Y. Однако я не совсем уверен, как это проверить. Я не могу просто использовать URL-адрес, потому что url.com/ и url.com/index.php и url.com/index.php? и т. д. и т.д.

Кто-нибудь знает способ сделать то, что я пытаюсь сделать? Как переменная $ _JOOMLA ['page'] или что-то вроде этого?

Благодаря! –Mala

if(JRequest::getVar('view') == "frontpage" ) { //You are in! } else { //You are out! } 

Чтобы быть уверенным, что клиент находится на главной странице, вы должны проверить «текущая страница (Itemid) выбрана как пункт меню по умолчанию« как этот код (для Joomla 1.6, 1.7 и 2.5):

 <?php $menu = JFactory::getApplication()->getMenu(); if ($menu->getActive() == $menu->getDefault()) { echo 'This is the front page'; } ?> 

Чтобы найти код для Joomla 1.5, перейдите на страницу http://docs.joomla.org/How_to_determine_if_the_user_is_viewing_the_front_page

Это работает для меня, у меня были проблемы с любым другим способом

 $app = JFactory::getApplication(); if ($app->getMenu()->getActive()->home) { $homepage=true; } 

для Joomla 1.6 и 1.7 это будет следующим:

 if(JRequest::getVar('view') == "featured" ) { //You are in! } else { //You are out! } 

Для Joomla 2.5 и 3.x используйте следующий код для сайта с одним языком:

 <?php $app = JFactory::getApplication(); $menu = $app->getMenu(); if ($menu->getActive() == $menu->getDefault()) { echo 'This is homepage'; } ?> 

Для многоязычных сайтов определение главной страницы (главной страницы) зависит от выбранного в данный момент языка, поэтому вам нужно будет использовать что-то вроде следующего:

 <?php $app = JFactory::getApplication(); $menu = $app->getMenu(); if ($menu->getActive() == $menu->getDefault( 'en-GB' )) { echo 'This is English homepage'; } elseif ($menu->getActive() == $menu->getDefault( 'it-IT' )) { echo 'This is Italian homepage'; } ?> 

Для многоязычных сайтов вы также можете использовать следующий код:

 <?php $app = JFactory::getApplication(); $menu = $app->getMenu(); $lang = JFactory::getLanguage(); if ($menu->getActive() == $menu->getDefault($lang->getTag())) { echo 'This is homepage'; } else { echo 'This is not homepage'; } ?> 

Надеюсь, поможет!

Для Joomla .6 ничего больше, чем это сработало для меня:

также вы можете определить каждую страницу:

 <?php $active = JFactory::getApplication()->getMenu()->getActive(); ?> <body class="<?php echo $active->alias; ?> "> 

используйте этот

 <?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'; } ?> 

В Joomla 3.x для отображения некоторого контента только на главной странице. Вы можете использовать

 <?php $menu = JSite::getMenu(); if ($menu->getActive() == $menu->getDefault()) : ?> Some code here to show only on front page <?php endif ?> 

И показать что-то везде, кроме главной страницы, просто отрицать! =

 <?php $menu = JSite::getMenu(); if ($menu->getActive() != $menu->getDefault()) : ?> Some code here to show everywhere except frontpage <?php endif ?> 

Как уже указывал РБ, разумно также проверять язык меню, на всякий случай, если есть несколько «домашней страницы», так как они находятся на многоязычных сайтах.

 <?php // Determine if we are on the homepage $lang = JFactory::getLanguage(); $langTag = $lang ? JFactory::getLanguage()->getTag() : null; $isHomepage = $langTag ? ($menu->getActive() == $menu->getDefault($langTag)) : ($menu->getActive() == $menu->getDefault()); ?> 

Затем, где вам нужен контент только для сайта:

 <?php if ($isHomepage) : ?> <div class="homepage-markup"> </div> <?php endif; ?>