产品详情页调用相关产品最常见的应用就是装饰公司网站,设计师页面要求调取设计师做过的案例。aspcms本身有这个功能,但不能完全符合要求,看代码

{aspcms:content sort={aspcms:sortid} num=10 order=order}
<a href='[content:link]' >
<img src='[content:pic]' />
</a>
<a href="[content:link]">[content:title len=12]</a>
{/aspcms:content}

  

这个只能读取指定栏目的相关产品,把每个设计师做设置成栏目很显然不太现实,这种情况下就只能改程序了,本人这里做了个接口,放在根目录api文件夹下

<!--#include file="../inc/AspCms_SettingClass.asp" -->
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<%
Function VbsUnEscape(str)
Dim x
x=InStr(str,"%")
Do While x>0
VbsUnEscape=VbsUnEscape&Mid(str,1,x-1)
If LCase(Mid(str,x+1,1))="u" Then
VbsUnEscape=VbsUnEscape&ChrW(CLng("&H"&Mid(str,x+2,4)))
str=Mid(str,x+6)
Else
VbsUnEscape=VbsUnEscape&Chr(CLng("&H"&Mid(str,x+1,2)))
str=Mid(str,x+3)
End If
x=InStr(str,"%")
Loop
VbsUnEscape=VbsUnEscape&str
End Function
%>
<%
dim desginer,res
desginer = VbsUnEscape(Request.Form("des"))
Function makeList(desginer)
dim rs
set rs =conn.exec("select * from {prefix}Content where ContentStatus=1 and IsRecommend=1 and P_author='"&desginer&"'","r1")
res = "["
do While not rs.eof
res = res & "{"
res = res & """ContentID"":" & rs("ContentID")&","
res = res & """title"":""" & rs("title")&""","
res = res & """IndexImage"":""" & rs("IndexImage")
rs.MoveNext
if not rs.eof then
res = res & """},"
else
res = res & """}"
end if
loop
res = res & "]"
rs.close : set rs=nothing
makeList = res
End Function
%>
<%
response.Write makeList(desginer)
%>

  

该api接受设计师参数,从数据库中查出符合条件的数据,然后返回,前台通过ajax获取(由于ajax不支持GB2312,遇到中文就乱码,所以发送ajax请求前先对参数进行编码,然后再解码)

var $related = $(".related");//相关产品容器
var desginer = $(".related-title").attr("data-author");//查询参数
console.log(desginer);
$.post("/api/AspCms_Api.asp", {des: escape(desginer)}, function(res) {
var works = JSON.parse(res.slice(res.indexOf("["), res.length));
var templateStr = "<ul class='related-item clearfix'>"
works.forEach(function(item, index) {
templateStr += "<li><a href='/content/?" + item.ContentID + ".html'><img src=" + item.IndexImage + "><span>" + item.title + "</span></a></li>"
});
templateStr += "</ul>"
$related.html(templateStr);
})

  

前台通过ajax获取数据,并塞入容器

后台也要做一些设置,先到“内容维护”->“内容参数管理”栏目添加参数,这里控件类型选择单选,在备选内容中输入设计师,录入产品的时候记得给案例选择设计师。这里有个问题,如果再次编辑参数,“备选内容”区域是不显示的,因此需要更改/_content/_Spec/AspCms_SpecEdit.asp?action=update&id=5文件

去掉display:none,并对控件类型做个判断,不是所有情况下“备选内容”都要显示的

<script type="text/javascript">
if(<%=SpecControlType%>!==6){
document.getElementById("trSpecOptions").style.display="none";
}
</script>

  

判断SpecControlType字段,只有在单选的情况下才显示“备选内容”

“备选内容”的值输出由<%=SpecOptions%>改成<%=decode(SpecOptions)%>,新建“内容参数”保存时会进行编码,这里要解码。

最后一步,修改保存函数

Sub EditSpecSave
dim sql,rsObj
SpecField=filterPara(getForm("SpecField","post"))
SpecID=filterPara(getForm("SpecID","post"))
SpecOptions=filterPara(getForm("SpecOptions","post"))
SpecDiversification=filterPara(getForm("SpecDiversification","post"))
SpecControlType=filterPara(getForm("SpecControlType","post"))
SpecName=filterPara(getForm("SpecName","post"))
SpecCategory=filterPara(getForm("SpecCategory","post"))
SpecOrder=filterPara(getForm("SpecOrder","post"))
SpecNotNull=filterPara(getForm("SpecNotNull","post")) SpecOptions = encode(SpecOptions)//对SpecOptions进行编码 if SpecNotNull = "on" then
SpecNotNull = true
else
SpecNotNull = false
end if
sql = "select * from {prefix}SpecSet where SpecID="&SpecID
Set rsObj=conn.Exec(sql,"r1") sql = "update {prefix}SpecSet set SpecName='"&SpecName&"',SpecCategory='"&SpecCategory&"',SpecOptions='"&SpecOptions&"',SpecOrder="&SpecOrder&",SpecNotNull="&SpecNotNull&" where SpecID="&SpecID
//sql语句不再提交SpecControlType,默认会再次提交的,从而导致SpecControlType变成空
conn.Exec sql,"exe"
alertMsgAndGo "修改成功","AspCms_Spec.asp"
End Sub

  

