作者归档:佛山企业网站设计

dedecms无错优化版全站调用购物车数量

最近用织梦dedecms做商城的时候,需要运用到全站都需要调用购物车数量的情况,但是找遍了网上的帖子无果,其实复制来复制去真没意思,用审查工具查看后,调用的js显示的是出错的。如果你的错误是:

Parse error: syntax error, unexpected '<' in E:\APMServ5.2.6\www\htdocs\plus\my_car_count.php on line 11

       还好有点php的基础,细看之后发现,是11行出错。这里优化后贴出来给大家吧!

全站调用购物车数量

      正确的做法是在/plus下建立一个car_count.php,代码如下

<?php
/**
* my_car_count.php
* /plus
* 显示购物车的商品数量
*/
require_once (dirname(__FILE__) . "/../include/common.inc.php");
define('_PLUS_TPL_', DEDEROOT.'/templets/plus');
require_once(DEDEINC.'/dedetemplate.class.php');
require_once DEDEINC.'/shopcar.class.php';
$cart = new MemberShops();
$car_count = 0;
if($cart->cartCount() >= 1)
{
$car_count = $cart->cartCount();
}
echo ('document.write("' . $car_count . '"); ');
exit;
?>

       前台在任意地方用,注意car_count.php路径就好了.

购物车商品数量:<script language="javascript" src="/plus/car_count.php"></script>个。

      如果你希望提交到购物车后能显示商品的缩略图,那就继续往下看。

购物车显示商品缩略图

dedecms无错优化版全站调用购物车数量

       找到/plus/postocar.php,找到

SELECT id,channel,title

       共有两处,都修改成

SELECT id,channel,title,litpic

       继续搜索

$rows['title']     = $rs['title'];

       共两处,在该字段下面增加

$rows['litpic']     = $rs['litpic'];

        找到你的模板目录,如/template/plus/car/htm,比如在

<td height="23"><a href="view.php?aid={dede:value.id/}" target="_bank">{dede:value.title/}</a></td>

        下面增加

<td height="23"><img src="{dede:value.litpic/}" width="80" height="80"/></td>

阿里云主机设置织梦程序禁止脚本执行权限及禁止写入

互联网没有绝对的安全,织梦程序也是,很多用户反馈织梦安全性太差,笔者认为安全性是两个层面,一方面是主机层面,一方面是程序方面。出现安全漏洞就把问题都丢给程序,只能说您对安全没有太高的意识。

今天我们重点介绍下阿里云虚拟主机的控制面板来设置文件夹权限,从主机方面来做好织梦程序的安全防护工作。

其实大多数虚拟主机功能都越来越完善了,主机控制面板都带有这样的功能。

下面言归正传。

1:打开阿里云虚拟主机控制面板

阿里云主机设置织梦程序禁止脚本执行权限及禁止写入

2:找到-文件管理–文件/目录权限设置 功能选项

阿里云主机设置织梦程序禁止脚本执行权限及禁止写入

3:按照要求,把相应文件设置相应权限

   3.1)data、templets、uploads、html(可删)、special(可删)、images、install(装后删)目录设置为不允许执行脚本

data、templets、uploads、html(可删)、special(可删)、images、install(装后删)目录设置为不允许执行脚本

   3.2)include、plus、dede目录禁止写入,系统将更安全;

include、plus、dede目录禁止写入,系统将更安全;

            3.3)设置好后,查看下权限(阿里云只显示设置过禁止脚本的目录);

include、plus、dede目录禁止写入,系统将更安全;

baidu map 引用地图模块html

BAIDU MAP 引用地图模块HTML

1–body部分插入

<div class=”lh-map” id=”baiduMap”></div>

2–以下是样式+接口文件

