分类目录归档:DEDECMS技巧

DEDECMS技巧

织梦DeDeCMS v5.7添加自定义属性的实现方法(图文详解)

很多时候大家做网站都需要通过建立N多的二级栏目达到文章的分类,栏目少还好,如果一个栏目牵扯到2级或者3级的栏目,那么随着栏目的增多,日后添加文章都是一个非常大的困难,今天小编通过实战教给大家如果通过添加文章自定义属性来解决繁琐的文章分类问题。

自定义属性使用的好,可以完全解决一篇文章属于多个栏目,或者栏目下出现2-3级的子栏目等问题!

环境:目前DEDE更新到了5.7的版本,在此之前的老版本就不在讲述了,我们以DEDE5.7作为修改的基础。

首先,我们先看一下如何批量添加自定义的文章属性。

比较安全和快速的添加方式是通过SQL写入的方式:后台-系统-SQL命令行工具。

 

insert into `dede_arcatt`(sortid,att,attname) values(9,’d’,’标签’);
alter table `dede_archives` modify `flag` set (‘c’,’h’,’p’,’f’,’s’,’j’,’a’,’b’,’d’) default NULL;

 

1

这里我们需要说一下,因为DEDE本身就已经有了8个默认属性,所以我们从第9个栏目开始增加,往后以此类推,“d”是区分我们前台通过flag=’d’来调用时候的标签,只要不重复即可。

 

上面的是我们添加一个属性,如果我们有非常多的属性来代替二级三级栏目,如何操作呢?直接看实力

 

insert into `dede_arcatt`(sortid,att,attname) values(9,’d’,’标签1′);
insert into `dede_arcatt`(sortid,att,attname) values(9,’d1′,’标签2′);
insert into `dede_arcatt`(sortid,att,attname) values(9,’d2′,’标签3′);

……

alter table `dede_archives` modify `flag` set (‘c’,’h’,’p’,’f’,’s’,’j’,’a’,’b’,’d’,’d1′,’d2′) default NULL;

 

 

通过这个方法就能完全解决批量添加文章属性的问题!

2

我们可以看到,这个就是我们批量增加后的效果,但是大家有没有发现,添加的属性已经和以前的自带的属性混在了一起,小编添加起来会很麻烦,我们在这里给一个小技巧:

我们在默认的属性标签和需要添加的属性标签前面增加一个不用属性标签!然后我们通过数据库里把这个标签做一点手脚。

3 4 5

大家有没有看懂呢?其实就是利用这个小符号和换行,把自己添加的文章自定义属性给隔离开,让小编添加内容的时候可以一目了然。

关于利用这个自定义属性完美操作栏目分类的问题,我们会在接下来的内容中慢慢不愁。

织梦dedecms手机版 上一篇 下一篇出错Request Error!

最新的织梦dedecms程序手机版下一篇变上一篇而且还出错Request Error!,这是因为官方写错了一个地方

打开 /include/arc.archives.class.php 找到

$mlink = ‘view.php?aid=’.$preRow[‘id’];

 

注意:这个文件里面有2个上面的代码,真正要改的是大概在 839 行

改成

$mlink = ‘view.php?aid=’.$nextRow[‘id’];

 

DEDECMS 自定义表单导出EXCEL的方法-新增功能(hero亲测整理)

【1.第一种方法】–华哥强烈推荐你使用第一种! by www.maxwo.com
首先在后台找到/dede/templets/diy_main.htm,查找:

<a href=”../plus/diy.php?action=list&diyid={dede:field.diyid/}” target=”_blank”><img src=’images/gtk-tmp.png’ title=’预览’ alt=’预览’ />前台预览</a>

在后面加上

&nbsp;|&nbsp;<a href=’diy_list.php?action=excel&diyid={dede:field.diyid/}’ target=”_blank”>导出表单Excel</a>

2、修改diy_list.php,在其中搜索: 继续阅读

dedecms织梦jquery+ajax方式提交自定义表单-可用

我们可以借助jquery ajax提交dedecms自定义表单到后台。

