首页 > php > xoops模块开发入门-Hello word

xoops模块开发入门-Hello word

2010年7月7日 亲亲宝宝 发表评论 阅读评论

我们学习制作的这个模块,目的是要向正在访问该模块的用户表示欢迎,现在先让我们把基本架构弄出来。

* 模块名: Greeter

* 模块目录:greeter

该模块必须能够:

* 它本身要能够在导航菜单中显示

* 支持多语言环境

* 能够向用户说“您好”

目录结构

骨架代码所创建好的目录结构看起来就像如下的样子:

XOOPS_ROOT/modules/greeter

–language

–english

–schinese_utf8 (注意utf8格式的中文使用的语言包)

       –templates

请注意:在以下的描述中,当给出一个目录名或文件名时,除非有明确地表述,否则它们都对应于 XOOPS_ROOT/modules/greeter 。

XOOPS 版本信息,非常重要

创建一个文件 /xoops_version.php 其程序代码内容如下:

<?php

// 版权信息,说明,等等……放在这里

$modversion[‘name’] = _MI_GREETER_NAME;

$modversion[‘version’] = 1.00;

$modversion[‘description’] = _MI_GREETER_DESC;

$modversion[‘credits’] = ”;

$modversion[‘author’] = ”;

$modversion[‘help’] = ‘help.html’;

$modversion[‘license’] = ‘GPL see LICENSE’;

$modversion[‘official’] = 0;

$modversion[‘image’] = ‘mypp.gif’;

$modversion[‘dirname’] = ‘greeter’;

// 管理

$modversion[‘hasAdmin’] = 0;

$modversion[‘adminmenu’] = ”;

// 菜单

$modversion[‘hasMain’] = 1;

// 模板

$modversion[‘templates’][1][‘file’] = ‘greeter_greet.html’;

$modversion[‘templates’][1][‘description’] = ‘To show a welcome menu’;

?>

说明:

_MI_ …是什么?

任何以 _MI_ 为前缀的词,都是在 /language/schinese_utf8/modinfo.php语言文件里面定义的。 我们马上会创建这个文件,但是现在,我们只要知道,这是模块信息,它将被及时显示在用户眼前,因此需要在语言文件里事先定义。

模板

模板(Templates)会在模块安装时被编译,而且保存在数据库中。 因此,你必须让系统知道你将会使用到的每个模板。

模块信息语言文件

编辑 /language/schinese_utf8/modinfo.php 而且将下列内容放入其中。

<?php

define(‘_MI_GREETER_NAME’, ‘中国问候’);

define(‘_MI_GREETER_DESC’, ‘ 中国式问候,你好,中国!.’);

?>

说明: 稍后我们将会把较多的信息加入这个文件里,但是它仍然是一样的语法。现在如果我们想要增加一个法语的语言文件,我们要做的只是创建 /language/french/modinfo.php,然后放上相同的定义,不过这些定义要改为法语。现在如果某人在法语的语系中使用此系统,Greeter会以他们的语言来显示它的名字和描述。

模块的头文件,以如下的内容,创建 /header.php :

<?php

require ‘../../mainfile.php’;

?>

最主要的文件,index.php,这个其实也非常容易:

<?php

require ‘header.php’;

$uname = !empty($xoopsUser) ? $xoopsUser->getVar(‘uname’) : _MD_GREETER_ANONYMOUS;

//我们必须在引用header之前,设置好Template:

$xoopsOption[‘template_main’] = ‘greeter_greet.html’;

//引用headers

require XOOPS_ROOT_PATH . ‘/header.php’;

$xoopsTpl->assign(‘greeting’, _MD_GREETER_GREETING);

$xoopsTpl->assign(‘uname’, $uname);

//引用footer

require XOOPS_ROOT_PATH . ‘/footer.php’;

?>

说明

   * $xoopsUser

当 /header.php 它的项目包含 ../../mainfile.php 时,很多变量和类就会自行产生。 $xoopsUser 就是其中的一个变量。 如果用户已经登录,用户名这个值赋给变量$xoopsUser,否则$xoopsUser仍是空的。因此,我们就可以得知用户的名字或者是游客(anonymous)。

_ MD_GREETER _ …  还要再一次定义语言文件,这些“_MD_ …”并不包含模块信息,它们是在 /language/schinese_utf8/main.php 这个文件里定义的,稍候我们会创建这个文件。   

* $xoopsTpl

这是另一个变量,当程序引用了 /header.php 时就自动产生了。它也是Smarty类。 在Smarty的速成课程中,他们定义 $xoopsTpl 变量为 $smarty。 它只是你在 $xoopsOption[‘template_main’] = ‘greeter_greet.html’模板中所创建的 Smarty类。

XOOPS_PATH . ‘/header.php’ 和 XOOPS_PATH . ‘/footer.php’

这只是 header 与 footer。在这里你要知道的重要一点是:

   1. 你必须将它们包含(include)进来

   2. 在还没把XOOPS_PATH . ‘/header.php’包含之前,你不能使用$xoopsTpl

   3. 所有$xoopsTpl操作必须在两个require语句之间完成

[编辑]/language/schinese_utf8/main.php

这个文件也很简单,和 /language/schinese/modinfo.php 差不多。 以下就是内容:

<?php

define(‘_MD_GREETER_ANONYMOUS’,’ 中国游客’);

define(‘_MD_GREETER_GREETING’,’ 你好’);

?>

[编辑]/templates/greeter_greet.html

这个文件是个真实的Smarty 模板文件。 它也很简单。

<p>

<{$greeting}> <{$uname}>

</p>

重要说明: 在 XOOPS 中,所有的Smart 程序代码的Smarty标签都是 <{…}> 而不是像Smartys速成课程中所说的 {…} 标签。 {…} 是无法在XOOPS里工作的。请牢记!

现在,<{$greeting}> 就从 /index.php里面的 $xoopsTpl->assign(‘greeting’, …); 获取已经定义好的值;<{$uname}> 也是一样的作用。

好了。我们已经完成使这个模块运行的所有必要工作。我们来个测试吧!按装模块前参见本站的Xoops的安装。你应该看见 中国问候 出现在你的导航菜单上。点击它,看到

你好 中国游客

如果是你自己登录的话,当然就是“你好 你的名字”。或者,如果没有登录,就显示“你好 中国游客”。

分类: php 标签: 2,867 次阅读
原文链接:http://www.wenhq.com/article/view_629.html
欢迎转载,请注明出处:亲亲宝宝
  1. 2010年7月15日00:17 | #1
  1. 本文目前尚无任何 trackbacks 和 pingbacks.