百度空间 | 百度首页 
               
 
查看文章
 
Joomla!扩展开发--模块开发(二)
2008年08月20日 星期三 22:56
第一至五章的PDF版已经上传到Rapidshare,下载地址

第一至四章:
Joomla!扩展开发--目录
http://hi.baidu.com/andycai/blog/item/2036d816aa31601c972b430e.html
Joomla!扩展开发--概况
http://hi.baidu.com/andycai/blog/item/f0dbae1ed8f92f1b4134171b.html
Joomla!扩展开发--组件开发入门
http://hi.baidu.com/andycai/blog/item/236d2e97b65fe96954fb9663.html
Joomla!扩展开发--后端开发
http://hi.baidu.com/andycai/blog/item/4b8bbefdd2693c1209244d00.html
http://hi.baidu.com/andycai/blog/item/75582038a1200520b8998f02.html
http://hi.baidu.com/andycai/blog/item/442ad2b4f9fcc2778bd4b203.html
Joomla!扩展开发--前端开发
http://hi.baidu.com/andycai/blog/item/ed6df0dce691a6a4cd116682.html
http://hi.baidu.com/andycai/blog/item/c22ec280b9aa10d29123d98c.html

第五章        模块开发

尝试不同的布局

帮助类本身没有产生任何的输出,相反,方法 renderReview() 格式化链接并调用 JmoduleHelper getLayoutPath() 方法来包含名为 _reviews 的布局文件。在 /modules/mod_reviews 下创建文件夹 tmpl,在 tmpl 里创建 _review.php 并加入以下的代码:


<?php defined('_JEXEC') or die('Restricted access'); ?>

<a href="<?php echo $link ?>"><?php echo $review->name; ?></a><br />

_review 以下划线开头是一种约定,表示只提供给内部使用,而不提供给管理员。附加的内部布局,我们可以根据不同的现实选项创建其他的布局。先创建 default,在 /modules/mod_reviews/tmpl 下增加 default.php 并加入以下的代码:

<?php

defined('_JEXEC') or die('Restricted access');

foreach ($list as $review){

modReviewsHelper::renderReview($review, $params);

}

?>

注意这个布局的是通过一个点评的列表,调用帮助类函数来显示一条点评,然后加载 _review 模板。使用相同的方法我们也可以创建无序列表的布局,在 /modules/mod_reviews/tmpl 下增加 bulleted.php 并加入以下代码:

<?php defined('_JEXEC') or die('Restricted access'); ?>

<ul>

<?php

foreach ($list as $review)

{

echo "<li>";

modReviewsHelper::renderReview($review, $params);

echo "</li>";

}

?>

</ul>

无序列表使用相同的基本逻辑作为默认的布局,唯一的不同是它使用无序列表来显示内容。通过帮助函数来加载点评布局,确保链接的格式是一致的。

现在我们有两个不同的显示选项和一个帮助类,但是没有代码在模块中使用,打开 mod_reviews.php 并用以下的代码代替它原来的内容:

<?php

defined('_JEXEC') or die('Restricted access');

require(dirname(__FILE__).DS.'helper.php');

$list = modReviewsHelper::getReviews($params);

require(JModuleHelper::getLayoutPath('mod_reviews'));

?>

首先 require() 调进帮助类,第二步,获取最近的点评,最后,我们使用 getLayoutPath() 来显示布局。当第二个参数没有被指定,那默认值是 default。保存文件并刷新首页,现在可以看到以下的截屏。回到 mod_reviews.php,编辑 getLayoutPath() 以便使用 bulleted 布局来代替默认:

require(JModuleHelper::getLayoutPath('mod_reviews', 'bulleted'));

保存并刷新后,页面如下:


暂时不提供图片显示,请参考《Learning Joomla! extension development》 或者中文PDF版

如果我们在每个链接下面显示一部分点评的内容,感觉会更好。回到 /modules/mod_reviews/tmpl/_review.php 并加入以下的代码:

<a href="<?php echo $link ?>"><?php echo $review->name;

                                ?></a><br />

