discuz! X3.2 自定义后台门户模块模板里的标签
这里只提供对源码的修改, 至于插件, 暂不考虑...
想在首页里展示一些自定义字段的内容, 奈何dz无此功能, 无奈去扒源码.
首先切到 source 文件夹下
1. 在 class/block/portal/block_article.php 此文件里, 找到 getdata 方法, 在大约 305 行, 找到 $list 数组, 对 'fields' 元素添加字段
$list[] = array(
>--->--->--->---'id' => $data['aid'],
>--->--->--->---'idtype' => 'aid',
>--->--->--->---'title' => cutstr($data['title'], $titlelength, ''),
>--->--->--->---'url' => fetch_article_url($data),
>--->--->--->---'pic' => $data['pic'],
>--->--->--->---'picflag' => $data['picflag'],
>--->--->--->---'summary' => cutstr(strip_tags($data['summary']), $summarylength, ''),
>--->--->--->---'fields' => array(
// add by debmzhang at 2014-12-17 16:59 --start
'download_url' => $data['download_url'],
'download_size' => $data['download_size'],
'download_type' => $data['download_type'],
'download_official_website' => $data['download_official_website'],
'newgame_url' => $data['newgame_url'],
'newgame_web' => $data['newgame_web'],
'newgame_status' => $data['newgame_status'],
'newgame_f' => $data['newgame_f'],
'newgame_kfs' => $data['newgame_kfs'],
'newgame_yys' => $data['newgame_yys'],
'newgame_ce_time' => $data['newgame_ce_time'],
// add by debmzhang at 2014-12-17 16:59 --end
>--->--->--->--->---'uid'=>$data['uid'],
>--->--->--->--->---'username'=>$data['username'],
>--->--->--->--->---'avatar' => avatar($data['uid'], 'small', true, false, false, $_G['setting']['ucenterurl']),
>--->--->--->--->---'avatar_middle' => avatar($data['uid'], 'middle', true, false, false, $_G['setting']['ucenterurl']),
>--->--->--->--->---'avatar_big' => avatar($data['uid'], 'big', true, false, false, $_G['setting']['ucenterurl']),
>--->--->--->--->---'fulltitle' => $data['title'],
>--->--->--->--->---'dateline'=>$data['dateline'],
>--->--->--->--->---'caturl'=> $_G['cache']['portalcategory'][$data['catid']]['caturl'],
>--->--->--->--->---'catname' => $_G['cache']['portalcategory'][$data['catid']]['catname'],
>--->--->--->--->---'articles' => $_G['cache']['portalcategory'][$data['catid']]['articles'],
>--->--->--->--->---'viewnum' => intval($data['viewnum']),
>--->--->--->--->---'commentnum' => intval($data['commentnum'])
>--->--->--->---)
>--->--->---);
2. 修改文件 function/function_block.php
1> 找到 block_template 方法, 在大约293行, 即在 $fields 下, 再添加一些内容, 与原来的 $fields 进行 array_merge 操作
// add by debmzhang at 2014-12-18 14:34 --start
$fieldsForExtra = array(
'download_url' => array('name' => '下载频道--下载地址', 'formtype' => 'download_url', 'datatype' => 'download_url'),
'download_size' => array('name' => '下载频道--下载大小', 'formtype' => 'download_size', 'datatype' => 'download_size'),
'download_type' => array('name' => '下载频道--下载类型', 'formtype' => 'download_type', 'datatype' => 'download_type'),
'download_official_website' => array('name' => '下载频道--下载官网', 'formtype' => 'download_official_website', 'datatype' => 'download_official_website'),
'newgame_url' => array('name' => '新游频道--下载地址', 'formtype' => 'newgame_url', 'datatype' => 'newgame_url'),
'newgame_web' => array('name' => '新游频道--下载官网', 'formtype' => 'newgame_web', 'datatype' => 'newgame_web'),
'newgame_status' => array('name' => '新游频道--下载状态', 'formtype' => 'newgame_status', 'datatype' => 'newgame_status'),
'newgame_f' => array('name' => '新游频道--下载激活码', 'formtype' => 'newgame_f', 'datatype' => 'newgame_f'),
'newgame_kfs' => array('name' => '新游频道--开发商', 'formtype' => 'newgame_kfs', 'datatype' => 'newgame_kfs'),
'newgame_yys' => array('name' => '新游频道--运营商', 'formtype' => 'newgame_yys', 'datatype' => 'newgame_yys'),
'newgame_ce_time' => array('name' => '新游频道--测试时间', 'formtype' => 'newgame_ce_time', 'datatype' => 'newgame_ce_time'),
);
$fields = array_merge($fields, $fieldsForExtra);
// add by debmzhang at 2014-12-18 14:34 --end
2> 继续往下找, $fields 数组进行 foreach 操作时, 添加自己的逻辑, 也就是在这里进行了数据的替换操作
foreach($fields as $key=>$field) {
>--->--->--->---$replacevalue = $blockitem[$key];
>--->--->--->---$field['datatype'] = !empty($field['datatype']) ? $field['datatype'] : '';
>--->--->--->---if($field['datatype'] == 'int') {// int
>--->--->--->--->---$replacevalue = intval($replacevalue);
>--->--->--->---} elseif($field['datatype'] == 'string') {
>--->--->--->--->---$replacevalue = preg_quote($replacevalue);
>--->--->--->---} elseif($field['datatype'] == 'date') {
>--->--->--->--->---$replacevalue = dgmdate($replacevalue, $block['dateuformat'] ? 'u' : $block['dateformat'], '9999', $block['dateuformat'] ? $block['dateformat'] : '');
>--->--->--->---} elseif($field['datatype'] == 'title') {//title
>--->--->--->--->---$searcharr[] = '{title-title}';
>--->--->--->--->---$replacearr[] = preg_quote(!empty($blockitem['fields']['fulltitle']) ? $blockitem['fields']['fulltitle'] : dhtmlspecialchars($replacevalue));
>--->--->--->--->---$searcharr[] = '{alt-title}';
>--->--->--->--->---$replacearr[] = preg_quote(!empty($blockitem['fields']['fulltitle']) ? $blockitem['fields']['fulltitle'] : dhtmlspecialchars($replacevalue));
>--->--->--->--->---$replacevalue = preg_quote($replacevalue);
>--->--->--->--->---if($blockitem['showstyle'] && ($style = block_showstyle($blockitem['showstyle'], 'title'))) {
>--->--->--->--->--->---$replacevalue = '<font style="'.$style.'">'.$replacevalue.'</font>';
>--->--->--->--->---}
// add by debmzhang at 2014-12-17 18:25 --start
} elseif ($field['datatype'] == 'download_url') {
$searcharr[] = '{download_url}';
$replacearr[] = preg_quote(!empty($blockitem['fields']['download_url']) ? $blockitem['fields']['download_url'] : dhtmlspecialchars($replacevalue));
$replacevalue = preg_quote($replacevalue);
} elseif ($field['datatype'] == 'download_size') {
$searcharr[] = '{download_size}';
$replacearr[] = preg_quote(!empty($blockitem['fields']['download_size']) ? $blockitem['fields']['download_size'] : dhtmlspecialchars($replacevalue));
$replacevalue = preg_quote($replacevalue);
} elseif ($field['datatype'] == 'download_type') {
$searcharr[] = '{download_type}';
$replacearr[] = preg_quote(!empty($blockitem['fields']['download_type']) ? $blockitem['fields']['download_type'] : dhtmlspecialchars($replacevalue));
$replacevalue = preg_quote($replacevalue);
} elseif ($field['datatype'] == 'download_official_website') {
$searcharr[] = '{download_official_website}';
$replacearr[] = preg_quote(!empty($blockitem['fields']['download_official_website']) ? $blockitem['fields']['download_official_website'] : dhtmlspecialchars($replacevalue));
$replacevalue = preg_quote($replacevalue);
} elseif ($field['datatype'] == 'newgame_url') {
$searcharr[] = '{newgame_url}';
$replacearr[] = preg_quote(!empty($blockitem['fields']['newgame_url']) ? $blockitem['fields']['newgame_url'] : dhtmlspecialchars($replacevalue));
$replacevalue = preg_quote($replacevalue);
} elseif ($field['datatype'] == 'newgame_web') {
$searcharr[] = '{newgame_web}';
$replacearr[] = preg_quote(!empty($blockitem['fields']['newgame_web']) ? $blockitem['fields']['newgame_web'] : dhtmlspecialchars($replacevalue));
$replacevalue = preg_quote($replacevalue);
} elseif ($field['datatype'] == 'newgame_status') {
$searcharr[] = '{newgame_status}';
$replacearr[] = preg_quote(!empty($blockitem['fields']['newgame_status']) ? $blockitem['fields']['newgame_status'] : dhtmlspecialchars($replacevalue));
$replacevalue = preg_quote($replacevalue);
} elseif ($field['datatype'] == 'newgame_ce_time') {
$searcharr[] = '{newgame_ce_time}';
$replacearr[] = preg_quote(!empty($blockitem['fields']['newgame_ce_time']) ? $blockitem['fields']['newgame_ce_time'] : dhtmlspecialchars($replacevalue));
$replacevalue = preg_quote($replacevalue);
// add by debmzhang at 2014-12-17 18:25 --end
>--->--->--->---} elseif($field['datatype'] == 'summary') {//summary
>--->--->--->--->---$replacevalue = preg_quote($replacevalue);
>--->--->--->--->---if($blockitem['showstyle'] && ($style = block_showstyle($blockitem['showstyle'], 'summary'))) {
>--->--->--->--->--->---$replacevalue = '<font style="'.$style.'">'.$replacevalue.'</font>';
>--->--->--->--->---}
>--->--->--->---}
3. 在后台 门户--模块模板 添加新的 模块模板的时候, 就可以使用自己定义的标签了, 这里最好都写成数据库里的字段, 当然, 上面的一些描述里都是使用的我在数据库里添加的字段名.
到此, 前台自定义diy时使用这个模块模板的时候, 数据就会被替换为数据库里的内容了...
discuz! X3.2 自定义后台门户模块模板里的标签的更多相关文章
- WPF 后台获得 数据模板里的内容控件(DataTemplate)
原文:WPF 后台获得 数据模板里的内容控件(DataTemplate) 假如 <Window.Resources> 里 有一个 Datatemplate 我想获得TextBlo ...
- thinkphp 模板里a标签 href 带参数的 使用U函数方法
简单的说就是模板里 分类的链接地址 实现这个样子的 <a href="/index.php/Home/Category/assortment/cateid/2.html"&g ...
- discuz x3在DIY模块中调用伪静态不成功,显示动态链接的解决办法
discuz x3在DIY模块中调用伪静态不成功,显示动态链接,然而其他的链接正常显示伪静态. 后台启用伪静态后,发现论坛版块.帖子点击链接,伪静态正常显示,然后在门户首页DIY显示的帖子,点进去后发 ...
- DiscuzX2.5,X3.0,X3.1,X3.2完整目录结构【模板目录template】
/template/default/common 公共模板目录全局加载 block_forumtree.htm DIY论坛树形列表模块 block_thread.htm DIY帖子模块调用文件 ...
- discuz x3论坛搬家换虚拟主机完美使用教程 亲测可行 附操作步骤
第一步:备份网站数据进入后台—站长—数据库—备份,数据备份类型选择“Discuz!和 UCenter数据”,备份成功以后,数据自动保存在data文件夹下. 第二步:网站文件下载 把整个网站文件打包(虚 ...
- discuz 门户页模板中的keywords和description不能正常显示
最近用discuz搭建了一个素食网,在处理门户页模板时,发现虽然在后台的seo设置了keywords和description,但是以游客的身份访问时,不显示后台设置的内容,显示为: <meta ...
- Discuz! X3 数据表、数据字段说明
pre_common_admincp_cmenu 后台菜单收藏表 字段名 数据类型 默认值 允许非空 自动递增 备注 id smallint(6) unsigned NO 是 title v ...
- Discuz! X3 数据字典
pre_common_admincp_cmenu 后台菜单收藏表 字段名 数据类型 默认值 允许非空 自动递增 备注 id smallint(6) unsigned NO 是 title v ...
- phpcms v9和discuz X3.1实现同步登陆退出论坛(已实现)
网络上文章很多,按步骤配置好了之后phpcms可以同步登录dz,但是dz登录后状态却无法同步到phpcms,网络上找了很多资料都大同小异,头大.只能自己调试了,废话不多说了. 以下网络上抄 ...
随机推荐
- CPU与外设传送数据方式
7.2 CPU与外设之间数据传送的方式 在微型计算机系统中,CPU与外设之间的数据传送方式主要有程序传送方式.中断传送方式和直接存储器存取(DMA)传送方式,分别介绍如下. 7.2.1 程序传 ...
- ueditor的过滤、转义、格式丢失问题
1. 过滤 http://www.cnblogs.com/Olive116/p/3464495.html 2. 转义 http://segmentfault.com/q/101000000048928 ...
- 枚举宏(Adopting Modern Objective-C)
使用NS_ENUM 和 NS_OPTIONS宏定义枚举.Adopting Modern Objective-C 使用NS_ENUM宏定义一组互斥的枚举值: typedef NS_ENUM(NSInte ...
- C++实现base64编码
将昨天的php代码改造成C++ /*base_64.h文件*/ #ifndef BASE_64_H #define BASE_64_H /** * Base64 编码/解码 * @author lir ...
- Java中的多线程总结(转)
1.多线程概述 当一个程序运行时,内部可能包含了多个顺序执行流,每个顺序执行流就是一个线程.主要以下几个优点: 线程之间很容易实现共享内存 创建线程代价较小 Java语言内置多线程功能支持 2.线 ...
- 转:PHP开发者应了解的24个库
原文来自于:http://blog.jobbole.com/54201/ 作为一个PHP开发者,现在是一个令人激动的时刻.每天有许许多多有用的库分发出来,在Github上很容易发现和使用这些库.下面是 ...
- Node.js流
什么是流? 流是可以从一个源读取或写入数据到连续的目标对象.在Node.js,有四种类型的数据流. Readable - 其是用于读操作. Writable - 用在写操作. Duplex - 其可以 ...
- Web.config总结
%windir%/Microsoft.NET/Framework/v2.0.50727/CONFIG目录下machine.config定义了针对当前机器的WinForm程序和asp.net应用程序的配 ...
- LINUX HA:Pacemaker + Corosync初配成功
参考很多文档: http://zhumeng8337797.blog.163.com/blog/static/100768914201218115650522/ 下一步,想想这个PC组和与HAPROX ...
- Windows下Vundle插件BundleSearch命令出现错误解决方案
纯粹参考他人博文,已证明解决方案正确,转载时请注明参考链接!!! 参考链接: http://www.tuicool.com/articles/e2aiEn 在Windows下使用Vim时,用Vundl ...