此例只做为参考,实际项目中根据自己的情况酌情修改。
html部分
<form action=”/plus/diy.php” enctype=”multipart/form-data” method=”post” id=”diyform”>
<input type=”hidden” name=”action” value=”post” />
<input type=”hidden” name=”diyid” value=”1″ />
<input type=”hidden” name=”do” value=”2″ />
<input type=”hidden” name=”dede_fields” value=”mail_name,text;mail_phone;mail_content,multitext” />
<input type=”hidden” name=”dede_fieldshash” value=”86d34525cf75f8652022f6446152028d” />
<input type=”hidden” name=”setup” value=”ajax” />
<div class=”mail_rdd”>
<div class=”mail_content”>
<table border=”1″ width=”100%” class=”mail_form”>
<tr>
<td width=”50″>
姓名:
</td>
<td class=”mail_input_bg1″>
<input type=”text” name=”mail_name” id=”mail_name” maxlength=”20″ />
</td>
</tr>
<tr>
<td>
电话:
</td>
<td class=”mail_input_bg1″>
<input type=”text” name=”mail_phone” id=”mail_phone” maxlength=”20″ />
</td>
</tr>
<tr style=”height:240px”>
<td>
留言:
</td>
<td class=”mail_input_bg3″>
<textarea name=”mail_content” id=”mail_content”></textarea>
</td>
</tr>
</table>
<div class=”mail_button_bar”>
<div class=”mail_button confirm” onclick=”send()”>
</div>
</div>
</div>
</div>
</form>

