|
主题:关于首页调用单页栏目内容的问题 |已解决 [收藏主题] | 转到: |
----------------第三次发帖--------------------- 使用此方法解决了该问题,不过有点小题大做 呵呵 http://bbs.kesion.com/forumthread-1042291-1.html 按照该贴方法修改后, sql标签名称为 单页内容 语句部分 select id,foldername,ClassBasicInfo from ks_class where id= '{$Param(0)}' 或者偷懒直接用*号代表所有字段 select * from ks_class where id='{$Param(0)}' 循环部分要用这个 [loop=1] 第一个参数用1,第二个参数 是字数,不限制用0 主页调用: {SQL_单页内容(20137083961146)} 20137083961146 为单页栏目ID 或者改进下:用参数 {$Param(1)}代替限制的字数。循环部分要用这个 [loop=1] {SQL_单页内容(20137083961146,300)} 300就是限制的字数,0不限制 ----------------第二次发帖--------------------- 百度了这个方法,尝试后还是一样的问题。 http://blog.163.com/mayoulu@126/blog/static/3767190920093129450683/ 新增SQL标签"{$SQLReplace}"用以取代asp的函数split 需求说明 有时我们需要通过SQL标签调用栏目的介绍(classbasicinfo)及自定义内容(classdefinecontent),他们的结构是用这种方式存储的"a|||b|||c",这个时间,如果我们需要其中的一项,就需要split函数,而科汛没有提供,为此特意二次开发 代码修改:Kesion.Label.SQLCls.asp 示例:{$SQLReplace({$Field(ClassDefineContent,Text,0,0,2,)},||||,0)} 参说说明:参数1是为要拆分的内容,参数2是拆分的分割符,参数3是取第几位,注意是以0开始的 找到大约350行,增加以下红色部分 End If Function MySplitField(lpFieldValue) 调用说明: SQL语句:select top {$Param(0)} classid,id,foldername,ClassDefineContent from ks_class where tn='{$Param(1)}' and topflag=1 order by folderorder asc 循环部分:<dl>[loop={$Param(0)}]<dt>{$SQLReplace({$Field(ClassDefineContent,Text,0,0,2,)},||||,0)}【<a href="{$Field(id,GetInfoUrl,100,1)}">{$Field(foldername,Text,0,...,0,)}</a>】</dt><dd>{SQL_疾病导航内部(10,{$Field(id,GetInfoUrl,100,2)})}</dd>[/loop]</dl> -----------------第一次发帖--------------------------- 一直都遇到这样的问题,就是如何在主页或频道页调用单页栏目的内容。 我们知道单页栏目的内容只能使用标签{$GetClassIntro}在模板里调用,但是这个标签在首页和频道也是不起作用的。 很多人给出的方法就是直接输入文字,或者另外建一个标签输入文字。 也有人使用: 单页面-自设内容 来实现 http://bbs.kesion.com/forumthread-169344.html 但是觉得还是太过复杂,也不方便管理。 更多的是直接新建一篇文章,然后用 {=getfieldvalue(模型ID,文档ID,字段名称)}标签来调用 推荐这个方法。 http://bbs.kesion.com/forumthread-787716.html 这个标签只能调用文章 那么我如果就是要使用单页栏目的功能,并实现首页调用,难道就真的做不到吗?于是我就再想 单页栏目的内容究竟是在哪个字段里面,于是我一个个字段试了一下,发现是classbasicinfo 这个字段,打开数据库看ks_class的表也是一样。但是 这个字段表示的是“栏目信息配置集合”,就是这样的一个字段,有很多内容: 那么怎么提取出栏目内容呢? 我百度一下找到了: http://pewper.blog.163.com/blog/static/29708608200911314464239/ 假设标签名为 单页内容 --------------------------- 栏目介绍语句: select top 100 id,foldername,mid(classbasicinfo,instr(classbasicinfo,"||||")+4) as s,mid(s,1,instr(s,"||||")-1) as 栏目介绍 from ks_class where tj=1 order by folderorder 说明,这个红色的就是 单页栏目的ID --------------------------- [loop=1] 我测试的结果:实际汉字字数=输入数字/2-3 输入20只显示了7个汉字。 --------------------------- 主页或频道也调用就是 {SQL_单页内容()} 当然如果你想这个标签更灵活通用,可以用参数来代替 单页栏目的ID select id,foldername,mid(classbasicinfo,instr(classbasicinfo,"||||")+4) as s,mid(s,1,instr(s,"||||")-1) as 栏目介绍 from ks_class where id= '{$Param(0)}' 调用的时候就用 {SQL_单页内容(20137083961146)} 欢迎访问我的小站:大学风论坛 www.zgdxs.net ----------------更灵活的使用方法 但是只适合文字很短的介绍调用----------------------------------- 栏目简短介绍通用sql标签,适合用于公司简介等单页形式236个字符(含空格)则内容会阶段,模板剩下的代码也不正常。 使用方法: {SQL_栏目通用简短介绍(栏目ID号,简短字数)} 示例:{SQL_栏目通用简短介绍(2000012569,210)} 调用ID为2000012569的栏目介绍210字 {SQL_栏目通用简短介绍(2000012569,0)} 调用ID为2000012569的栏目介绍全部内容 参数说明: 第一个参数是栏目所在的ID号 第二个参数是调用的字数,如果调用全部就为0 sql语句: select top 1 id,FolderName,mid(classbasicinfo,instr(classbasicinfo,"||||")+4) as s,mid(s,1,instr(s,"||||")-1) as 栏目介绍,mid(classbasicinfo,1,instr(classbasicinfo,"||||")-1) as 栏目图片 from ks_class where classid='{$Param(0)}' 循环体: [loop=1] 如果文字少可能没有什么问题,但是如果文字多就失败了。好像是限制字数了。 问题见: http://bbs.kesion.com/forumthread-146291-1.html 尚无解,折腾半天就是鸡肋啊! -------
如有不当之处,请指正! 谢谢! 点评 共 2 条乱弹琴:4.0 ★★★★★ 说得很好:4.0 ★★★★★ |
|||
大学风论坛http://www.zgdxs.net 校园论坛,校园门户 | |||
支持(0) | 反对(0) 顶端 底部 |
1006298681 发表于:2013/3/14 9:01:50 | 只看该作者 查看该作者主题
沙发
|
|
支持(0) | 反对(0) 顶端 底部 |
支持(0) | 反对(0) 顶端 底部 |
支持(0) | 反对(0) 顶端 底部 |
||||松岛枫阿斯顿发送到发送到的||||||||||||0%ks%0,left,300,300%ks%1%ks%%ks%http://www.kesion.com 红字是读取的的, 不知道为什么 前后会出现几个乱码 黑字是系统加上的 |
|
支持(0) | 反对(0) 顶端 底部 |
以下是引用 kswtzj在2013-3-19 23:29:00的发言: ||||松岛枫阿斯顿发送到发送到的||||||||||||0%ks%0,left,300,300%ks%1%ks%%ks%http://www.kesion.com 红字是读取的的, 不知道为什么 前后会出现几个乱码 黑字是系统加上的 正因为这个栏目信息有很多,一个字段包含了很多内容,所以需要用自定义函数来把我们需要的部分提取出来的。 |
|
支持(0) | 反对(0) 顶端 底部 |
支持(0) | 反对(0) 顶端 底部 |
支持(0) | 反对(0) 顶端 底部 |
支持(0) | 反对(0) 顶端 底部 |
支持(0) | 反对(0) 顶端 底部 |
<上一主题 | 下一主题 > |