这样要添加设计师时就可以直接在“内容参数管理”界面添加了

aspcms产品详情页调取相关产品的更多相关文章

  1. (转)ecshop产品详情页显示不清晰

    详情页面的商品图片的设置方法 后台商店设置-显示设置-显示设置(就是这里,商品图片宽度和高度设置的大点就行了,放大镜效果也清晰了) 按照您详情页面图片的实际显示大小来添写. 商品管理-图片批量处理,这 ...

  2. 使用ajax实现html页面产品详情页文字具体内容

    <script type="text/javascript" src="Assets/js/jquery.min.js"></script&g ...

  3. 《React后台管理系统实战 :四》产品分类管理页:添加产品分类、修改(更新)产品分类

    一.静态页面 目录结构 F:\Test\react-demo\admin-client\src\pages\admin\category add-cate-form.jsx index.jsx ind ...

  4. woocommerce根据标题获取相关产品

    我们知道woocommerce的相关文章是根据分类category或标签tag来获取的,能不能实现根据标题来调取相关产品呢?get_posts() 函数可以根据库存.价格.自定义项.搜索条件等不同的标 ...

  5. Python爬虫:新浪新闻详情页的数据抓取(函数版)

    上一篇文章<Python爬虫:抓取新浪新闻数据>详细解说了如何抓取新浪新闻详情页的相关数据,但代码的构建不利于后续扩展,每次抓取新的详情页时都需要重新写一遍,因此,我们需要将其整理成函数, ...

  6. 解决 ECSHOP v273 产品详情页面评论不显示的问题

    问题描述:   最近同事使用ECSHOP v273帮客户开发了一个商城系统,部署到服务器在测试的时候发现产品详情页面里测试的评论不显示,只显示了数量(其实是产品购买的次数)   因为同事搞了好长时间都 ...

  7. Asp.net MVC 3实例学习之ExtShop(四)——完成产品列表页

    在完成产品列表页前要做一些准备功夫.首先是去下载MvcPager用了为产品列表分页.下载的可能是基于MVC 2的,没关系,可以用在MVC 3上.如果有担心,下载源代码重新编译一次好了.下载后将DLL添 ...

  8. 如何让Android微博个人详情页滚动到顶部

    版权声明:本文为xing_star原创文章,转载请注明出处! 本文同步自http://javaexception.com/archives/103 个人详情页滑动到顶部 最近产品提了个新需求,需要实现 ...

  9. ecshop 商品详情页显示同类别下的推荐商品

    1.打开goods.php文件找到下面代码 $smarty->assign('goods_rank', get_goods_rank($goods_id)); // 商品的销售排名 在上面的代码 ...

随机推荐

  1. Kinect 开发 —— 常见手势识别(上)

    悬浮按钮 (Hover Button) 悬浮按钮通过将鼠标点击换成悬浮然后等待(hover-and-wait)动作,解决了不小心点击的问题.当光标位于按钮之上时,意味着用户通过将光标悬浮在按钮上一段时 ...

  2. nginx配置静态文件服务器的一个特殊需求的探索和分享, nginx处理不同路径返回统一文件,nginx改写,跳转请求.

    最近在做一个前后端分离的个人博客,在做自己博客的时候有个想法,本来是打算用nginx作为静态文件服务器使用,django做后端程序. 我的前端页面用vue写的,结果用组件用嗨了,发现页面列表和 详情都 ...

  3. 【习题 8-4 UVA - 11491】Erasing and Winning

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 考虑删掉第i位. 则第i+1位就会取代第i位. 则肯定第i+1位比第i位大的话,才比较好. 则从小到大贪心删,找到第一个a[i+1] ...

  4. make 2>&1 | tee build.log

    make 2>&1 | tee build.log 保存编译log,方便问题查找

  5. Codeforces 919F. A Game With Numbers(博弈论)

      Imagine that Alice is playing a card game with her friend Bob. They both have exactly 88 cards and ...

  6. Python 极简教程(一)前言

    现在 Python 用处很多,学的人也很多,其流行程度自不必说.但是很多人学 Python 的时候都遇到过问题,特别对于非计算机专业毕业的人来说. 现在的教程非常多,但是绝大部分对于初学者都不够友好. ...

  7. numpy_basic2

    # 六.numpy的常用函数 1. 读取文件 逻辑上可被解释为二维数组的文本文件: 数据项1<分隔符>数据项2<分隔符>...<分隔符>数据项n numpy.loa ...

  8. actionbar spinner-用法实例

    今天需要更改一个actionbar上的spinner的字体颜色,结果试了好长时间都没有解决,最后才发现,原来他是在代码下增加的一个textview,然后使用adapter加载的,并不是直接用frame ...

  9. event事件对象 兼容写法:var oEvent=ev||event;和取消事件冒泡

    要在整个页面添加事件要使用document,例如要捕抓鼠标位置 document.onclink=function(ev)  //FireFox Chrome默认都是有一个值传进来的 { var oE ...

  10. JS实现拖拽小案例

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...