ImpressPages/区域定制

来自站长百科
跳转至: 导航、​ 搜索

ImpressPages | 入门使用 | 定制开发

本条目主要通过一个实例来讲解区域定制的操作过程。

在该实例中,我们通过自定义一个区域来显示从数据库中获得数据,我们将在站点中新建几个新的页面,然后完全控制他们。他们将不会在后台的Menu Management(菜单管理)中进行管理,而我们的自定义的区域将会告诉系统有多少页面以及页面的内容是什么。

在阅读本实例前,请先阅读下面两个条目:

实例最终效果[ ]

根据从数据库中获得的数据自动生成的页面:

ImpressPages区域定制

ImpressPages区域定制

实例中用的源码[ ]

请下载这个源码,然后在阅读本教程的过程中分析了解它,通过源码中的readme.txt来了解该源码的安装,然后通过下面的步骤来了解这些源码时怎样一步步被构建出来的。

源码

操作步骤[ ]

  • 第一步,安装“address book”示例插件

想要显示从数据库中获得的数据记录,首先数据库中需要具有这些记录。为了简化这一操作,我们使用了AddressBook这个插件。这个插件将会在数据库中创建一个表,以及读取、更新、删除等功能。

  • 第二步,创建“address book zone”插件sceleton

我们已经安装了AddressBook插件了,现在我们需要创建一个新的插件来将数据库中的记录注册成系统中的页面。我们将该插件称之为AddressBook zone。所以,我们首先需要为该插件创建一个基本的文件目录,然后安装它。这个与插件开发中的例子的操作时一直的,只要将其中的hello_world替换成address_book_zone即可。


  • 第三步,创建一个类,用来读取数据库

AddressBook插件提供了管理数据库记录的界面,但我们仍然无法通过PHP代码来访问数据,所以我们在Address book zone中创建一个db.php类,该类有两个方法:

getContacts -读取所有记录
getContact - 根据ID来读取某一条记录


该类中没有更新以及删除操作,因为我们并不需要通过PHP来进行这些操作。

db.php

  • 第四步,创建模板文件

我们需要两个视图:

所有联系地址的列表
一个联系地址的详细信息

该模板类中包含两个函数,一个用来显示一个记录,里一个用来显示所有记录的列表。

template.php

  • 第五步,创建一个根元素类

在ImpressPages CMS的所有页面都应该扩展一般的“Element”类,因此我们创建一个RootElement类,主要用来负责打印所有记录的列表。可以在下面将要提到的zone类中了解RootElenment类是怎样被使用的。

root_element.php

  • 第六步,创建一个常用元素类

该类将会生成每个记录的类容,与RootElement类一样,也是一般的Element类的扩展,也可以在下面将要提到的zone类中了解RootElenment类是怎样被使用的。

element.php

  • 第七步,创建区域与类

Zone类是本实例中主要的也是最重要的一个文件,区域也是根据该类来生成页面的的,每个页面就是elemnet类扩展而来的一个对象,我们具有两个这样的类:

RootElement--用来显示所有记录的列表;
Element--用来显示一个记录;

在这里我们的Zone类是一般的Zone类的扩展,具有三个函数:

getElemnets--通过具体的准则来获取一个元素数组,通常用来生成一个菜单;
getElement--通过具体的ID获取某一个元素;
findElement--通过具体的url来找到合适的元素以及获取变量;

zone.php

  • 第八步,向站点中的区域列表添加我们新建的类

目前我们已经具有了类“Zone”,可以从数据库中获取数据,也可以创建适当的“Element”对象,并且向站点提供这些信息。但是我们还需要告诉系统怎样使用这个类。

登录到管理员控制面板,来到Developer->Zones(开发人员->区域)标签页面,然后点击页面上的New Record(新建记录),填写下面信息:

Name--名称,也就是你新建的区域的名称,根据个人喜好或者需要来填写;
Key--关键字,一个将会在PHP代码中使用到的字符串,用来区别该区域(不能包含特殊字符);
Template--选择模板文件(默认的是main.php);
Associated module group--相关的模块组,填写example
Associated module--相关模块,填写address_book_zone

这一操作将会在系统中注册这个新的“zone”类,现在它就可以在代码中使用了,继续向下看。

  • 第九步,将我们自定义的区域集成到主题中

打开主题目录中的main.php模板文件,然后添加下行代码,可以根据个人喜好来决定代码的放置位置:

 <?php       
  echo '<a href="'.$site->generateUrl(null, 'custom_zone').'">AddressBook records</a>'; 
 ?> 

该行代码将会在我们新建的区域下生成一个链接。

系统工作流程[ ]

当我们点击上述第九步中生成的链接后,系统将执行下面这些操作:

  • ImpressPages将被请求一个新的页面;
  • ImpressPages检查被请求的页面url,然后发现是属于区域custom_zone(即我们自定义的区域)的;
  • ImpressPages找到区域列表中的custom_zone区域,然后寻找与之相关的模块(在本例中就是example/address_book_zone);
  • ImpressPages通过文件examples/address_book_zone/zone.php来创建对象,然后他执行方法函数:findElement($urlVars, $getVars),该方法将会返回一个相应的RootElement类的页面对象;
  • ImpressPages执行RootElement对象中的generateContent 函数,然后输出数据;

然后页面中就会显示如下:

ImpressPages区域定制

这个是显示一个记录列表的工作流程,当显示某一个记录的详细信息时,工作流程也是这样的,只不过将上面的RootElement类替换成了Element,返回数据的方法也变成findElement

参考来源[ ]

ImpressPages使用手册导航

入门使用:

文件结构 | 安装 | 升级 | 站点迁移 | 主题 | URL结构 | 配置文件 | 区域和页面 | Cron设置 | 常用任务

定制开发:

本地化 | 区域定制 | 用户管理 | 插件开发 | Ajax使用 | jQuery替代标准函数库