*************************************************
** 本教程基于版本:Discuz! X 2.0 **
*************************************************
我们经常会在论坛上看到很多人分享自已做好了的diy的xml ,此时我们可以拿来导入到我们自已的站点使用,在导入时程序是怎么个流程的我们来了解一下,
我们使用有diy权限的管理员帐号,打开进入 diy 界面时, 右上角保存有一个向下的按纽
我们点击 该按纽下的导入 此时该导入链接的onclick 属性- onclick="drag.openFrameImport();$('button_more_menu').style.display='none';return false;"
复制代码 执行 drag.openFrameImport(); 从 ./static/js/portal_diy.js 从 openFrameImport 方法可以看到- openFrameImport : function (type) {
- type = type || 0;
- showWindow('showimport','portal.php?mod=portalcp&ac=diy&op=import&tpl='+document.diyform.template.value+'&type='+type, 'get');
- }
复制代码 它使用 showWindow 打开了 'portal.php?mod=portalcp&ac=diy&op=import&tpl='+document.diyform.template.value+'&type='+type 导入的界面,其所加载的模块是 ./template/default/portal/portalcp_diy.htm
我们选择现成的 diy 的 xml 文件,点击导入- <form name="frameimport" id="frameimport" enctype="multipart/form-data" method="post" autocomplete="off" action="portal.php?mod=portalcp&ac=diy&op=import" onsubmit="ajaxpost('frameimport','return_$_G[gp_handlekey]','','onerror',$('frameimportbutton'));">
复制代码 程序将我们所选择的 xml 提交到 portal.php?mod=portalcp&ac=diy&op=import 地址,即程序最终处理的模块是 ./source/include/portalcp/portalcp_diy.php
该程序对提交过来的 xml 文件进行处理上传到附件的临时目录 ./data/attachment/temp/ 下 .attach 后缀名的文件
然后使用 import_diy (在 ./source/funciton/function_portalcp.php 文件中查看该函数) 函数对该 .attach 文件进行数据分析处理展示
到这里导入和展示基本完成,此时 点击右上角的 保存按纽- <a href="javascript:;" onclick="javascript:spaceDiy.save();return false;">保存</a>
复制代码 程序使用 js 的 spaceDiy.save() 的方法提交数据到 portal.php?mod=portalcp&ac=diy
程序 ./source/include/portalcp/portalcp_diy.php 就使用 save_diy_data 等函数对diy 的数据进行入库 更新到缓存等
|