分类目录归档:DEDECMS技巧

DEDECMS技巧

dede织梦瀑布流代码,2种模式,a滚动自动加载,b点击加载更多

首先我先把瀑布流的代码安装发放写给大家,后面简单写下如何修改为点击才会加载更多。

此版本为utf8版本,你也可以修改下编码把utf8改为gbk来使用到gbk程序上面。

首先页面上必须加载这三个js:

<script type="text/javascript" src="{dede:global.cfg_templets_skin/}/js/jquery-1.6.4.min.js"></script> 
<script type="text/javascript" src="{dede:global.cfg_templets_skin/}/js/jquery.masonry.min.js"></script> 
<script type="text/javascript" src="{dede:global.cfg_templets_skin/}/js/waterfall.js"></script>

瀑布流调用方法:

<ul class="clear" id="content"> 
{dede:list pagesize='3'} 
<li class="post"> <a href="[field:arcurl/]" class="title">[field:title/]</a> </li> 
{/dede:list} 
</ul>

要注意,本瀑布流为无限加载形式,所以分页处一定要注意,调用方法为:

<div class=”next_page” style=”font-size:17px;”> {dede:pagelist listitem=”next”/} </div >

 

下载地址

   织梦点击加载更多,,http://pan.baidu.com/s/1i5Q296l
dede点击瀑布流   《******点解左边下载插件******》

   织梦滚动加载更多,,http://pan.baidu.com/s/1eRTaqYY

  dede滚动自动瀑布流   《******点解左边下载插件******》

上面就是瀑布流的代码,一下简单放给大家如何修改为点击加载
首先打开waterfall.js文件:
原理只是把原始文件这里的鼠标绑定事件修改为了单击触发事件。
//首先给窗口绑定事件scroll