js部分
<script type=”text/javascript” src=”http://apps.bdimg.com/libs/jquery/1.6.4/jquery.min.js”></script>
<script>
function send() {
$.ajax({
cache: true,
type: “POST”,
url: “/plus/diy.php”,
data: $(‘#mail_form’).serialize(), // 你的form id www.lol9.cn织梦模板网
success: function(data) {
if (data == “success”) {
alert(‘发送成功!’);
} else {
alert(‘发送失败!’);
}
}
});
}
</script>

 

/plus/diy.php 修改
找到

showMsg($bkmsg,-1,0,3000);

改成
if($setup == ‘ajax’)
{
echo “success”;
exit;
}
else
{
showMsg($bkmsg,-1,0,3000);
}

使用phpexcel导出到xls文件的时候出现乱码解决

<?php
include ‘global.php’;
$ids = $_GET[‘ids’];

$sql = “select * from crm_cost_end where id in ( {$ids} )”;
$result = $db->findAll($sql);
//echo $result[1][‘sn’];

//创建一个excel对象
$objPHPExcel = new PHPExcel();
// Set properties

$objPHPExcel->getProperties()->setCreator(“ctos”)
->setLastModifiedBy(“ctos”)
->setTitle(“Office 2007 XLSX Test Document”)
->setSubject(“Office 2007 XLSX Test Document”)
->setDescription(“Test document for Office 2007 XLSX, generated using PHP classes.”)
->setKeywords(“office 2007 openxml php”)
->setCategory(“Test result file”);

//set width
$objPHPExcel->getActiveSheet()->getColumnDimension(‘A’)->setWidth(8);
$objPHPExcel->getActiveSheet()->getColumnDimension(‘B’)->setWidth(10);
$objPHPExcel->getActiveSheet()->getColumnDimension(‘C’)->setWidth(25);
$objPHPExcel->getActiveSheet()->getColumnDimension(‘D’)->setWidth(12);
$objPHPExcel->getActiveSheet()->getColumnDimension(‘E’)->setWidth(50);
$objPHPExcel->getActiveSheet()->getColumnDimension(‘F’)->setWidth(10);
$objPHPExcel->getActiveSheet()->getColumnDimension(‘G’)->setWidth(12);
$objPHPExcel->getActiveSheet()->getColumnDimension(‘H’)->setWidth(12);
$objPHPExcel->getActiveSheet()->getColumnDimension(‘I’)->setWidth(12);
$objPHPExcel->getActiveSheet()->getColumnDimension(‘J’)->setWidth(30); 继续阅读

dede怎么让同一篇文章在两个(或者多个)栏目显示呢

我们在用织梦建站的过程中可能会遇到要分类   根据价格  风格  模型等,我们就需要建立不同的栏目,那每个栏目下边都有很多一样的文章,重复度会很高,那么我们应该怎么办呢?不知道您在发布文章的时候是否发现有个文章副栏目的选项,通过这个我们就可以实现同一篇文章出现在多个栏目里边喽!下来我把自己的经验分享一下:

1.首先确定某一篇文章要放到哪个栏目下边

选择栏目
2.发布一篇文章 进行设置
选择副栏目
3.点击副栏目 进行选择
确定栏目

4.然后保存就可以喽

dedecms注入漏洞filter.inc.php,pm.php,mtypes.php的解决方法

补丁文件:/include/filter.inc.php

补丁来源:阿里云云盾自研

漏洞描述:dedecms的变量覆盖漏洞导致注入漏洞,/include/filter.inc.php这个文件在系统配置文件之后,里面有foreach循环创建变量,所以可以覆盖系统变量, 在/member目录的大部分文件都包含这么一个文件,也就是说/member目录的大部分文件都受此漏洞影响可以覆盖系统变量

解决方法
  1. 搜索如下代码(46行):
      1. return $svar;

    如下图:

    技术分享

  2. 修改 46 行代码,修改代码如下:
      1. return addslashes($svar);

    修改后如下图

    技术分享


补丁文件:/member/pm.php

补丁来源:阿里云云盾自研

漏洞描述:dedecms会员中心注入漏洞

解决方法
  1. 搜索如下代码(65 行):
      1. $row = $dsql->GetOne("SELECT * FROM `#@__member_pms` WHERE id=‘$id‘ AND (fromid=‘{$cfg_ml->M_ID}‘ OR toid=‘{$cfg_ml->M_ID}‘)");

    如下图:

    技术分享

  2. 在 65 行代码前,添加代码如下:
      1. $id = intval($id);

    修改后如下图

    技术分享


补丁文件:/member/mtypes.php

补丁来源:阿里云云盾自研

漏洞描述:dedecms会员中心注入漏洞

解决方法
  1. 搜索如下代码(71 行):
      1. $query = "UPDATE `#@__mtypes` SET mtypename=‘$name‘ WHERE mtypeid=‘$id‘ AND mid=‘$cfg_ml->M_ID‘";

    如下图:

    技术分享

  2. 在 71 行代码前,添加代码如下:
      1. $id = intval($id);

    修改后如下图

    技术分享

DEDECMS列表页多种属性排序[ajax]-支持select方式和降序升序切换

排序效果

打包下载

链接: https://pan.baidu.com/s/1ZH3AwiCJwr-sMAoi1NxDQQ 密码: p8rm

 

本站下载链接:   织梦列表页多种属性排序[ajax]-支持select方式和降序升序切换

使用说明

该插件是utf-8编码,gbk编码的同学自行转换一下。

1、把include和plus这2个文件夹上传到你网站里

2、在你列表模板里增加 _ajax.htm 结尾的模板,里面的代码参考下载包里的 empletsdefault

  • list_article_ajax.htm
  • list_shop_ajax.htm

3、按钮的代码参考 empletsdefault 里面的

  • list_article.htm
  • list_shop_ajax.htm
<!-- 排序方式 -->
<script src="https://www.dedehtml.com/uploads/allimg/1807/1A3051Z7-0.jpg" type="text/javascript"></script>
<style>
.list_tool{border-bottom:1px solid #D3D3D3;height:25px;text-align:left;padding:10px 2px;}
.list_px{float:left;width:600px;}
.list_tool span,.list_px a{color:#333;padding:0 6px 0 10px;height:24px;line-height:26px;overflow:hidden;background:#EDEDED;border-width:1px;border-style:solid;border-radius:2px;border-color:#999 #ddd #ddd #999;margin:0 10px 0 0;float:left;font-family:'Microsoft YaHei';_font-family:Tahoma;}
.list_tool span{background:#fff;margin-right:0;border:0;}
.list_px a.on{color:#fff;background:#FF9001;line-height:24px;border-color:#C67101 #EC8601 #EC8601 #C67101;font-weight:bold;text-shadow:0 1px 0 #B26501}.list_px a:hover{text-decoration:none;}
</style>
<script type="text/javascript">
$(document).ready(function () {
	$(".list_px a").click(function (e) {
		var data = $(this).attr("data");
		$.get(data,null,function(returnData){
			$("#list").html(returnData);
		});
		var sort = /orderway=(desc|asc)/g.exec(data)[1], tsort = sort == 'desc' ? 'asc' : 'desc';
		data = data.replace('orderway=' + sort, 'orderway=' + tsort);
		$(this).attr('data', data).text(this.innerHTML.replace(sort, tsort)).addClass("on").siblings().removeClass("on");
	})
	$(".field").change(function(){
		var data = $(this).val();
		$.get(data,null,function(returnData){
			$("#list").html(returnData);
		});
		$(this).attr("selected",true);
	});
})
function ajax_url(url){
	$.get(url,null,function(returnData){
		$("#list").html(returnData);
	});
}
</script>
<div class="list_tool">
	<div class="list_px">
		<span>排序方式:</span>
		<a id="a_update" class="on" href="{dede:type}[field:typeurl/]{/dede:type}">更新</a>
		<a data="{dede:global.cfg_basehost/}/plus/listajax.php?tid={dede:field.typeid/}&orderby=hot&orderway=desc" href="javascript:viod();">点击</a>
		<a data="{dede:global.cfg_basehost/}/plus/listajax.php?tid={dede:field.typeid/}&orderby=scores&orderway=desc" href="javascript:viod();">评论</a>
		<a data="{dede:global.cfg_basehost/}/plus/listajax.php?tid={dede:field.typeid/}&orderby=weight&orderway=desc" href="javascript:viod();">权重</a>
		<select class="field" name="field">
			<option selected>默认</option>
			<option value="{dede:global.cfg_basehost/}/plus/listajax.php?tid={dede:field.typeid/}&orderby=hot&orderway=desc">点击从高到低</option>
			<option value="{dede:global.cfg_basehost/}/plus/listajax.php?tid={dede:field.typeid/}&orderby=hot&orderway=asc">点击从低到高</option>
		</select>
	</div>
</div>

后台-系统-网站域名链接 必须要正确。

织梦DEDECMS图集权重无法修改解决办法

一、图集权重无法修改解决办法;

在文章或者图集里面,修改了权重确定并重新返回后发现数值并没有变化

quanzhong

造成的原因是源码中没有获取该值更新数据库,修改方法如下(此处以修改图集权重为例,其他的进入相应的文件更改类似位置代码即可):

依次进入根目录》dede找到打开文件album_edit.php在第151行左右找到

UPDATE #@__archives SET

在其后(换行)加入 weight=’$weight’,  (包括逗号),保存更改后,在网站后台重新生成全站,再试一下,是不是可以保存你修改的权重值了。

二、无法按照权重排序解决办法;

发现权重可以在后台修改了,但是前台显示的图片顺序还是无法按照权重由小到大排序,修改方法为:在你调用的地方,代码大致如下:

{dede:arclist row=’18’ keyword=’学员图片’ titlelen=’12’ typeid=’2′ type=’image.’  isweight=’y’orderby=’weight’}

红色标注的代码决定着是否按照权重排序,很多人写了orderby=’weight’,但是并没有isweight=’y’,有时也是不行的。

经过上述两步,大功告成,别忘了评论哦。

dedecms当前页面的判断”mobile/手机端”的跳转

<meta http-equiv=”mobile-agent” content=”format=xhtml;url={dede:global.cfg_mobileurl/}/list.php?tid={dede:field.id/}”>
<script type=”text/javascript”>if(window.location.toString().indexOf(‘pref=padindex’) != -1){}else{if(/AppleWebKit.*Mobile/i.test(navigator.userAgent) || (/MIDP|SymbianOS|NOKIA|SAMSUNG|LG|NEC|TCL|Alcatel|BIRD|DBTEL|Dopod|PHILIPS|HAIER|LENOVO|MOT-|Nokia|SonyEricsson|SIE-|Amoi|ZTE/.test(navigator.userAgent))){if(window.location.href.indexOf(“?mobile”)<0){try{if(/Android|Windows Phone|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent)){window.location.href=”{dede:global.cfg_mobileurl/}/list.php?tid={dede:field.id/}”;}else if(/iPad/i.test(navigator.userAgent)){}else{}}catch(e){}}}}</script>