您的位置:首页 > 其它

如何开发Discuz插件(二):文库插件

2014-07-24 14:40 260 查看
上次我们讨论了如何用插件在现有网页上添加内容(链接),现在我们接着讨论如何加新网页和如何加菜单项来连上这个新网页。作为示范我们要做个网页让用户上传文件,并能找到已经上传的文件。我们称这个功能为文库,类似于相册。 下面是效果图:




我们先介绍一下这个功能的大致框架: 下面是实现这功能所需加入的文件:




这个插件要求在source/plugin加一个子文件夹。所有与这个插件有关的文件都放在这里面。 总共就三个文件,一个PHP文件files.inc.php包含主要功能代码,一个HTML文件files.htm提供显示模板。最后一个HTML文件index.htm是空白的,按PHP的惯例用来防止用户直接浏览文件夹内容。

第一个文件是功能的入口,我们将在设置时将它与一个新的菜单项相连。第二个文件由第一个文件导入。

1) files.inc.php




2) files.htm




注意我们这里是在模板里加公共的顶部和底部。我们也可以在PHP文件里用下面的代码加
include template('common/header');


最后我们在管理中心里通过设置可以添加让用户使用这功能所需的菜单项。

1) 应用->插件页里的插件列表旁点击设计新插件。填写新插件的信息。注意新插件的唯一标识符(identifier)必须是我们新建的文件夹的名字(在这里的示范中是imyoona_files)。然后添加所用到的模块信息。我们这里只需在主导航栏里添加一个菜单项,所以模块类型是主导航项目。程序模块名是前面我们加的第一个文件的名字(files),链接名称是文库。

2)在界面->导航设置->主导航里设置新菜单项在主导航里的位置:显示顺序, 这里我们把它设为20,所以它将出现在现有主导航的末尾。

启动插件后,我们就可以在门户页上看到新添加的菜单项。



点击这个菜单项就到了新的一个网页,这个网页有通常的顶部和底部。虽然里面几乎没有内容,但是可以看到我们第二个文件里echo的文字(Test)。




下面我们介绍本插件的具体功能。 我们的这个功能分三个组成部分:

1)用户选择和上传新文件的界面

2)在服务器端得到并储存上传后的文件

3)用户已上传文件的列表,点击可打开文件

1)用户选择和上传新文件的界面

我们用最简单的HTML内置的上传功能:在模板里加入




2)在服务器端得到并储存上传后的文件

我们得决定储存文件的地方,在这里我们在data文件夹里添加一个uploadfiles子夹,然后在它的下面给每个用户按他们的用户UID建一个子夹储存他们各自上传的文件。









3)用户已上传文件的列表,点击可打开文件









注记:

1) 其实我觉得这个功能应该出现在个人空间的主导航里,但这是由装扮空间里的选项决定的。而那里的选项是固定的,要这么做必须改变源码。template\default\home\spacecp_index.htm 165行$_GET['op'] == 'editnv'后

参考文献:

1)Discuz!模板解析语法 http://dev.discuz.org/wiki/?title=Discuz!%E6%A8%A1%E6%9D%BF%E8%A7%A3%E6%9E%90%E8%AF%AD%E6%B3%95
2)php file upload introduction http://www.w3schools.com/PHP/php_file_upload.asp
3)php file list in a directory http://www.w3schools.com/php/func_directory_scandir.asp
    http://stackoverflow.com/questions/11886712/how-would-i-get-scandir-to-echo-links-to-files
4)php how to delete a file http://stackoverflow.com/questions/2371408/how-to-delete-a-file-via-php
5) php create directory if not exists http://www.hotscripts.com/forums/php/25915-solved-check-if-directory-exists-if-not-create.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  discuz 插件