惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

C
CERT Recently Published Vulnerability Notes
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
WordPress大学
WordPress大学
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
V
Visual Studio Blog
Stack Overflow Blog
Stack Overflow Blog
aimingoo的专栏
aimingoo的专栏
C
Check Point Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
T
Tor Project blog
P
Proofpoint News Feed
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Latest news
Latest news
L
LINUX DO - 热门话题
罗磊的独立博客
T
Tenable Blog
The Hacker News
The Hacker News
美团技术团队
N
Netflix TechBlog - Medium
V
Vulnerabilities – Threatpost
阮一峰的网络日志
阮一峰的网络日志
Last Week in AI
Last Week in AI
博客园 - 司徒正美
Jina AI
Jina AI
Cyberwarzone
Cyberwarzone
云风的 BLOG
云风的 BLOG
S
Secure Thoughts
Cloudbric
Cloudbric
S
Security @ Cisco Blogs
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Microsoft Security Blog
Microsoft Security Blog
Spread Privacy
Spread Privacy
U
Unit 42
雷峰网
雷峰网
C
CXSECURITY Database RSS Feed - CXSecurity.com
Webroot Blog
Webroot Blog
爱范儿
爱范儿
博客园 - 【当耐特】
Know Your Adversary
Know Your Adversary
P
Privacy International News Feed
P
Palo Alto Networks Blog
Google Online Security Blog
Google Online Security Blog
The Last Watchdog
The Last Watchdog
博客园 - 聂微东
Help Net Security
Help Net Security
Hacker News: Ask HN
Hacker News: Ask HN
F
Full Disclosure
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
S
Security Affairs
Project Zero
Project Zero

博客园 - xxp

