信息框
Jump to navigation
Jump to search
信息框是一个矩形区域,可以显示在某些页面上(仅为首页)。这些是由特定目录中的文件描述的。
框内容留给开发人员的想象力(图形、文本、表格、……),但是有一个基于报告的表格的框架。
创建新信息框
所有标准信息框存储于 htdocs/core/boxes 目录。
每框一个文件。
每个文件是一个类,继承于ModeleBoxes 类。
为创建新的信息框,你可以复制一个现存的信息框文件,重命名,例如 box_myownbox.php 然后修改内容以匹配新文件名。
然后定义你想要显示于信息框内的信息。
如果计划将信息框分发给其他用户,则必须创建模块并将盒文件存储在模块内。
- 至Module development页学习如何创建模块。
- 创建信息框文件到 htdocs/mymodule/core/boxes/
- 在模块文件内加入以下代码:
$this->boxes = array(
0 => array(
'file' => 'box_myownbox@mymodule',
'note' => 'My notes',
'enabledbydefaulton' => 'Home'
)
// You can declare as much boxes as you want by simply incrementing the index.
);
- 为发布,打包包含您的信息框的模块(参见模块开发页)。
激活信息框
为激活信息框,至页面Home - Setup - Boxes,点击激活
激活后,会在相关页面显示信息框。
编辑信息框的内容
最简单的HelloWorld
- 首先,先建立一个模块,名为Helloworld,参见模块开发。
- 在模块文件内加入以下代码:
$this->boxes = array(
0 => array(
'file' => 'helloworldbox@helloworld',
'note' => 'My notes',
'enabledbydefaulton' => 'Home'
)
// You can declare as much boxes as you want by simply incrementing the index.
);
- 复制一个信息框文件并重命名为 helloworld\core\boxes\helloworldbox.php
- 修改文件内容,
$this->info_box_head = array('text' => $langs->trans("Helloworld",$max));
- 激活模块及信息框。
如果在主页上,这个信息框不可见,在右上角点击下拉菜单来选择该信息框。
可以修改语言文件,来改变标显示的内容。
该框如下图所示。
修改信息框的内容
标题头
标题头的内容,可以修改信息框的类文件中,loadBox方法里面的一个数组的内容来修改内容。
$this->info_box_head['text']="";
尝试在该方法的最后一行,修改该数组的内容为"Hello My World!"
下面修改标题头的颜色、字体大小、加入链接:
$this->info_box_head['text']='<a href="http://www.ivnun.cn" target = "_blank"><span style="color : RED;font-size:24px;">Hello My World!</span></a>';
请按照HTML语法来修改。
表格内容
表格内容由以下语句来确定的:
$this->info_box_contents[$line][] = array(
'td' => 'class="right"',
'text' => dol_print_date($datem, "day")
);
在loadBox方法里面,通过$line来判断行数,通过While语句来控制循环,通过$db的query方法取得条目数$num来控制条数。
$sql="SQL语句";
$result = $db->query($sql);
if ($result){
$num = $db->num_rows($result);
$line = 0;.
$num=5; // 强制显示5行
while ($line < $num){
$this->info_box_contents[$line][] = array(
'td' => 'class="left"',
'text' => $line,
);
$line++;
}
}
else {
$this->info_box_contents[0][0] = array(
'td' => 'align="left" class="nohover opacitymedium"',
'text' => $langs->trans("ReadPermissionNotAllowed")
);
}
显示如下图。
信息框同一行中增加一列,只要增加数组内容即可。每列的格式、位置等,由'td'来决定的。
信息框显示$user的值
function loadBox($max=5)
{
global $user, $langs, $db, $conf;
$langs->load("boxes");
$this->max=$max;
$this->info_box_head['text']='<a href="http://www.ivnun.cn" target = "_blank"><span style="color : RED;font-size:18px;">显示$user的值</span></a>';
$result = object_array($user);
$line = 0;
foreach ($result as $key => $val){
$this->info_box_contents[$line][] = array(
'td' => 'class="left"',
'text' =>$key.'-->'. $val,
);
$line++;
}
}
其中用到的函数。
function object_array($array) {
if(is_object($array)) {
$array = (array)$array;
}
if(is_array($array)) {
foreach($array as $key=>$value) {
$array[$key] = object_array($value);
}
}
return $array;
}
显示如下图: