2009-11-18 35 views
7

我正在Joomla网站上工作,我需要首页看起来与其余页面略有不同,但不足以保证使用两个主题(很难更新两个样式表和两个样式表每次我想做一个小小的改变时都会有一组图像)。如何测试您是否在Joomla的主页上?

我的想法是在模板的index.php中进行一点测试:如果我们在主页上,则服务X,否则服务Y.但是,我并不完全知道如何测试这个。我不能只使用网址,因为url.com/和url.com/index.php和url.com/index.php?等等等都是有效的。

有没有人知道一种方法来做我想做的事情?像$ _JOOMLA ['page']变量或类似的方便吗?

谢谢! --Mala

回答

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

谢谢!这正是我所期待的。 – Mala 2009-11-18 20:35:24

+2

如果安装具有名为“frontpage”的视图的其他组件,则可能会中断。为了确保你在查看内容组件,我会这样写'if'语句:if(JRequest :: getVar('view')=='frontpage'&& JRequest :: getVar('option')= ='com_content') – jlleblanc 2009-11-18 21:52:38

+1

如果您在首页使用com_content正面页面视图,而不是其他组件,则它可以正常工作。 – 2009-11-19 07:31:36

1

为Joomla。6,无非是this别人为我工作:

2

为Joomla 1.6和1.7这将是如下:

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

要舒尔该客户端在主页上,您应该测试“当前页面(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

+0

为3.0这不起作用 – themis 2014-07-15 11:09:55

5

这对我的作品,我不得不使用其他任何方式

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

我很难过。我已经建立了自己的小模板。没什么。但要检查主页,只有你的方法工作(不是由Soufiane Hassou的那个。你知道为什么吗?谢谢! – itsols 2013-04-13 04:20:42

+0

我相信Soufiane Hassou的方式适用于joomla 1.5,我的测试是在2.5 ..我的方式问题wont在Joomla 1.5中工作我不得不测试它看到我提供的方式也适用于多种语言Joomla 1.5不是以同样的方式制作多种语言的版本 – StiGMaT 2013-04-30 14:07:42

+0

适用于joomla 3这适用于插件 – themis 2014-07-15 11:09:18

0

使用这一个

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

还可以定义麻烦每页:

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

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

希望它能帮助!

+0

完美地工作,也很好的解释。谢谢。 – jackJoe 2018-02-19 10:14:31

0

在的Joomla 3.x中表现出一定的内容只在FrontPage中可以使用

<?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

由于R.B.已经指出,检查菜单项的语言也是合理的,以防万一在多语言网站中存在多个“主页”。

<?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; ?> 
相关问题