Surance Center

XOOPS模块开发快速入门中文翻译(九)

    由于这两天一直研究XOOPS的模块,所以找到了这篇很好的模块开发快速入门。
看了以后,就兴致勃勃的来开发模块了,可是开发的过程中遇到一些问题。
应该是我看的太快了,要学而时习之啊。因此翻译在这里。
==============
作者:Surance Yin
邮箱:Suranceyin@yahoo.com.cn
主页:http://www.fltek.com.cn
=================

第四章――xoops区块

Part 1 Building a simple module
Part 2 - using Smarty templates in a module
Part 3 - Building an AJAX module

Xoops中,区块是一个非常重要的概念, 不过开发区块并不是很容易,尤其是options,所以我写了这个教程。

下载第三章已经完成的模块


Completed Module from part 3

一个xoops区块包含2部分:
1- 一个php 函数,用来控制区块内容
2- 一个smarty模板,用来控制区块的显示.
以下是 xoops_version.php 中的定义,我们从这里讲起

第一步- 设置 xoops_version.php
打开 tutorial/xoops_version.php. 在?>之前输入

// Blocks
$modversion['blocks'][1]['file'] = "tutorial_block.php";
$modversion['blocks'][1]['name'] = 'Block for Tutorial';
$modversion['blocks'][1]['description'] = 'This is a Block for the tutorial module';
$modversion['blocks'][1]['show_func'] = "tut_blockList";
$modversion['blocks'][1]['template'] = 'tutorial_block.html';

$modversion['blocks'][1]['file'] = "tutorial_block.php";第一行告诉xoops 那个文件来控制区块内容. 1个文件可以有很多个函数。我习惯把所有的函数都放在同一个文件里面,除非函数太庞大了。这样的话,可以很方便的通过文件来找函数。
$modversion['blocks'][1]['name'] = 'Block for Tutorial';这里是区块的名称。最好采用语言文件来定义这些东西,不过为了简单起见,我直接写在这里了。
$modversion['blocks'][1]['description'] = 'This is a Block for the tutorial module';非常容易明白,这里是区块的描述。会显示在区块管理界面的。
$modversion['blocks'][1]['show_func'] = "tut_blockList";这里是用来控制区块的内容的函数名称。我的经验是,尽量在函数名称前面,加上区块名称前缀,这样不会和xoops自带的函数混淆。我以前出现过这样的问题,你也要提起注意哦.
$modversion['blocks'][1]['template'] = 'tutorial_block.html';这里是区块用到的 smarty 模板。


小贴士
当创建一个模块的时候, xoops_version.php中的数字都是这样的:

// Templates
$modversion['templates'][1]['file'] = 'tut_form.html';
$modversion['templates'][1]['description'] = '';
$modversion['templates'][2]['file'] = 'tut_client_list.html';
$modversion['templates'][2]['description'] = '';
$modversion['templates'][3]['file'] = 'tut_main.html';
$modversion['templates'][3]['description'] = '';

如果只有两三个模板,数字的控制还相对容易,但是如果有40多个的时候,控制数字就成了一个非常繁琐的工作。怎么解决这个问题呢?很简单,使用一个计数变量。

// Templates
$i=1;
$modversion['templates'][$i]['file'] = 'tut_form.html';
$modversion['templates'][$i]['description'] = '';
$i++;
$modversion['templates'][$i]['file'] = 'tut_client_list.html';
$modversion['templates'][$i]['description'] = '';
$i++;
$modversion['templates'][$i]['file'] = 'tut_main.html';
$modversion['templates'][$i]['description'] = '';
$i++;

这样就可以很方便的创建模板了,不用担心序号了。因为变量$i负责计数。它从1开始,然后每次加1


第二步- 创建必须的文件
创建2个文件夹:
tutorial/blocks
tutorial/templates/blocks
tutorial/blocks中,创建一个文件tutorial_block.php ,输入以下代码:

<?php

function tut_blockList(){
$block=array();
$block['mytext']="Hello world! This is my new Block!";
return $block;
}

?>

注意事项:

  • 这个函数必须返回一个名为 $block的变量
  • $block必须为一个数组.
  • 可以向这个数组内放任何东西,包括另外一个关联数组。
  • 区块可以在模块之外的地方调用,因此如果你包含了其他的文件,务必保证区块可以知道被包含文件的确切位置。


tutorial/templates/blocks创建一个文件tutorial_block.html ,输入以下代码

<{$block.mytext}>

重新安装一下这个模块,就可以在区块管理页面中看到 'Block for Tutorial'这个区块了,使它可见,然后到首页去看一下效果。.

恭喜你,已经创建了第一个区块!

第三步- 创建options(参数)

这个机制可以让我们创建更加灵活的区块。
打开 tutorial/xoops_version.php输入如下红色的内容:

// Blocks
$modversion['blocks'][1]['file'] = "tutorial_block.php";
$modversion['blocks'][1]['name'] = 'Block for Tutorial';
$modversion['blocks'][1]['description'] = 'This is a Block for the tutorial module';
$modversion['blocks'][1]['show_func'] = "tut_blockList";
$modversion['blocks'][1]['template'] = 'tutorial_block.html';
$modversion['blocks'][1]['edit_func'] = "tut_blockList_edit";
$modversion['blocks'][1]['options'] = 'Hello|1';

第一行告诉Xoops 区块的编辑函数是什么。这个函数必须也在tutorial_block.php中。第二行指定了参数默认值。这个区块中,有2个 options, 默认值分别为 "Hello" 和 "1". 采用'|'分隔.

打开 tutorial/blocks/tutorial_block.php

Replace all code with this:

<?php

function tut_blockList($options){
$block=array();
$block['textOne']=$options[0];
$block['textTwo']=$options[1];

return $block;
}

function tut_blockList_edit($options){
$form = "Option 1: <input type='text' size='9' name='options[0]' value='$options[0]' />";
$form .= "<br />";
$form .= "Option 2: <input type='text' size='1' name='options[1]' value='$options[1]' />";
$form .= "<br />";
return $form;
}

?>

现在创建了一个新的函数 (tut_blockList_edit) ,这个函数用来设置区块。函数的声明表明 tut_blockList 它接受xoops传过来的参数 ($options)
注意事项

  • 这个函数必须返回一个叫做$form的变量.
  • $form必须是一个字符串,而不是数组。
  • 可以有多个参数。
  • Xoops 会自行存储这些参数到xoops的数据库,所以你不用担心保存、更新这些参数的值。
  • $form中必须有参数命名的表单内容.
  • options(参数)必须从0开始,比如 name='options[0]'.

打开 tutorial/templates/blocks/tutorial_block.html输入

<p>My First option is: <{$block.textOne}></p>
<p>My Second option is: <{$block.textTwo}></p>

好,为了让参数正常运行,我们需要重新安装这个模块。
重新安装后,设置区块可见,这首页,可以看到2个参数,一个是'Hello' ,另一个是 '1'. 从后台改变这2个参数,会发现首页也会跟着改变

哈!成功了!

这里是完成后的文件。


Completed Module from part 4

Part 5 - Guidlines for Module Development

posted @ 2008-04-19 10:10  xxp  阅读(1021)  评论(1编辑  收藏  举报
Surance Center