$(window).bind("scroll",function() {

修改为

$("#dianhuafei").click(function() {

因为上文已经使用单击触发了事件,所以原有的判断滚动条是否接近底部已经没有意义了,故可以直接删去这个if判断,直接执行if里面的代码:

// 然后判断窗口的滚动条是否接近页面底部,这里的20可以自定义

if ($(document).scrollTop() + $(window).height() > $(document).height() - 20) {

我们需要使用dede的 {dede:pagelist listitem=”next”/}来获取每个页面的数据所以模板中的dede分页代码不能删去。

只需要将

else { link.html("下一页没有了").removeAttr("href"); };

修改为

else { $("#dianhuafei").html("已经是最后一页了"); link.html("下一页没有了").removeAttr("href"); };

同时将模板中代码按下文修改,原理是我们绑定的是id的dianhuafei的单击才会触发事件,因此我们要写一句触发事件的代码,原有的分页代码不能删除,所以我们用css将其隐藏即可.

<h2 class="next_page" style="font-size:17px;"> {dede:pagelist listitem="next"/} </h2>

修改为:

<div class="next_page" style="font-size:17px;"> 
<span id="dianhuafei">再看八条</span>
<div style="display:none;"> {dede:pagelist listitem="next"/}</div> 
</div>

注:模板中列表调用代码{dede:list pagesize=’8′}中的8即为每次加载的条数。

<script type="text/javascript" src="{dede:global.cfg_templets_skin/}/js/waterfall.js"></script>

link.html(“下一页没有了”).removeAttr(“href”);

织梦dedecms使用阿里大鱼短信接口进行短信发送

首先织梦dedecms支持短信验证发送,先要去阿里大鱼下载sdk,引用其中5个基础文件即可,然后进入阿里大鱼开发平台申请一个帐号,新建应用,从后台获取appkey值和secretKey值;然后再新建一个短信模版,审核通过后取得模版id,同时如果需要在模版中传人参数可以在通过setSmsParam方法设置进去;同样短信签名也需要后台申请,审核通过才可以填写相应的短信签名进去;
      做完上面的操作,把获取的参数根据下面的方法传入即可。
      如下返回值是数组返回的,已解析,有点注意的是官方文档返回结构和实际的结构不一样,发送成功的返回的值是二维数组结构,发送失败的话则说简单的一维数组结构。(文章最底部有5个引用文件下载链接)
include('aldy/TopClient.php'); //这个是你下面实例化的类 
       include('aldy/ResultSet.php'); //这个是topClient 里面需要实例化一个类所以我们也要加载 不然会报错
       include('aldy/RequestCheckUtil.php'); //这个是成功后返回的信息文件
       include('aldy/TopLogger.php');   //这个是错误信息返回的一个php文件
       include('aldy/AlibabaAliqinFcSmsNumSendRequest.php'); //这个也是你下面示例的类
 //短信发送     模版id(TemplateCode),发送号码(RecNum),FreeSignName(短信签名)
     function send_sms($TemplateCode,$RecNum,$FreeSignName){
      $c = new TopClient;
      $c->appkey = ;//appkey值
      $c->secretKey = ;//secretKey值
      $req = new AlibabaAliqinFcSmsNumSendRequest;
      //$req->setExtend("123456");
      $req->setSmsType("normal");
      $req->setSmsFreeSignName($FreeSignName);
      $req->setSmsParam("{\"code\":\"1234\",\"product\":\"alidayu\"}");.//模版参数
      $req->setRecNum($RecNum);
      $req->setSmsTemplateCode($TemplateCode);
      $resp = $c->execute($req);
      $content = json_decode(json_encode($resp),true);
      try {
        $result=  $content['sub_msg'];
         throw new Exception('It is an exception!');  
        } catch (Exception $e) {
       if( $content['result']['success'] == 'true' ){
          $result= '发送成功'; 
       }else{
        $result= '发送失败';
       }
      }
      echo $result;
      exit();
     }

CJ18-织梦dedecms会员注册手机短信验证高级插件

CJ15-织梦dedecms使用阿里大鱼短信接口进行短信发送

excel表格的数据导入到Navicat for MySQL数据库中去

织梦网站中经常会碰到需要导入大量的数据,在没有工具、以及不会写SQL语句的时候,如何让EXCEL里面的表格数据通过Navicat for MySQL软件自带的导入功能实现数据导入,本文就专门介绍织梦网站纯手工导入,无需写代码以及软件工具的方法导入到数据库中去,实现添加大量数据,步骤如下:

      1、准备工具:EXCEL、Navicat for MySQL
        2、影响织梦数据库表格:dede_addonarticle(文章内容表格)、dede_archives(文章标题表格)、dede_arctiny(索引表格)
        3、把需要修改的三个表格通过Navicat自带的导出功能导出上面三个表格,下载到本地来
  4、下载到本地来之后把多余的删除掉,只留下一条数据,此步骤是为了做表格参照用的,此表用来制作导入数据库的表格(导入的表格必须和数据库的表格一模一样)

DEDE 文章按权重排序问题

dedecms5.7版本中我们在发表文章的时候可以看见有个权重值,但是很多人用orderby=’weight’调用的时候却不起作用

这是为什么呢?下面给大家讲讲解决方法

我们在使用dedecms发部文章的时候,经常希望文章可以按我们的需求来进行排序。这个时候就需要用到文章的权重值了,如下图所示:

 

但是当我们在dede:arclist标签中使用orderby=’weight’来排序时,发现文章显示并没有起作用。我们在include\taglib下找到文件arclist.lib.php 打开来看一下代码。

在代码的第74-75行,我们发现$isweight默认为N,所以我们在使用orderby=’weight’ 时需要在前面加上 isweight=”Y” 来开启权重的使用。也可以加上orderway=’asc’或orderway=’desc’来限定排序的方式是升序还是降序

好的这样改了之后dede:arclist中就可以按权重来排序了。但是我们在栏目列表页使用dede:list还是无法按权限排序。这是因为dede:list标签并为加入按weight排序的方法。我们在include下面找到arc.listview.class.php打开

我们搜索关键字“排序方式”,找到如下代码段,一般在727行左右。然后加入下图绿框里面的代码。即:

else if($orderby == “weight”) {

$ordersql = ” order by arc.weight $orderWay”;

}

 

 

Mac本地环境配置以及安装织梦CMS

Mac本地环境配置以及安装织梦CMS,增加新的坑解决办法

Mac上其实已经自带了Apache和PHP,只是默认关闭的。开启一下就行了。

Apache配置

apache已经自带了,只需在“终端”输入命令开启下就行了。

​​​开启apache服务 sudo apachectl start
​停止apache服务 sudo apachectl stop
​重启服务 sudo apachectl restart
​查看版本 httpd -v

开启apache之后,在浏览器中输入localhost或者127.0.0.1,将看到“It works!”的提示。恭喜,表示apache开启成功了!

pic-1 

Mac Apache下部署web资源默认路径

和Windows有点不一样,它的默认路径不是放在htdocs的www目录下,而是存放在“/Library/WebServer/Documents/”下:

pic-2

我们的站点文件放到这个目录,就可以运行了,如下图:

pic-3 

这个目录是Mac Apache的默认目录,可能并不太符合我们自己的习惯,那么我们如何修改到自己指定的目录呢?

接着往下看—↓↓↓↓

找到Apache所在之处

系统默认是隐藏apache安装目录的,但是我们可以通过“命令行”或者“文件夹前往”的方式找到它。它在系统的私有目录/private/etc下,因为是隐藏的,所以我们无法通过界面直接找到它。

提示:/ect目录是Mac OS存放系统配置信息的地方,里面都是.conf的配置文件。修改之前最好先进行备份。

通过 命令行 前往

在终端输入 open /etc 命令即可前往apache所在之处​(open后面需加一个空格)

pic-4 

​通过 文件夹前往

打开Finder > 前往 >前往文件夹

pic-5 

修改Apache默认目录到指定目录

找到httpd.conf配置文件(建议文件先备份一份再修改),模块启动/停用等操作都在这个文件里面。

pic-6 

打开httpd.conf配置文件,搜索:DocumentRoot,修改成你想指定到的目录即可。
经测试,目录可支持中文和空格

pic-7  

重启Apache

打开终端重启apache
重启命令: sudo apachectl restart ​

pic-8  

重启apache之后,在浏览器中输入localhost或者127.0.0.1,就可以看到自定义目录下的“F-项目/Web File/”中的hello.html文件了​

到此为止,Apache已经指定到自定义目录,并成功开启。但不支持php,打开php文件并不能解析,显示出来的直接是源码(此处以dedecms为示例)。

pic-9 

接着往下看—↓↓↓↓

Mac 配置 PHP

Mac下面其实已经默认装好了php,只不过需要自己手动开启。​同样的在/etc/apache2/目录,打开httpd.conf配置文件。

搜索“php”找到 #LoadModule php5_module libexec/apache2/libphp5.so 去掉前面的#,将其释放开就好了。

pic-10

​然后在终端中重启apache就好了,重启命令:sudo apachectl restart ,刷新就发现php文件可以进行解析了。

pic-11 

配置MySQL

安装前可查看下MySQL版本,也可以先删除原来版本,重新安装。

Mac 卸载 MySQL 命令

sudo rm /usr/local/mysql
​sudo rm -rf /usr/local/mysql*
​sudo rm -rf /Library/StartupItems/MySQLCOM
​sudo rm -rf /Library/PreferencePanes/My*
​vim /etc/hostconfig  (and removed the line MYSQLCOM=-YES-)
​rm -rf ~/Library/PreferencePanes/My*
​sudo rm -rf /Library/Receipts/mysql*
​sudo rm -rf /Library/Receipts/MySQL*
​sudo rm -rf /var/db/receipts/com.mysql.*

官网下载 mysql-5.7.15-osx10.11-x86_64.dmg

MySQL 5.7.15 官网下载有点慢,于是下完后放到百度网盘了。
https://pan.baidu.com/s/1o7UUi4y​

<注:dmg安装方式,新版本的安装包内,只有一个pkg包>

pic-12 

双击pkg文件进行安装

pic-13  

标准安装即可,不要犹豫,一路Next(继续),记得保存最后弹出框中的密码(它是你mysql root账号的临时密码)​

pic-14

正常情况下,就安装成功了。

但只是安装成功了,还需要进行额外的配置才行。​​

进入系统偏好设置​

pic-15 

​​​点击MySQL

pic-16 

​开启mysql服务

pic-17

此时我们在命令行输入mysql -u root -p命令会提示没有commod not found,我们还需要将mysql加入系统环境变量。

1). cd /usr/local/mysql/bin
​​2). 要修改的密码:./mysqladmin -u root -p password “newpass”
​3). 输入 pic-14 图中给出的临时密码
​4). ./mysql -uroot -p​
​5. 输入需要修改的新密码:newpass

成功的加入环境变量和修改密码。
newpass 更换为你需要修改的密码,我的是 12345678
用户名为:root  密码为:12345678​

安装phpMyAdmin

到官网下载最新的版本 https://www.phpmyadmin.net/我下载的版本是phpMyAdmin-4.6.4-all-languages.zip

安装到项目目录中:

pic-18

浏览器中输入:http://127.0.0.1/phpmyadmin/​
OK,安装成功了​

pic-19

​输入用户名,密码,登录成功!

pic-20

试试安装DEDECMS

输入MySQL用户名和密码,显示信息正确了,我们下一步

pic-21

进行下一步的时候,提示“写入失败,请检查../data目录是否可写入!”oh no ,真是诸多不顺啊。

pic-22

​找到DEDE的安装目录,打开data目录,查看权限,发现everyone只有读取权限,没有写入权限,调整一下。

pic-23 

​再尝试一遍看看,OK,总算是安装成功了!

遇到的坑:10.13.1系统上面
1.    错误代码#1045 Access denied for user ‘root’@’localhost’ (using password:YES)
解决办法:第一点,停止mysql服务  第二点,进入目录cd /usr/local/mysql-5.7.15-osx10.11-x86_64/bin     第三点,输入mysqld -nt –skip-grant-tables
2.   Apache: You don’t have permission to access / on this server

有的时候,比如做Apache项目时(Hudson),你或许会遇到 You don’t have permission to access / on this server. 错误,提示你没有权限访问,这个时候 你除了check 777 权限外(chmod 777 xxx),还需要检查

/etc/apache2/httpd.conf

这个文件。最后终于让我给找到了,修改httpd.conf的配置,查找下面的红色部分,把它给注释(#)掉。

< Directory / >
Options FollowSymLinks
AllowOverride None
#     Order deny,allow
#     Deny from all
< /Directory >

 

3. chmod权限无法申请

对于Mac OS X 10.11 El Capitan用户,由于系统启用了SIP(System Integrity Protection), 导致root用户也没有权限修改/usr/bin目录。按如下方式可恢复权限。
屏蔽方法:重启Mac,按住command+R,进入recovery模式。选择打开Utilities下的终端,输入:csrutil disable并回车,然后正常重启Mac即可。

dedecms被挂马排毒的过程

又经历了一次dedecms被挂马排毒的过程,排毒过程在这里跟大家分享一下。

挂马之后,网站的表现形式:

直接访问网站没有任何问题,从百度搜索的关键词访问网站,就跳转到另外一个网站。

根据我原来的排毒经验:很可能是有人在php里面写入了判断来路的代码,如果是经过百度来的,就跳转到另外一个网站,如果不是,就可以访问。

不过检查了一下php代码,没有发现任何问题。

从百度关键词访问过来的话,能够看到本网站的title,只是一闪而过,就跳转了。根据这个现象判断,马应该是在js里面。于是下载网站模板文件,查找可疑的js代码。找了很久没有找到。只好通过最笨的方法一点点排查。于是每一段写了一个alert。

找到最后出现的alert点击确定之后跳转,那么马就在那个alert附近。

继续阅读

利用DEDE织梦 advancedsearch.htm高级搜索功能 , 来定制身份证驾驶证信息查询系统

织梦默认的高级搜索,就是这个页面/plus/advancedsearch.php,他是模糊搜索.而且会出现多条结果,需要修改为单条信息搜索.

后台,核心,模型管理,在原模型或新建立的模型中,增加字段.比如增加身份证字段.

然后返回模型管理,找到模型后面的放大镜图标,点击一下.如下图.

 

下面模板选择,默认是利用官方默认模板中的advancedsearch.htm 模板

 

 

点击确定后,就会自动出现搜索代码.

 

还需要修改plus/advancedsearch.php 这个文件.

大约在142行. 如下为修改后的效果.就是把模糊查询为精准查询.并增加一个不为空的判断.

if(isset(${$var}) && trim(${$var})!=”)
{
${$var} = stripslashes(${$var});
${$var} = preg_replace(“#[\|\”\r\n\t%\*\?\(\)\$;,’%<>]#”, “”, trim(${$var}));
${$var} = addslashes(${$var});
//$where .= ” AND addon.$var LIKE ‘%${$var}%'”;
$where .= ” AND addon.$var = ‘${$var}'”;
}
else{
ShowMsg(‘身份证不能为空,或输入不正确’,-1,0);exit;}

 

向下.

在下面这几行的下面增加.

 

else
{
$sql = urldecode($sql);
$query = $sql;
}

增加如下代码,下面是修改后的效果

else
{
$sql = urldecode($sql);
$query = $sql;
}
//print_r($sql);exit;
$searchinfo2 = $dsql->GetOne($sql);
if(!is_array($searchinfo2))
{
showmsg(‘查询的信息不存在,请检查输入’,’-1′);
exit();
}

 

如果模板上不显示自定义字段,可以在网上搜索下解决方案

模板内容为:

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml”>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset={dede:global.cfg_soft_lang/}” />
<title>搜索结果页 – <?php echo $cfg_webname;?></title>
<link rel=”stylesheet” href=”{dede:global.cfg_templets_skin/}/style/bluesnail.css” type=”text/css” media=”all” />
<link rel=”stylesheet” href=”{dede:global.cfg_templets_skin/}/style/my.css” type=”text/css” media=”all” />
</head>
<body><br/><br/>
<div style=”width:500px;margin:0 auto”>
<form name=”form” method=”get” action=”{dede:global.cfg_cmsurl/}/plus/advancedsearch.php”>

输入身份证号码 : <input name=”shenfenzheng” type=”text” style=”width:250px; height:24px;border: 1px solid #A38E69;padding: 1px;” value=”” maxlength=”18″ />

<input type=”hidden” name=”mid” value=”17″ />
<input type=”hidden” name=”dopost” value=”search” />

<input type=”hidden” name=”typeid” value=”10″ />
<input type=button name=”Submit” value=”点击查询” />

</form>
</div><br/>

<div class=”container600″>
{dede:datalist }
<?php
$fields[‘stime’] = GetDateTimeMk($fields[‘senddate’]);
$fields[‘arcurl’] = GetArcUrl($fields[‘aid’],$fields[‘typeid’],$fields[‘senddate’],$fields[‘title’],$fields[‘ismake’],$fields[‘arcrank’],$fields[‘namerule’],$fields[‘typedir’],$fields[‘money’]);
$fields[‘typeurl’] = GetTypeUrl($fields[‘typeid’],MfTypedir($fields[‘typedir’]),$fields[‘isdefault’],$fields[‘defaultname’],
$fields[‘ispart’],$fields[‘namerule2’],$fields[‘moresite’],$fields[‘siteurl’],$fields[‘sitepath’]);
?>
<dl class=”border border-large padding-big”style=”border-radius:18px;border-color:#eee;background:#bfebd2″>
<p style=”font-size:24px;text-align:center;font-weight:bold”> 中华人民共和国机动车驾驶证
<br/>
<span style=”font-size:14px;font-weight:normal”>Driver’s license of the people’s Republic of China</span><br/>
<span style=”font-size:20px;font-weight:normal;background:#999″> 证号 </span><span style=”font-size:20px;font-weight:normal;”> {dede:field.shenfenzheng/}</span></p>

<dd class=”pr”>
<div class=”top0 left10 text-12 line-height12 margin-bottom-12″>姓名:<br/>Name</div>
<span class=”top0 left50 ib text-24 border-bottom”style=”border-bottom:solid 1px #555;”>  {dede:field.title/}  </span>

<div class=”top0 left190 text-12 line-height12 margin-bottom-12″>性别:<br/>Gender</div>
<span class=”top4 left250 ib text-20 “style=”border-bottom:solid 1px #555;”>  {dede:field.xb/}  </span>

<div class=”top0 left300 text-12 line-height12 margin-bottom-12″>国籍:<br/>Nationality</div>
<span class=”top4 ib text-20″style=”border-bottom:solid 1px #555;left:380px”>  {dede:field.gj/}  </span>

<div class=”top40 left10 text-12 line-height12 margin-bottom-12″>住址:<br/>Address</div>
<span class=”top48 left60 ib text-16″style=”border-bottom:solid 1px #555;”>  {dede:field.zz/}  </span>

<span class=”top90 left10″><img src=”{dede:field.gz function=’GetOneImgUrl(@me,1)’/}”width=”120″/></span>

<div class=”top88 left140 text-12 line-height12 margin-bottom-12″>出生日期:<br/>Date of birth</div>
<span class=”top92 left230 ib text-20″style=”border-bottom:solid 1px #555;”>  {dede:field.csrq/}  </span>

<div class=”left140 pa text-12 line-height12 margin-bottom-12″style=”top:130px”>初次领证日期:<br/>Issue Date</div>
<span class=”pa left230 ib text-20″style=”border-bottom:solid 1px #555;top:134px”>  {dede:field.cc/}  </span>

<div class=”left140 pa text-12 line-height12 margin-bottom-12″style=”top:170px”>准驾车型:<br/>Quasi driving type</div>
<span class=”pa left260 ib text-20″style=”border-bottom:solid 1px #555;top:174px”>  {dede:field.zj/}  </span>

<div class=”left10 pa text-12 line-height12 margin-bottom-12″style=”top:220px”>有效期限:<br/>Validity period</div>
<span class=”pa left100 ib text-20″style=”top:225px”>  {dede:field.yxqx/}  </span>

<span class=”pa hidden left220 ib text-20″style=”;top:225px”>至   中国  </span>

<span class=”top70 “style=”left:380px”><img src=”{dede:field.zp function=’GetOneImgUrl(@me,1)’/}”height=”180″/></span>
<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>

</dd>
</dl>
{/dede:datalist}
</div>

</body>
</html>

 

织梦DEDE添加和调用自定义字段的方法

织梦自定义字段要想在任何位置任何模版中调用或者在{dede:list }和{dede:arclist }标签中调用,需要特殊设置。
自定义字段就是列表附加字段自定义的字段。
一,织梦如何添加自定义字段:
网站后台》核心》频道模型》内容模型管理》选择要添加自定义字段的频道模型,这里以图片集频道举例
注意:创建字段,前台参数这里“使字段可以在列表的底层模板中获得”这个必须勾选
在字段管理》添加新字段中添加(价格属性)
在基本设置里》列表附加字段中添加jiage(可以在列表模板{dede:list}{/dede:list}中用[field:name /]调用)

 

二,织梦如何调用自定义字段:

1、在{dede:list }中调用
{dede:list pagesize=’5′ addfields=’jiage’ channelid=’2′}
<P>标题:[field:title/]</P>
<P>价格:[field:jiage/]</P>
{/dede:list}
说明:addfields=’jiage’指定要获得的字段 addfields=’字段1,字段2′
channelid=’2’指定 channelid 属性(内容模型的id值)图片模型的ID为2

2、在{dede:arclist }中调用
{dede:arclist typeid=’3′  row=’4′  addfields=’jiage’ channelid=’2′ }
<P>标题:[field:title/]</P>
<P>价格:[field:jiage/]</P>
{/dede:arclist}

3、单独调用
价格:{dede:field name=’jiage’/}