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时使用这个模块模板的时候, 数据就会被替换为数据库里的内容了...

时间: 2024-10-12 15:24:32

discuz! X3.2 自定义后台门户模块模板里的标签的相关文章

WPF 后台获得 数据模板里的内容控件(DataTemplate)

原文:WPF 后台获得 数据模板里的内容控件(DataTemplate) 假如 <Window.Resources> 里 有一个 Datatemplate 我想获得TextBlock XAML <DataTemplate x:Key="dtName"> <TextBlock Text="content"/> </DataTemplate> 后台代码 DataTemplate d = this.FindResource(

thinkphp 模板里a标签 href 带参数的 使用U函数方法

简单的说就是模板里 分类的链接地址 实现这个样子的 <a href="/index.php/Home/Category/assortment/cateid/2.html">手机壁纸</a> 问题: 开始遇到的问题就是无法解析 {$category.id} 貌似是因为 先解析外面U函数的{} 应该使用$category["id"] <volist name="cate" id="category"&

Discuz! X3.2 数据字典-portal门户表

pre_portal_article_content 门户文章内容表 字段名 数据类型 默认值 允许非空 自动递增 备注 cid int(10) unsigned NO 是 内容ID aid mediumint(8) unsigned 0 NO 文章ID id int(10) unsigned 0 NO 来源ID idtype varchar(255) NO 来源ID类型 title varchar(255) NO 分页标题 content text NO 文章内容 pageorder smal

Discuz! X2.5 添加自定义数据调用模块

大致可以分为以下三个步骤:一.添加数据调用程序二.后台更新diy模块分类缓存三.添加相应的数据模板 具体操作如下:一.添加数据调用程序1> 在  source/class/block/ 目录下新建文件夹如 :news2>在news文件夹下,新建 blockclass.php,内容如下: <?phpif(!defined('IN_DISCUZ')) {    exit('Access Denied');}$blockclass = array(    'name' => lang('

Discuz! X2.5 添加自定义数据调用模块(简单方法)

转:http://521-wf.com/archives/46.html Discuz! X2.5 添加自定义数据调用模块(简单方法) Discuz!X系列的diy功能还是相当不错的,在对其进行二次开发的过程中,或许需要加入新的数据调用模块,这样可以使你开发的功能模块也像原来的模块一样,只需要点点鼠标,填写一些简单的信息,就可以在各个页面的各个位置显示你想显示的数据啦. 以下就目前最新版X2.5做一个简答的介绍:大致可以分为以下三个步骤:一.添加数据调用程序二.后台更新diy模块分类缓存三.添加

discuz!x3 门户友情链接模块的横排显示

默认是竖排显示的. 将模块模板里的代码修改为: <style type="text/css"> #menu li {  float:left; /* 往左浮动 */ padding-left:5px; } </style> <div class="x cl"> <ul id="menu" class="cl mbm">    [loop] <li><a href

discuz x3论坛搬家换虚拟主机完美使用教程 亲测可行 附操作步骤

第一步:备份网站数据进入后台—站长—数据库—备份,数据备份类型选择“Discuz!和 UCenter数据”,备份成功以后,数据自动保存在data文件夹下. 第二步:网站文件下载 把整个网站文件打包(虚拟主机管理控制面板一般都有整站压缩和解压的功能,在控制面板选择压缩,压缩之后的文件一般在FTP DB文件夹里面,然后把压缩包下载到本地电脑,如果虚拟主机没有在线压缩功能那就直接使用FTP下载文件到本地保存. 第三步:整理下载到本地的网站文件1.把下载下来的文件里面的下列文件删除,请完全放心删除掉这几

discuz x3.1 整站搬家教程 -传统搬家办法-傻瓜都会的!

很多站长第一次做网站的时候,无奈选择了速度不是很稳定的空间,慢慢会发现有很多物美价廉速度相当快的空间 这个时候,站长在网站搬家的过程中就会遇到很多困难,今天老袋鼠给大家详细讲解一下discuz论坛搬家的详细过程 第一步:备份网站数据 进入后台—站长—数据库—备份,数据备份类型选择“Discuz!和 UCenter数据”,备份成功以后,数据自动保存在data文件夹下. 第二步:网站文件下载 把整个网站文件打包(虚拟主机管理控制面板一般都有整站压缩和解压的功能,在控制面板选择压缩,压缩之后的文件一般

discuz X3.1的门户文章实现伪静态,利于搜索引擎收录url的地址修改

最近在捣鼓DZ框架,这两天发现文章的收录情况并不是太理想,做了很多优化方面的工作,今天主要解决了DZ门户的文章链接伪静态化,在这次修改之前,也做过一次在网上找的静态化修改,之前做的方式是: 1.在DZ管理后台->全局->seo设置->url静态化模块中,开启如下配置 2.在nginx的配置文件中,添加url的rewrite规则如下图,添加完规则后,在门户首页和频道列表中显示的url规则是:http://xxx.com/article-aid-page.html;其中aid是文章id,pa