详解discuz 之 *_ctrl_menu

默认的html中的select标签默认的样式太一般了。discuz提供了一个自动将select转换成一个js的select函数。
原理是将select隐藏,在原位置生成一个标签,对应的,当点击时,显示对应生成的

形式的新列表。这个看起来就好看多啦。


方法原js:staticjscommon.js
 
方法名:function simulateSelect(selectId, widthvalue)
 

只需将当前的select的id放入该函数。如:simulateSelect(‘types’),就生成了。

显示和隐藏菜单的方法是:function showMenu(v)

隐藏菜单的方法是:function hideMenu(attr, mtype)

这两个方法主要通过JSMENU[‘active’] 进行关联(也就是说可以多个),在显示时,插入数据,在不显示时,再从集合中删除数据。

如何实现动态的显示这个菜单插件?

因为生成只要套方法,是很容易的。

但是动态生成时,得注意几个东西。

1.discuz中,该东西是以一次执行为前提的。即是,一个select只能执行一次,多次执行转换是不成功的。

2.注要问题是相关的id重复,导致相关的事件对象异常。

知道原因的问题,现在好处理啦。

只要在执行前将原对象抹杀,数据清除就ok了。

如有不懂。可以查看martoo.cn的发贴。

转发请注明出处http://blog.martoo.cn
如有漏缺,请联系我 QQ 243008827

主题分类

一、表结构
二、设置
三、数据提取
1、$_G[‘forum’][threadtypes][types](当前模块中类型的集合)
2、原数据获取
//获取当前的板块的数据
$forum = C::t(‘forum_forum’)->fetch_info_by_fid($fid);
//将序列化后的主题类型进行反序列化。即得到了对应的该板块的主题类型
$types=!empty($forum[‘threadtypes’]) ? dunserialize($forum[$key]) : array();
四、代码剖析

转发请注明出处http://blog.martoo.cn
如有漏缺,请联系我 QQ 243008827

discuz中ajax的简单使用

discuz 做为一个顶级的php开源论坛,对ajax的支持是肯定的。
封装Ajax的原始对象在/static/js/common.js 中

函数名为:

/**
*
* recvType 请求的类型
* waitId 和进行等待提示的目标id
* return
*/
function Ajax(recvType, waitId)

声明一个ajax对象
var x = new Ajax("HTML");
执行get方法。类型jquery的操作。
x.get(url, function (s) {

});

 

转发请注明出处http://blog.martoo.cn
如有漏缺,请联系我 QQ 243008827