在joomla模板中,如何使第一页与带文章的页面不同?

时间:2011-02-01 12:20:12

标签: php templates joomla

我正在创建一个Joomla 1.6模板,我想让第一页与其他页面不同(我说,其他的文章)。我期待的是类似的东西:

<?php
if(this_page_link_to_an_artcile || this_page_is_not_the_main) {
   ?> <jdoc:include type="component" /> <?php
}
?>

我查看了其中一个标准模板,并试图找到“if”,但在某些页面中没有显示这些模板。

4 个答案:

答案 0 :(得分:3)

如果您想为每个页面或一组页面设置单独的样式,那么您可以将其添加到模板index.php / head:

 <?php $active = JFactory::getApplication()->getMenu()->getActive();?>

之后,创建一个包装器div,它覆盖body标签中的所有页面,例如:

<body>
<div class="<?php  echo $active->alias; ?> ">
----- PAGE CONTENT-----
</div>
</body>

通过这种方式,您可以使用单独样式设置任何页面的样式。例如,对于“home”页面,在css文件中,您应该设置

的属性
.home .footer {}

设置仅出现在主页上的.footer div的属性。

答案 1 :(得分:1)

您可以使用joomla创建多个模板,并将它们分配给不同的菜单项/页面。 例如,您可以将主模板(带有文章)和另一个模板仅用于主页,即ex。链接到“主页”菜单项。

您可以使用模板管理器进行菜单项/模板分配。

答案 2 :(得分:1)

// Is Frontpage?
$option = JRequest::getCmd('option');
$view = JRequest::getCmd('view');

$frontpage = ($option == 'com_content' && $view == 'featured')
$is_article = ($option == 'com_content');
if ($is_article && !$frontpage)
{
    // ...
}

编辑:现在适用于Joomla!1.6)

$is_article || !$frontpage应该总是返回true ...因为如果它不是文章,那么它不是首页。当然,取决于你如何定义“是一篇文章”。)

答案 3 :(得分:0)

你的意思是什么? Joomla中的页面根据加载的组件和模块而有所不同。您打算在主页上添加哪些内容?您可能只需要将默认菜单更改为其他类型。

除非主页上存在结构差异,否则无需添加更多代码,只需更改菜单类型。

为了适应从一个页面到另一个页面的结构差异,您需要制作仅在需要时显示的可折叠位置。

<?php if ($this->countModules('left')) : ?>
    <div id="leftcolumn">
        <jdoc:include type="modules" name="left" style="xhtml" />
    </div>
<?php endif; ?>

您还希望利用可添加到菜单项的页面类后缀参数。这允许您添加特定于页面的样式。我通常将它添加到我的模板index.php中的BODY标签。

<?php
$menu = &JSite::getMenu();
$active = $menu->getActive();
$pageclass = "";
if (is_object( $active )) :
    $params = new JParameter( $active->params );
    $pageclass = $params->get( 'pageclass_sfx' );
endif;
?>
<body id="<?php echo $pageclass ? $pageclass : 'default'; ?>">