动态布局(每个页面的不同布局)


Dynamic Layout ( Different Layout for each Page )

我正在尝试在Joomla中实现不同的布局。我正在使用别名进行设置每个页面的不同布局。我读了一本关于Joomla的电子书,没有其他方法可以创建不同的布局或在后端面板中设置它。我想问一下,是否有另一种方法/方式可以为每个页面设置与后端面板不同的页面?我只是想确保它在Joomla 1.5中是可能的。

我以前的方法

// Get Alias Page
function getCurrentAlias(){
   $menu= &JSite::getMenu();
   $active= $menu->getActive();
   return $active->alias;
}

获取别名页面名称后,我使用条件语句获取不同的内容对于每个页面。

<-- Header Part -->
<-- Start Content Part -->
if( $pageName == "home" ){
   {{Content Home}}
}elseif( preg_match("#^(news).*$#", $pageName) ){
   {{Content News}}
}...etc
<-- End Content Part -->
<-- Footer Part -->

首先,我建议不要使用 1.5,它下个月就要结束了。

但是,如果您要使用 1.5,则会使其比您需要的困难得多。如果您希望从一个页面到另一个页面具有显着的结构差异,则可以为要使用的每个不同结构安装一个模板,然后将每个模板分配给相应的菜单项。您必须创建菜单项,即使它们位于网站上未显示的隐藏菜单中也是如此。

您还可以使用 CSS 和可折叠模块位置控制页面的结构。添加此项,以便您可以设置一个页面类后缀,该后缀将 ID 添加到页面的正文标记中,从而轻松使用特定于页面的 CSS:

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

然后,对于页面上的每个模块位置,您可以使它们可折叠,以便在不使用它们时它们不会显示在页面上:

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

所以基本上,如果你不把任何模块放在"顶部"位置,它永远不会被放在页面上。结合使用这两个项目,您可以使用单个模板准确控制每个页面的外观。

当我们在哪里使用Joomla! 1.5 我们使用一个名为"菜单依赖项"的扩展来加载特定的 CSS、JS 等

通过加载正确的CSS等,我们能够完全重新布局任何给定的页面。

当然,随着Joomla中模板"样式"的出现! 2.5+我们不再需要它,因为我们可以只将样式变体分配给菜单项。