(1)以公司简介栏目为例,网站首页会有显示公司简介的板块,在对应板块位置,输入如下代码:
{dede:sql sql='Select content from dede_arctype where id=2'}
[field:content/]
{/dede:sql}
说明:其中的id=’2’是指定栏目的id ,查看栏目id的方法,如下图,在栏目名称后就是栏目id ,输入代码后,保存,刷新网站,这时首页对应板块就调用出栏目内容了。

(2)上面代码是把栏目所有内容都调用出来,如果我们只调用部分内容,可以用下面代码:
{dede:sql sql='Select content from dede_arctype where id=2' }
[field:content function='cn_substr(html2text(@me),550)'/]...
{/dede:sql}
说明:代码相对第一种代码,多了 function='cn_substr(html2text(@me),550)' ,数字550是限制调用出来的字数。
特点:可以指定调用内容的字数,缺点只能调用文字,文章内容中的图片等其他元素不能调用,并且调用出的内容没有文章段

最近在弄公司的微信服务号,忽然冒出个想法,想把微信和医疗系统结合一下,让用户能直接在微信上查到自己在医院的资料。

for example几号来的医院,咨询的什么项目,哪个医生接待的,消费了多少钱,什么时候需要去复诊,该跟谁约会,该跟谁搞基。。。

 

心里这么一想似乎能两边都方便点,而且也对吸粉有一点的作用

说干就干。

先说一下环境吧

医院这边用的是一套客户端的服务系统,叫宏脉,具体不解释了。用的是mssql的数据库,服务器就扔在医院的某个阴暗的小角落,装了花生壳,指定了端口对公网开放

而搭载了微擎的那边用的是windows2008的阿里云,我用了西数的网站助手,个人感觉手感还不错,可以一键创建站点数据库之类的。还可以一键安装php5.2到5.5的环境,颇为顺手。

环境解释完了,那么问题来了,如何用php远程调用mssql的数据呢?

中间各种曲折离奇的故事我就不多加赘述了,直接指明道路。

 

第一步开放mssql的远程访问

这个简单,网上一大坨教程,个人建议单独加一个远程调用的账户,我百度了一个传送门http://jingyan.baidu.com/article/6c67b1d6ca06f02787bb1ed1.html

第二步让php支持mssql

因为微擎要求的php版本比较高,而mssql在高于5.3的php就TM不再支持mssql了,得插点东西才行。

来来,我告诉你们要插点什么

 

第三步,好了该装的装了是时候改一下配置文件了

打开php目录下的php.ini

有仇的报仇,有怨的。。不是

;extension=php_sqlsrv.dll
;extension=php_pdo_sqlsrv.dll

这两句的就把前边的;去掉,没有的就补上这两句

再加个

[PHP_PDO_SQLSRV] 
extension = php_pdo_sqlsrv_54_nts.dll 
[PHP_SQLSRV] 
extension = php_sqlsrv_54_nts.dll

根据自己的环境来nts就是非安全线程,ts就是安全。如果不知道了就都试试。

到这里差不多了

第四步,测试

<?
/*连接数据库,5.4的函数不再是mssql_connect了:*/
$conInfo=array('Database'=>'osbst', 'UID'=>'sa', 'PWD'=>'123456');
$conn=sqlsrv_connect('192.168.1.208', $conInfo);
/*判断连接成功与否:*/
if( $conn == false )
{
    die( print_r( sqlsrv_errors(), true));
}
else
{
    echo("yes<br>");
}
$table_name = 'table_name';
/*如果你牛叉的数据库表名是中文,记得加上这句:*/
$table_name = iconv('UTF-8', 'GB2312', '牛叉的中文表名'); 
/*query语句:*/
$rs=sqlsrv_query($conn, "select * from ".$table_name);
if($rs == false)
{
    echo("false<br>");
}
else
{
    while($row = sqlsrv_fetch_array($rs))

    {
        print_r($row);
    }
    sqlsrv_free_stmt($rs);
    sqlsrv_close($conn);
}

?>

输出数组了说明成功了~

 

完结撒花

 

 

 

duxcms3调用导航:

<!--list{app="site" label="nav" parent_id="0"}-->
名称: {$list.name} ---- 链接: {$list.url}<br>
<!--{/list}-->

parent_id 上级栏目ID
group_id 导航分组ID
name 导航名称
url 导航链接
subname 栏目副名称
image 封面图
keyword 关键词
description 导航描述
sort 排序

 

文章页调用当前页面tag

<!--loop{$tagList as $vo }-->
<a target='_blank' class='tag' href='{$vo.url}' >#{$vo.name}</a>
<!--{/loop}-->

 

3.0的DUX完善了自定义模型和筛选模型,负载能力也比2.0有很大提升

so刚出测试版就搭建了一个站点用以测试

在使用中发现了一些细节的问题

1、列表顺序

比方说列表页排列顺序和点击筛选后顺序是正序的,这个需要修改

/app/article/controller/IndexController.php

$classIds = target('article/ArticleClass')->getSubClassId($classId);
        $where['_sql'] = 'B.class_id in (' . $classIds . ') ORDER BY B.content_id desc';
 
        $attrList = [];
        if($classInfo['filter_id']) {
            $filter = target('site/SiteFilter')->getFilter('article/ArticleClass', $classIds, ['id' => $classId]);
            if ($filter['status']) {
                $where['_sql'] = 'A.content_id in (' . $filter['ids'] . ') ORDER BY B.content_id desc';
            }
            $attrList = $filter['attrList'];
        }

大约36,42行的位置加入ORDER BY B.content_id desc,可以在不影响响应速度的前提下把顺序改为倒序。

2、内页响应时间

/*
        target('site/SiteContent')->where(['content_id' => $info['content_id']])->setInc('view');

        $where = [];
        $where['A.status'] = 1;
        $where['_sql'] = 'A.create_time < ' . $info['create_time'];
        $where['B.class_id'] = $info['class_id'];
        $nextInfo = target('article/Article')->loadList($where, 1);

        $where = [];
        $where['A.status'] = 1;
        $where['_sql'] = 'A.create_time > ' . $info['create_time'];
        $where['B.class_id'] = $info['class_id'];
        $prevInfo = target('article/Article')->loadList($where, 1);*////这里注释用以减少sql查询

/app/article/controller/InfoController.php

注释掉大约62-75行之间的代码,可以极大的提升内页响应时间,3W数据内页响应时间从2S缩短到0.02S