<style>#baiduMap img{width:auto !important; min-width:100% !important;}</style><script>window._bd_share_config={“common”:{“bdSnsKey”:{},”bdText”:””,”bdMini”:”1″,”bdMiniList”:false,”bdPic”:””,”bdStyle”:”0″,”bdSize”:”10″},”share”:{}};with(document)0[(getElementsByTagName(‘head’)[0]||body).appendChild(createElement(‘script’)).src=’http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion=’+~(-new Date()/36e5)];</script><script type=”text/javascript” src=”/static/js/api-2.0_ny22a16GzbMDs1xHsTvjlqtZ.js”></script><script type=”text/javascript”>//创建地图var myMap=new BMap.Map(‘baiduMap’);var point=new BMap.Point(118.791304,32.032297);myMap.centerAndZoom(point,18);

//添加覆盖物var marker = new BMap.Marker(point);  // 创建标注 myMap.addOverlay(marker);   // 将标注添加到地图中

//添加控件myMap.addControl(new BMap.NavigationControl()); // 平移缩放myMap.addControl(new BMap.OverviewMapControl()); //缩略地图//myMap.enableScrollWheelZoom(); //滚轮缩放
</script>

织梦dedecms 5.7解决修改文章后,发布时间自动更新的方法

织梦 dedecms5.7有一个非常智能的“问题”,当我们把以前发布的文章修改一下保存,我们会发现这篇文章的发布时间就变成全站的了。

很多站长其实是比较喜欢这个功能的,相当于自动更新了,但是有些站长也不想这样。
 如果不喜欢这样的站长,就按照下面的修改方法解决织梦cms修改文章后,发布时间自动更新的方法,非常简单:
 找到下面的文件和代码:
 dede/templets/article_edit.htm把$nowtime = GetDateTimeMk(time());改成$nowtime = GetDateTimeMk($arcRow[“pubdate”]);这样就可以保证修改文章后,发布文章的时间仍然是老时间,而非修改文章时的时间。

购物车优化之提交数量和自定义字段到购物车DEDE

用户体验是网站建设中最重要的环节,而流量只是其中一个影响SEO排名的因素而已,真正发生转化的是网站拥有良好的用户体验和丰富内容。下面就围绕着用户体验分享一个购物流程的案例。

       DedeCMS有简单商城的功能,大多数人不用dede来做商城,而一般的企业站除了展示外,还有订单提交或者订购的功能。网上资源比较有限,大多东抄西抄,能真正做的人还是比较少。废话不多说,看效果图。

       可以看到dede商品模板中,实现功能如下:提交衣服尺码,购物数量,自定义字段到购物车;提交到购物车后停留在原页面。

(帖子2016年1月5日更新)

      有朋友问我上面商品页的下面几个缩略图的调用和放大镜效果,特写了一个帖子结合dede图集局部放大镜效果jquery特效代码兼容性强

1.衣服尺码、购物数量等自定义字段提交到购物车   

         这里并不需要js支持,只需要在商品模板中,找到

<form id="formcar" name="formcar" method="post" action="{dede:field name='phpurl'/}/posttocar.php">

       在提交表单里面增加字段,guige为自定义,buynum为默认,不可更改。如果想实现按钮自动增加减,请移步dede购物车优化之商品全选及数量增加减按钮

<form id="formcar" name="formcar method="post" action="{dede:field name='phpurl'/}/posttocar.php">
....
<p>尺码:
 <select name="guige" >
  <option value="155/76">155/76</option>
  <option value="155/78">155/78</option>
  <option value="155/80">155/80</option>
  <option value="155/82">155/82</option>
</select>
</p>
<p>
<input name="buynum" type="text" id="buynum" value="1"/>
</p>
.....
</form>

       表单的数据发送到/plus/postocar.php,获取数据传送到购物车。找到/plus/postocar.php,大概在43行左右找到

$rows['title']     = $rs['title'];

      下面增加,可以理解为增加一个guige的索引,值为提交过来的guige字段

$rows['guige'] = $_POST['guige'];
$rows['buynum'] = $_POST['buynum'];

       打开/templates/plus/car.htm,找到

 {dede:array.Items}

       找到下面字段,在下面(或者其他合适的位置)

<td height="23"><span class="price">{dede:value.price/}</span ></td>
<!--后面增加-->
<td height="23">{dede:value.guige/}</td>

