Joomla之门广告招商,PR=5,alexa 排名2万1
English French German Italian Portuguese Russian Spanish

捐款 -> 升级 -> 下载

淘宝捐款升级到高级会员

点击这里给我发消息

Donate to joomlagate.com to translate more Joomla! extensions and free Joomla! templates

下载最新版本 Joomla!

Joomla! CMS - free Joomla! templates
download Joomla! 1.5.15 Chinese version

文章分类阅读

会员登录

 
 
Joomla之门 Joomla教程 Joomla 1.0 教程 表格式模板列宽度自动扩展的实现
表格式模板列宽度自动扩展的实现 E-mail
作者:白建鹏   
2007-01-03

使用 Joomla! 的建站的用户,谁不想拥有漂亮的模板呢?但是免费的模板往往难以满足站长的全部要求。所以,我们不妨“自力更生,丰衣足食”—— 自己做模板!

虽然说 Joomla! 的模板用<div>来做是最合理的,不过这个技术对于新手来说有一定难度。因此,我向新手推荐使用表格,即<table>来制作模板。

不过,有人已经发现了一个问题:用表格制作的模板,其列宽度无法自动扩展。也许这个说法不能把问题描述清楚,那么我详细解释一下:

比如,我们在表格中建立一个行,把这一行又分三个列,分别代表left、mainbody和right。这是一般三栏式模板的设置。在前台阅读文章系统时,左侧栏显示主菜单、登陆表单等,正文区显示文章,右侧可以放置广告、友情链接、日历、投票等等。假设我们在网站中还建立了一个论坛,当我们打开论坛页面时,我们希望左侧和右侧都消失,使得论坛占据整个屏幕宽度,这样看起来比较清楚。在后台,我们可以通过设置模块的显示位置来取消左右两栏各个模块在论坛页面的显示,但是,这时候论坛无法自动扩展,左右两栏虽然不显示任何内容,却留下空白区域占据一定宽度。

这就是我们今天要解决的问题。

前面说了一大堆废话,实际上解决方法很简单。

我们的目标是:让左右两栏能够自动判断该列是否有模块发布,如果没有内容,则自动隐藏,让 mainbody (即中间列)自动扩展占据整个网页宽度。

Notepad++ 开源记事本软件 或者 DreamWeaver 打开网站当前模板的 index.php 文件,找到左右两栏所在的单元格。切换到“代码”界面,代码一般是:

<tr>
    <td><?php mosLoadModules ( 'left' ); ?></td>
    <td><?php mosMainBody(); ?></td>
    <td><?php mosLoadModules ( 'right' ); ?></td>
</tr>

从上面代码可以看出,这一行中左、中、右三个单元格分别代表左侧栏、正文、右侧栏。把上述代码修改为:

<tr>
        <?php if (mosCountModules('left')>0){?>
<td><?php mosLoadModules ( 'left' ); ?></td><?php }?>
       <td><?php mosMainBody(); ?></td>
       <?php if (mosCountModules('right')>0){?>
<td><?php mosLoadModules ( 'right' ); ?></td><?php }?>
</tr>

利用一句php代码,我们给左右两栏添加了判断语句。如果左侧或者右侧没有模块发布,那么该列将自动隐藏,旁边的列则自动扩展。

这个方法使得利用表格(<table>)设计Joomla模板不再困惑。我自己就曾经为这个问题头痛过。最后,Joomla! 高手之一  genous (梁俊超) 给我指出了上述方法。我试用后发现完全有效。好东西不敢私藏,特发表于此,与诸君分享。

感谢 genous  !