Как вы можете проверить, если вы находитесь на домашней странице в Joomla? - PullRequest
7 голосов
/ 18 ноября 2009

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

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

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

Спасибо! --Mala

Ответы [ 10 ]

9 голосов
/ 18 ноября 2009
if(JRequest::getVar('view') == "frontpage" ) {
    //You are in!
}
else {
    //You are out!
}
7 голосов
/ 14 марта 2012

Чтобы быть уверенным, что клиент находится на домашней странице, вы должны проверить "текущая страница (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

5 голосов
/ 11 июля 2012

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

$app = JFactory::getApplication();
if ($app->getMenu()->getActive()->home) {
    $homepage=true;
}
3 голосов
/ 07 февраля 2015

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

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

2 голосов
/ 27 октября 2011

для Joomla 1.6 и 1.7 это будет выглядеть следующим образом:

if(JRequest::getVar('view') == "featured" ) {
    //You are in!
}
else {
    //You are out!
}
1 голос
/ 27 октября 2014

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

<?php 
$active = JFactory::getApplication()->getMenu()->getActive();
?>
 <body class="<?php echo $active->alias; ?> ">
1 голос
/ 05 февраля 2011

Для Joomla .6, ничто иное как this не сработало для меня:

0 голосов
/ 22 июля 2015

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

<?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; ?>
0 голосов
/ 21 июля 2015

В 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 ?>
0 голосов
/ 27 октября 2014

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

<?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';
}
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...