2.提交到购物车后停留在原页面

       这里也不需要js支持,打开/plus/postocar.php,大概在46行,修改为对应的部分

$cart->addItem($id, $rows);
ShowMsg("已添加加到购物车!", "javascript:history.go(-1);", false, 500);  //修改提示字段,跳转时间为500毫秒,,返回上一页

       用户提交商品到购物车后不跳转到购物车,直接返回原页面并刷新该页面。

织梦dede在线询盘/订单制作方法

织梦本身具有产品的购物功能,但是有时候不需要在线支付和配送,只需要简单的让客户选购好一些产品,然后在线发个订单询盘就可以,但是DEDECMS本身是不具备这样的功能,那可不可以实现在线询盘或订单功能的,答案是肯定的。其中就需要用到DEDECMS后台自带的“自定义表单”功能,位置在左侧选项“核心”-“频道模型”-“自定义表单”。

以下是用DEDECMS织梦系统开发在线询盘订单功能的详细过程:

首先,增加的栏目内容模型必须选择“商品|Shop”,这样购物车功能才能使用,我们这里增加一个“商品”栏目

在“商品”栏目里面添加产品

在“自定义表单”页面中,点击“增加新的自定义表单”

然后在“自定义表单名称”输入你需要的名称,其他建议使用默认

表单建好之后,我们需要新增字段,点击如下图的编辑图片

在新开的页面中,点击“添加新字段按钮”

输入你需要的字段和名称

新建一个字段来保存客户询盘的产品,这个是必须要加的字段,选择“HTML文本”,这样客户咨询的产品客户传到后台页面,并保存产品对应的链接

点击在线预览

打开新页面,然后点击“发布信息”

这时出来了页面,这步很重要,查看这个页面的源码,将

直接的代码拷贝

粘贴到“templetspluscar.htm”的购物车form下面,如下图

我们在产品详细页面,点击“放入购物车”按钮

预览效果如下 在对应的订单表单里面填上信息,点击发送

即可将询盘订单传到网站的后台。

用DEDECMS制作的询盘订单系统就完成了!

众多盒子石皮姐固件都在这里可以找到!!2020.7月有效

众多盒子石皮姐固件都在这里可以找到!!2020.7月有效

http://down.xiaobaishuaji.com/?prefix=%E9%AD%94%E7%99%BE%E5%92%8C/

http://down.xiaobaishuaji.com/?prefix=/root

http://down.tvapk.com//data/1606/cm101s_hi3798m.zip 我就是用这个破解魔百盒CM101s这个的!!!喜欢拿去!!!不谢。记得常来!!!

XPATH div选定指定位置便于采集

xpath如何取包含多个class属性

//div[@class=”team-about font14″] ##### 唯一匹配 #####

//div[contains(@class,”team-about”)] ##### 包含匹配 #####

如果HTML结构是这样

        <div class=”demo”></div>

那么我知道可以写xpath //div[@class=”demo”],但是如果我的html是

        <div class=”test demo”></div>
<div class=”demo test”></div>
<div class=”test demo2″></div>

我只想选出有demo这个class的对象,那应该怎么弄


要取多个class属性值的元素,应该如何办呢;

如:

        <div class=’a b’>test</div>