翻译:Android程序开发入门 php,mysql下中文编码解决方案 asp.net中使用ajax中的三种方式 翻译:xoops搜索功能的使用 发布新软件:史上最轻量级的ORM--EasyDBOperation XOOPS模块开发快速入门中文翻译--索引 XOOPS模块开发快速入门中文翻译(十) XOOPS模块开发快速入门中文翻译(九) XOOPS模块开发快速入门中文翻译(八) XOOPS模块开发快速入门中文翻译(七) XOOPS模块开发快速入门中文翻译(六) XOOPS模块开发快速入门中文翻译(五) XOOPS模块开发快速入门中文翻译(四) XOOPS模块开发快速入门中文翻译(三) XOOPS模块开发快速入门中文翻译(一) 简单的网页内容采集器(C#) C#网络编程学习笔记1 100%男性倾向? 55 为什么? 学习XOOPS的记录
XOOPS模块开发快速入门中文翻译(二)
xxp · 2008-04-17 · via 博客园 - xxp

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

使用 index.php

明白了 xoops_version 吧,现在就可以安装模块了!

当模块安装好后,单击主菜单的“tutorial”,可以看到一个空白的页面。下载打开index.php.

<?php
// Tutorial
// Created by KaotiK
require('http://www.cnblogs.com/mainfile.php');
require(XOOPS_ROOT_PATH.'/header.php');

require(XOOPS_ROOT_PATH.'/footer.php');
?>

这里有3行新的语句。我们的代码就要写在"...header" "....footer"之间。我们来测试一下,输入以下代码:

<?php
// Tutorial
// Created by KaotiK
require('http://www.cnblogs.com/mainfile.php');
require(XOOPS_ROOT_PATH.'/header.php');

echo "Hello world!";

require(XOOPS_ROOT_PATH.'/footer.php');
?>

好,现在如果单击主菜单的 "tutorial" 就会看到 "Hello world!"了!

创建一个列表

这一步开始,我们替代掉刚才一个测试,来做一个真正的列表!

将以下代码:

替换为

$member_handler =& xoops_gethandler('member');
$foundusers =& $member_handler->getUsers();
foreach (array_keys($foundusers) as $j) {
echo $foundusers[$j]->getVar("uname").'<br>';
}

在主菜单上单击tutorial,可以看到目前在线用户的列表。好,现在我们来逐行看代码。第一行得到了一个关于用户的句柄(可以理解为关于用户的一个操作函数集合),并且这个句柄赋给 $member_handler. 第二行抓取到所有的用户,并存放到$foundusers这个数组变量里面.然后用 foreach来循环所有的用户.
警告: 这个例子只适合于用户比较少的系统。

$member_handler =& xoops_gethandler('member');
$foundusers =& $member_handler->getUsers();
foreach (array_keys($foundusers) as $j) {
//echo $foundusers[$j]->getVar("uname").'<br>';
print_r($foundusers[$j]);
echo '<br><br><br>';
}

这个函数显示了用户的所有变量,看起来是一个很长的列表。

继续,我们要格式化这个列表,显示更多的信息。

首先,创建一个表头。这里用的方法只是适合“快速入门”的,但是并不一定是最正确的方法。之后,我们会讲述怎么用一个更科学的办法。.
为了避免你混淆,我展示一下index.php

<?php
// Tutorial
// Created by KaotiK
require('http://www.cnblogs.com/mainfile.php');
require(XOOPS_ROOT_PATH.'/header.php');
?>
<table width="100" border="0">
<tr>
<td bgcolor="#99CC99">Name</td>
<td bgcolor="#66CC99">Email</td>
</tr>
</table>
<?php
require(XOOPS_ROOT_PATH.'/footer.php');
?>

现在在主菜单上点击tutorial 你会看到一个含有Name Email的表头. 现在,我们给这个表一些数据。

<?php
// Tutorial
// Created by KaotiK
require('http://www.cnblogs.com/mainfile.php');
require(XOOPS_ROOT_PATH.'/header.php');
?>
<table width="100" border="0">
<tr>
<td bgcolor="#99CC99">Name</td>
<td bgcolor="#66CC99">Email</td>
</tr>
<?php
$member_handler =& xoops_gethandler('member');
$foundusers =& $member_handler->getUsers();
foreach (array_keys($foundusers) as $j) {
echo '<tr><td>'.$foundusers[$j]->getVar("uname").'</td><td>'.$foundusers[$j]->getVar("email").'</td></tr>';
}
?>
</table>
<?php
require(XOOPS_ROOT_PATH.'/footer.php');
?>

在主菜单上点击tutorial ,可以看到含有“用户名”、“邮箱”两列的表.。不过这个代码看起来很傻,我们改变一下:

<?php
// Tutorial
// Created by KaotiK
require('http://www.cnblogs.com/mainfile.php');
require(XOOPS_ROOT_PATH.'/header.php');

echo '<table width="100" border="0">
<tr>
<td bgcolor="#99CC99">Name</td>
<td bgcolor="#66CC99">Email</td>
</tr>';
$member_handler =& xoops_gethandler('member');
$foundusers =& $member_handler->getUsers();
foreach (array_keys($foundusers) as $j) {
echo '<tr><td>'.$foundusers[$j]->getVar("uname").'</td><td>'.$foundusers[$j]->getVar("email").'</td></tr>';
}
echo '</table>';
require(XOOPS_ROOT_PATH.'/footer.php');
?>

好多了吧!一样的结果,但是代码看起来干净很多。现在我们要应用更多的xoops标准。首先,采用语言文件来替换nameemail。创建一个文件夹,命名为language (注意: 文件夹名称必须为小写.)。在这个文件夹中再创建子文件夹english. english 文件夹中创建文件main.php. main.php里面输入:

<?php
define('TT_NAME','Name');
define('TT_EMAIL','Email');
?>

在这个文件夹中创建文件 modinfo.php ,输入:

为什么要创建2个常量来代替文本呢?这样是为了支持多语言。打开index.php  ,将代码改为:

<?php
// Tutorial
// Created by KaotiK
require('http://www.cnblogs.com/mainfile.php');
require(XOOPS_ROOT_PATH.'/header.php');

echo '<table width="100" border="0">
<tr>
<td bgcolor="#99CC99">
'.TT_NAME.'</td>
<td bgcolor="#66CC99">
'.TT_EMAIL.'</td>
</tr>';
$member_handler =& xoops_gethandler('member');
$foundusers =& $member_handler->getUsers();
foreach (array_keys($foundusers) as $j) {
echo '<tr><td>'.$foundusers[$j]->getVar("uname").'</td><td>'.$foundusers[$j]->getVar("email").'</td></tr>';
}
echo '</table>';
require(XOOPS_ROOT_PATH.'/footer.php');
?>

很好,现在,我们在模块中使用了语言文件.