<p>"<?php echo $review->quicktake ?>"</p><br />

在后端编辑你的点评,在 Quicktake 字段输入一些内容,刷新浏览器你会看到一下的变化:


暂时不提供图片显示,请参考《Learning Joomla! extension development》 或者中文PDF版

回到 mod_reviews.php 并设置 getLayoutPath() 的第二个参数为 default,保存后刷新浏览器,你会看到如下页面:


暂时不提供图片显示,请参考《Learning Joomla! extension development》 或者中文PDF版

组合起来

我们的模块在就突出最近晚餐的选择是非常好的,而我们的访客可能需要看到以往的点评,让我们来调整一下。用以下高亮的代码来代替原来 $list 这一行:

<?php

defined('_JEXEC') or die('Restricted access');

require(dirname(__FILE__).DS.'helper.php');

$random = $params->get('random', 0);

if($random)

{

$list = modReviewsHelper::getRandomReview();

}

else

{

$list = modReviewsHelper::getReviews($params);

}

require(JModuleHelper::getLayoutPath

                   ('mod_reviews', 'default'));

?>

代替简单的取出所有的点评,我们现在使用基于模块的参数来取数据。$params 对象会自动的转换成全局的变量,它预载了模块的设置。我们使用 get() 来将 random 参数的值赋给 $random,如果没有值就赋默认值 0。下一步我们测试 $random 的值,如果它是非零的话,getRandomReview() 会被调用,函数等一会会加入到 modReviewsHelper 中。否则,我们使用之前的方法获取点评。

打开 helper.php 并加入以下的函数到 modReviewsHelper 类:

function getRandomReview()

{

$db =& JFactory::getDBO();

$query = "SELECT id, name, quicktake FROM #__reviews";

$db->setQuery( $query );

$rows = $db->loadObjectList();

$i = rand(0, count($rows) - 1 );

$row = array( $rows[$i] );

return $row;

}

首先取得当前数据库连接的引用,查询语句从 jos_reviews 表中加载 idname quicktake 三列的所有行记录。所有记录都加载到变量 $rows 中,利用 rand() 函数在 $rows 中随机取出一行,$row 变量被赋予一个数组,数组包含一个元素,就是前面取出来的随机记录,把 $row[$i] 包含到一个数组里面是必要的,因为在输出的时候这是期望的格式。

保存文件并刷新浏览器,然后重复地刷新,如果运气够好的话,你会看到随机的出现单条的点评。


暂时不提供图片显示,请参考《Learning Joomla! extension development》 或者中文PDF版

类别:Joomla | 添加到搜藏 | 浏览() | 评论 (7)
 
最近读者:
 
网友评论:
1
2008年12月24日 星期三 09:48 | 回复
http://hi.baidu.com/andycai/blog/item/b40c1838dc4998f4b211c705.html 这里可以下载第一到第五章的PDF版
 
2
2009年02月12日 星期四 17:25 | 回复
看了下,学到很多 但是那本书的代码貌似有一些是错误的 我按照他所说的方法建立一个module,死活就显示不出数据。晕死
 
3
2009年02月12日 星期四 21:12 | 回复
书的例子都试过,没有问题的,你可以详细的说说你的操作,看看能不能帮你解决。
 
4
2009年02月16日 星期一 16:58 | 回复
回复Andy: 呵呵,测试过了,不是例子的问题 谢谢
 
5
2009年02月21日 星期六 09:21 | 回复
呵呵,有问题可以留言
 
6
2009年04月01日 星期三 11:35 | 回复
315224416@qq.com 我去下载它说文件被删除了, 能不能发一份到我邮箱啊,thank you very ...
 
7
2009年04月02日 星期四 10:05 | 回复
重新上传了,下载地址:http://rapidshare.de/files/46479251/joomla___25193___23637___24320___21457___65288___32763___35793___21069___20116___31456___65289_.pdf.html
 
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码: 请点击后输入四位验证码,字母不区分大小写
      

     

©2009 Baidu