如果是用xpath(‘//div[@class=”a”]’) 会取不到这里面的值;


可以用如下的表达式:

        xpath(‘//div[contains(@class,”a”)]’)   #它会取得所有class为a的元素


或者

        xpath(‘//div[contains(@class,”a”) and contains(@class,”b”)]’) #它会取class同时有a和b的元素



如果没记错的话可以这么来:

        //div[contains(@class, ‘demo’)]

如果是多个则可以:

        //div[contains(@class, ‘demo’) and contains(@class, ‘other’)]

如果目标 class 不一定是第一个,那么:

        //div[contains(concat(‘ ‘, @class, ‘ ‘), ‘demo’)]

顺便一提,用 Jetbrains 家的 IDE,里面有内置的 xpath 规则生成器。

一、选取节点
常用的路劲表达式:

表达式描述实例
nodename选取nodename节点的所有子节点xpath(‘//div’)选取了div节点的所有子节点
/从根节点选取xpath(‘/div’)从根节点上选取div节点
//选取所有的当前节点,不考虑他们的位置xpath(‘//div’)选取所有的div节点
.选取当前节点xpath(‘./div’)选取当前节点下的div节点
..选取当前节点的父节点xpath(‘..’)回到上一个节点
@选取属性xpath(’//@calss’)选取所有的class属性

二、谓语

谓语被嵌在方括号内,用来查找某个特定的节点或包含某个制定的值的节点

实例:

表达式结果
xpath(‘/body/div[1]’)选取body下的第一个div节点
xpath(‘/body/div[last()]’)选取body下最后一个div节点
xpath(‘/body/div[last()-1]’)选取body下倒数第二个div节点
xpath(‘/body/div[positon()<3]’)选取body下前两个div节点
xpath(‘/body/div[@class]’)选取body下带有class属性的div节点
xpath(‘/body/div[@class=”main”]’)选取body下class属性为main的div节点
xpath(‘/body/div[price>35.00]’)选取body下price元素值大于35的div节点

 三、通配符

Xpath通过通配符来选取未知的XML元素

表达式结果
xpath(’/div/*’)选取div下的所有子节点
xpath(‘/div[@*]’)选取所有带属性的div节点

 四、取多个路径

使用”|”运算符可以选取多个路径

>

表达式结果
xpath(‘//div|//table’)选取所有的div和table节点

五、Xpath轴

轴可以定义相对于当前节点的节点集

轴名称表达式描述
ancestorxpath(‘./ancestor::*’)选取当前节点的所有先辈节点(父、祖父)
ancestor-or-selfxpath(‘./ancestor-or-self::*’)选取当前节点的所有先辈节点以及节点本身
attributexpath(‘./attribute::*’)选取当前节点的所有属性
childxpath(‘./child::*’)返回当前节点的所有子节点
descendantxpath(‘./descendant::*’)返回当前节点的所有后代节点(子节点、孙节点)
followingxpath(‘./following::*’)选取文档中当前节点结束标签后的所有节点
following-sibingxpath(‘./following-sibing::*’)选取当前节点之后的兄弟节点
parentxpath(‘./parent::*’)选取当前节点的父节点
precedingxpath(‘./preceding::*’)选取文档中当前节点开始标签前的所有节点
preceding-siblingxpath(‘./preceding-sibling::*’)选取当前节点之前的兄弟节点
selfxpath(‘./self::*’)选取当前节点

六、功能函数   

使用功能函数能够更好的进行模糊搜索

函数用法解释
starts-withxpath(‘//div[starts-with(@id,”ma”)]’)选取id值以ma开头的div节点
containsxpath(‘//div[contains(@id,”ma”)]’)选取id值包含ma的div节点
andxpath(‘//div[contains(@id,”ma”) and contains(@id,”in”)]’)选取id值包含ma和in的div节点
text()xpath(‘//div[contains(text(),”ma”)]’)选取节点文本包含ma的div节点

宝塔面板密码的解决方案

进入ssh,推荐先安装 堡塔SSH客户端 (免费/简单/中文/多屏) ,输入以下命令重置密码(把命令最后面的   “testpasswd”  替换成你要改的新密码)
注:若是debian/ubuntu用户,请使用有root权限的账户去执行这条命令

  1. cd /www/server/panel && python tools.py panel testpasswd

复制代码

紫框即你要修改的密码
红框即面板账户

如果提示多次登录失败,暂时禁止登录 请输入以下命令 清除登录限制

  1. rm -f /www/server/panel/data/*.login

复制代码
重置密码教程视频.mp4(1.76 MB, 下载次数: 62290)

新装面板用户获取默认账号密码命令:bt default

6.x及以后版本可输入

  1. bt

复制代码
命令获取工具菜单来重置账户密码