由于1.51版本的程序,在新安装插件后,多加了一个注册机制,所谓注册,就是利用数据库中的admin_pages表,将插件文件和数据库中的配置信息联结起来,所以如果在编写过程中没有把插件注册到后台,后台是不会显示相关选项的。
解决这个问题的办法是在后台自己手动注册。
例如:我新安装了一个zencart新闻模块,可是安装完之后,后台不显示News Box Manager这个选项。那么该如何做呢?
1,打开文件admin\includes\boxes\extra_boxes文件夹,寻找类似news_box_manager_tools_dhtml.php的文件, 如果存在,则打开文件后可以看到 BOX_NEWS_BOX_MANAGER 和 FILENAME_NEWS_BOX_MANAGER 这两个常量
2,后台Admin Access Management(权限管理) — Admin Page Registration(管理注册页面) ,接下来就填写一些东西。
Page Key(页面编码):这里只是填写注册页面的名称,随便取个名字,不过这个名字在数据表admin_pages中是唯一的,例如:mynewsbox
Page Name(页面名称):这里填写上面所看到的的BOX_NEWS_BOX_MANAGER(该常量要以BOX_开头,易区分,用于命名插件名称,可以自己取名)
Page Filename(页面文件名):这里填写上面所看到的FILENAME_NEWS_BOX_MANAGER(该常量要以FILENAME_开头,易区分,用于指定插件的文件,插件文件在admin\根目录中)
Page Parameters(页面参数):留空
Menu(菜单):你想将新闻模块显示在哪个菜单下就选哪个
Display on Menu?(显示在该菜单下吗?):当然,这个选中
Sort Order(排序):该模块在下拉菜单中的排序,就填20吧
然后点击按钮就可以了。
3.如果admin\includes\boxes\extra_boxes文件夹中不存在上述的文件,
———————–
zencart后台模块开发注意:
要在后台的指定栏目下加入一个模块,需要在几个位置加入文件:
文件一:/admin/includes/boxes/exra_boxes/加入一个文件,文件命名规则是:模块名_栏目名_dhtml.php,规则命名主要是为了区分,一目了然,此文件的内容是一个数组$za_contents[],其值是记录你的模块的名称(在菜单中体现),和模块链接的页面地址,文件内容如下:
例1:
$za_contents[] = array(‘text’ => BOX_CATALOG_NEWS_AUTHORS, ‘link’ => zen_href_link(FILENAME_NEWS_AUTHORS, ”, ‘NONSSL’));
上述常量BOX_CATALOG_NEWS_AUTHORS对应的页面链接文件是FILENAME_NEWS_AUTHORS常量指定的文件
$za_contents[] = array(‘text’ => BOX_CONFIGURATION_NEWS_BOX_MANAGER, ‘link’ => zen_href_link(FILENAME_CONFIGURATION, ”, ‘NONSSL’));
上述常量BOX_CONFIGURATION_NEWS_BOX_MANAGER对应的页面链接文件是FILENAME_CONFIGURATION常量指定的文件,注意:FILENAME_CONFIGURATION常量对应的页面是configuration.php页面,系统自带常量,无需再定义,用于显示数据库表configuration中定义的插件配置选项。
文件二:/admin/includes/extra_datafiles/加入一个文件,此文件命名无限制(一般直接用模块名进行命名)
此文件的内容是定义两个常量,即上述文件一中数组$za_contents[]内定义的两个常量的具体的值,文件内容如下
例2:
define(‘BOX_CONFIGURATION_NEWS_BOX_MANAGER’,’News Manage’);
常量BOX_CONFIGURATION_NEWS_BOX_MANAGER定义的值是 News Manage,在菜单下面显示出来就是 News Manage
注意:在上述例1中的常量FILENAME_NEWS_AUTHORS不是系统自带常量,所以需要定义,该常量对应的是一个页面文件,定义如下:
define(‘FILENAME_NEWS_AUTHORS’, ‘news_authors.php’);定义在文件二中。
文件三:在/admin/加入一个文件,此文件是你的模块主文件
当然还可以在/admin/languages/下加入模块相应的语言文件,不过我个人开发的模块只是个人使用因此没使用语言文件,而是把语言文字直接写在模块主文件中
