Я работаю над сайтом 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; ?>