你现在的位置:首页 > PHP网站建设知识库 > Joomla > 正文

随心所欲的自定义joomla模板的方法

记得joomla的模板分配吗? 本文的目的其实和这个是相同的.只是实现方法不同而已. [本文不介绍默认模板里都可以学习到的用判断来确定某位置输出不输出的问题. ]

通常情况下, 如果只是首页和其他页不同的话, 我们可以在模板里利用些判断, 比如

<? if ($option !="com_frontpage") { ?> 
之类的来做, 如果内页涉及到左右分栏, 自动适应等等,或许就比较麻烦了, css 要鼓捣不说,只 if 判断都不晓得要加多少... 想想真不如用 模板分配哈.  

当然,如果是这样的 话, 可以建立另一模板,只 index.php 和templateDetails.xml文件, 而index.php里的所有路径基本都指向原模板.然后在后台利用模板分配来做也是可以实现的了.

 

恩恩, 条条道路通罗马在joomla的模板里也体现的很明朗! 接着我们来看看, 怎么样在一个模板里既简单,又方便的来模拟出 joomla 的模板分配来, 而且比模板分配来的更灵活!

 

其实也是很简单的:

 

在模板里建立你的不同的页面[相当与你多模板里的index.php],并各自命名比如为 a.php, b.php, c.php, ...

然后把模板里的index.php 改写成一个 case 语句或 if 的判断就可以了。比如:

 

<?php defined( "_VALID_MOS" ) or die( "Direct Access to this location is not allowed." );
 
 switch ($option){ 
 case "com_frontpage": 
 require_once( "templates/$GLOBALS[cur_template]/a.php"); 
 break;
 case "com_contact": 
 require_once( "templates/$GLOBALS[cur_template]/b.php"); 
 break;
 default: 
 require_once( "templates/$GLOBALS[cur_template]/c.php" ); 
 break; 
 
 } 
 ?> 
根据自己的需要,可以变换不同的变量或条件或判断嵌套来做吧。

想一想a.php,我可以用表格做出我想要的任何样子. 在空的地方[<td></td>里]插入个位置如 user10

========以上方法已经过期。以下有效

大部分的Joomla! 1.5 模板给了我们足够的自由度,来在首页表达足够丰富的内容,然而有时候对于我们来说,三栏或者两栏的表达方式对于我们仍然不够,并且在建站的初期,可能最需要改变的就是首页的规划,从而达到最好的阅读效果。那么怎么才能让首页脱离模板的限制而任意布局和显示内容?

首先在/templates/目录下找到当前的模板目录,将index.php 拷贝为home.php和default.php ,然后我们来修改index.php,index.php的代码如下:

<?php
 // no direct access
 defined( '_JEXEC' ) or die( 'Restricted access' );
 function isFrontPage(){
 return (JRequest::getCmd('option')=='com_content' && !JRequest::getInt('id'));
 }
 if(isFrontPage()){
 include_once (dirname(__FILE__).DS.'/home.php');
 } else {
 include_once (dirname(__FILE__).DS.'/default.php');
 }
 ?> 
其实就是判断是否在访问首页,如果访问首页,怎包含home.php,否则是默认default.php。

接下来就是按照你自己的意愿来修改home.php,而不受任何限制了。通常保留原来模板的页头部分,而内容部分可以你任意布局。

1.5当中此法已不可判断,需要采用如下方法判断:

<?php
 $menu = & JSite::getMenu();
 if($menu->getActive() == $menu->getDefault()){
 ?>
//首页
 <?php } else{?>
//非首页
 <?php } ?>