phpcms_v9模板制作及二次开发常用代码

news2024/10/6 2:31:54

0:调用最新文章,带所在版块

{pc:get sql="SELECT a.title, a.catid, b.catid, b.catname, a.url as turl ,b.url as curl,a.id FROM `v9_news` a, `v9_category` b WHERE a.catid = b.catid ORDER BY `a`.`id` DESC " num="15" cache="300"}
{loop $data $r}
<h6><font class="cate"><a href="{$r[curl]}">[{$r[catname]}]</a></font><a
class="gray" href="{$r[turl]}" title="{$r[title]}"> {str_cut($r['title'],26)}</a></h6>
{/loop}
{/pc}

====[{$r[catname]}]所在版块的调用
0-1、调用指定栏目下面的内容页的内容
{pc:get sql=“SELECT * FROM v9_page where catid=31”}
{loop $data $key KaTeX parse error: Expected 'EOF', got '}' at position 4: val}̲ {str_cut(s…val[content]),705, ‘…’)}
{/loop}
{/pc}

1.截取调用标题长度

{str_cut(KaTeX parse error: Expected 'EOF', got '}' at position 16: v[title],36,'')}̲ {str_cut(v[‘title’],34)} 超出用 … 代替
{str_cut(KaTeX parse error: Expected 'EOF', got '}' at position 22: …le'],34, '???')}̲超出用 ???代替 {str_…v[‘title’],34,‘’)}超出不用任何字符代替

2.格式化时间

调用格式化时间 2011-05-06 11:22:33
{date(‘Y-m-d H:i:s’,KaTeX parse error: Expected 'EOF', got '}' at position 14: r[inputtime])}̲ <span class="r…v[‘inputtime’])}

3.多栏目调用&多推荐位调用

调用需求:文章范围为59 60 61三个栏目,并且推送到了27 和28两个推荐位;
从第三条开始,连续调用7篇文章。

{pc:get sql=“SELECT * FROM v9_news WHERE id IN (SELECT id FROM v9_position_data WHERE posid in(27,28) and catid in(59,60,61)) order by listorder DESC” cache=“3600” start=“3” num=“7” return=“data” }
{loop $data $n $r}

  • ·{str_cut ($r[title],22,'')}
  • {/loop} {/pc}

    4.显示栏目名称(只是名称,不带链接)

    {$catname}

    显示栏目名称和链接(可以点击)

    { C A T E G O R Y S [ CATEGORYS[ CATEGORYS[r[‘catid’]][‘catname’]}

    5.获取父栏目id/获取父栏目名称

    { C A T E G O R Y S [ CATEGORYS[ CATEGORYS[catid][parentid]}
    父栏目名称:{ C A T E G O R Y S [ CATEGORYS[ CATEGORYS[CAT[parentid]][catname]}

    6.外部数据源调用

    dedecmsdb 在后台数据源处添加
    {pc:get sql=“SELECT * FROM cq_member where mtype=‘企业’ " cache=“3600” dbsource=“dedecmsdb"num=“7” return=“data”}
    {loop $data KaTeX parse error: Expected 'EOF', got '}' at position 2: r}̲ <a href="/memb…r[userid]}” title=”{KaTeX parse error: Expected 'EOF', got '}' at position 9: r[uname]}̲" target="_blan…r[uname],28,‘’)}
    {/loop}
    {/pc}

    7.调用子栏目(在栏目首页模板需要用到)

    {pc:content action=“category” catid=“ c a t i d " n u m = " 25 " s i t e i d = " catid" num="25" siteid=" catid"num="25"siteid="siteid” order=“listorder
    ASC”}
    {loop $data KaTeX parse error: Expected 'EOF', got '}' at position 2: r}̲ <a href="{r[url]}">{$r[catname]} |
    {/loop}
    {/pc}

    8.显示指定id的栏目名称 (例子这里catid=22)

    {$CATEGORYS[22][‘catname’]}

    9.在文章面前显示文章类别

    {pc:content action=“lists” catid=“79” order=“listorder DESC” num=“14” }

    <?php $TYPE = getcache('type_content','commons');?>

    {loop $data $n $r}

  • {if $TYPE[$r[typeid]][name]}[ {$TYPE[$r[typeid]][name]}] {/if}
  • 10.指定变量循环增长(幻灯片经常用到)

    {pc:content action=“lists” catid=“66” order=“listorder DESC” thumb=“1” num=“5” }
    {php $num = 0}
    {loop $data KaTeX parse error: Expected 'EOF', got '}' at position 2: r}̲ linkarr[{num}] = "{KaTeX parse error: Expected 'EOF', got '}' at position 7: r[url]}̲"; picarr[{num}] = "{KaTeX parse error: Expected 'EOF', got '}' at position 9: r[thumb]}̲"; textarr[{num}] = “{str_cut($r[title],36,‘’)}”;
    {php $num++}
    {/loop}
    {/pc}

    11.文章调用使用limit

    {pc:content action=“position” posid=“36” num=“1” order=“listorder DESC limit 1,1–” }
    其他都是跟以前一样使用
    {pc:content action=“position” posid=“31” order=“listorder DESC” limit=‘1,8–’}
    {loop $data $r}

  • {str_cut($r[title],36,'')}

  • {/loop}
    {/pc}

    12.文章从指定位置开始调用起始位置为5,调用3条。相当于limit功能。

    {pc:content action=“position” posid=“27” order=“listorder DESC” num=“3” start=“5”}
    {loop $data KaTeX parse error: Expected 'EOF', got '}' at position 2: r}̲ <a href='{r[url]}'>{str_cut($r[description],115)}…
    {/loop}
    {/pc}

    13.文章列表页调用关键字,或者首页调用关键字注意:

    explode(‘,’, r [ k e y w o r d s ] ) ; 是将文章关键词通过英文逗号分离,也就是说每一篇文章都要以逗号间隔关键字,否则调用出来会是全部作为一个关键字。如果是空格间隔关键字,将 e x p l o d e ( ′ , ′ , r[keywords]);是将文章关键词通过英文逗号分离,也就是说每一篇文章都要以逗号间隔关键字,否则调用出来会 是全部作为一个关键字。如果是空格间隔关键字,将 explode(',', r[keywords]);是将文章关键词通过英文逗号分离,也就是说每一篇文章都要以逗号间隔关键字,否则调用出来会是全部作为一个关键字。如果是空格间隔关键字,将explode(,,r[keywords]);改成explode(’ ',KaTeX parse error: Expected '}', got 'EOF' at end of input: …"lists" catid="catid" num=“10” order=“id DESC” page=“$page”}
    {loop $data KaTeX parse error: Expected 'EOF', got '}' at position 2: r}̲ <a href="{r[url]}“>{$r[title]}
    {php k e y w o r d s = e x p l o d e ( ′ , ′ , keywords = explode(',', keywords=explode(,,r[keywords]);}
    文章标签:
    {loop $keywords KaTeX parse error: Expected 'EOF', got '}' at position 8: keyword}̲ <a href="{APP_…catid}&tag={urlencode($keyword)}”

    class=“blue”> {$keyword}
    {/loop}
    {/loop}
    {/pc}

    14.每当列表几行的时候出现一次某些符号(

    比如首页里面的文章推荐,一行显示两条,在这两条中间想加一条竖线 | 就用到这个代码了)数量大的话就容易出错,因为模运算嘛~~呵呵 不过一般也就4个标题以下
    {pc:content action=“position” posid=“8” order=“listorder DESC” num=“2”}
    {loop $data KaTeX parse error: Expected 'EOF', got '}' at position 2: r}̲ <a style="colo…r[title]}" href="{KaTeX parse error: Expected 'EOF', got '}' at position 7: r[url]}̲" target=_blank…r[title],26,‘’)}{if $n%2==1} |{/if}
    {/loop}
    {/pc}

    15.v9 列表页完美支持自定义段调用

    {pc:content action=“lists” catid=“ c a t i d " n u m = " 25 " o r d e r = " i d D E S C " p a g e = " catid" num="25" order="id DESC" page=" catid"num="25"order="idDESC"page="page” moreinfo=“1”}
    {loop $data KaTeX parse error: Expected 'EOF', got '}' at position 2: r}̲ <a href="{r[url]}">[{KaTeX parse error: Expected 'EOF', got '}' at position 9: r['字段名']}̲]> {r[title]}
    {/loop}

    {$pages}
    {/pc}

    16.当前栏目调用父级及以下栏目信息方法

    其他代码 该咋地还是要咋地 。这是要素
    {php $arrchildid = C A T E G O R Y S [ CATEGORYS[ CATEGORYS[CAT[parentid]][arrchildid]}
    {pc:get sql=“SELECT * FROM v9_news where catid in( a r r c h i l d i d ) c a c h e = " 3600 " p a g e = " arrchildid) cache="3600" page=" arrchildid)cache="3600"page="page” num=“12” return=“data”}

    17.V9表单功能 提交之后如何返回当前页面,而不是默认的首页文件地址

    找到 phpcms\modules\formguide\index.php文件第73行
    showmessage(L(‘thanks’), APP_PATH);
    修改成 如下代码即可实现自动返回前一页
    showmessage(L(‘thanks’), HTTP_REFERER);

    18.v9 首页或分页自定义字段调用 和15差不多

    第一普通列表或栏目调用自定义字段
    在{pc:content action=“lists” 后加上副表moreinfo=1 (等于1时显示,0时不显示)
    例子:
    {pc:content action=“lists” moreinfo=1 catid=“2” order=“id DESC” num=“4”}

    • {loop $data $key $val}
    • {$val['title']}
      价格:{str_cut($v['自定义段'],100)} //100 是字数
    • {/loop}
    {/pc} 第二种推荐位调用自定义字段 在模型里加好自定义字段后,必须把“在推荐位标签中调用”点击“是“ 然后用同一样的方法去调节数据就OK了,记住,如果你加了文章,必须去更新文章才会显示,自定义段在 推荐中只显示你选择后,选择前加的加文章不显示,更新一下文章就显示了 例子: {pc:content action="position" posid="推荐位id" num="30" thumb="1" moreinfo="1" order="listorder DESC"} {loop $data $key $val}
  • {$val['title']} {str_cut($val['title'],20)}
  • {/loop} {/pc}

    20.编辑器上传图片自动使用标题作为alt参数

    一: 修改 statics/js/ckeditor/plugins/image/dialogs/image.js
    找到 accessKey:‘T’,‘default’:‘’ 替换成 accessKey:‘T’,‘default’😒(‘#title’).val()
    二: 清除浏览器缓存

    21.增加文章的随机点击数

    找到100行的$views = $r[‘views’] +1
    修改为:
    $rand_nums=rand(79,186);
    $views = $r[‘views’] + $rand_nums;
    表示点击一次,增加79到186次不等

    tips:某些版本出错民间解决方法
    1.缩略图以及图集无法上传
    \phpcms\libs\classes\attachment.class.php
    请把24行的(也有可能是23行)
    $this->upload_func = ‘copy’;
    改成
    $this->upload_func = ‘move_uploaded_file’;
    2.碎片模块搜索文章看不到栏目
    phpcms\modules\block\templates\search_content.tpl.php
    13行改成

    <?php if(isset($_GET['dosubmit'])){?>
    <?php echo L('folded_up_in_search_of')?>
    <?php } echo form::select_category('', $catid, 'name="catid" id="catid"', '','', '0', 1)?> 22、PHPCMS V9的get标签调用 1、调用本系统单条数据,示例(调用ID为1的信息,标题长度不超过25个汉字,显示更新日期): {get sql="select * from phpcms_content where contentid=1" /}标题:{str_cut($r[title], 50)} URL:{$r[url]} 更新日期:{date('Y-m-d', $r[updatetime])} 2、调用本系统多条数据,示例(调用栏目ID为1通过审核的10条信息,标题长度不超过25个汉字,显示更新日期): {get sql="select * from phpcms_content where catid=1 and status=99 order by updatetime desc" rows="10"} 标题:{str_cut($r[title], 50)} URL:{$r[url]} 更新日期:{date('Y-m-d', $r[updatetime])}{/get} 3、带分页,示例(调用栏目ID为1通过审核的10条信息,标题长度不超过25个汉字,显示更新日期,带分页): {get sql="select * from phpcms_content where catid=1 and status=99 order by updatetime desc" rows="10" page="$page"} 标题:{str_cut($r[title], 50)} URL:{$r[url]} 更新日期:{date('Y-m-d', $r[updatetime])}{/get} 分页:{$pages} 4、自定义返回变量,示例(调用栏目ID为1通过审核的10条信息,标题长度不超过25个汉字,显示更新日期,返回变量为 $v): {get sql="select * from phpcms_content where catid=1 and status=99 order by updatetime desc" rows="10" return="v"} 标题:{str_cut($v[title], 50)} URL:{$v[url]} 更新日期:{date('Y-m-d', $v[updatetime])}{/get} 5、调用同一帐号下的其他数据库,示例(调用数据库为bbs,分类ID为1的10个最新主题,主题长度不超过25个汉字,显示更新日期): {get dbname="bbs" sql="select * from cdb_threads where fid=1 order by dateline desc" rows="10"} 主题:{str_cut($r[subject], 50)} URL:http://bbs.phpcms.cn/viewthread.php?tid={$r[tid]} 更新日期:{date('Y-m-d', $r[dateline])}{/get} 6、调用外部数据,示例(调用数据源为bbs,分类ID为1的10个最新主题,主题长度不超过25个汉字,显

    示更新日期):
    {get dbsource=“bbs” sql=“select * from cdb_threads where fid=1 order by dateline desc” rows=“10”}

    主题:{str_cut(KaTeX parse error: Expected 'EOF', got '}' at position 16: r[subject], 50)}̲ URL:http://bbs…r[tid]}

    更新日期:{date(‘Y-m-d’, $r[dateline])}

    {/get}

    不知道有没有朋友在使用中遇到这几种方法不能满足需求的时候呢?

    例如:取出评论数最多的第3条到第10条记录,有人说我是多此一举,一般取最多评论没理由不取第一和

    第二条,因为PHPCMS的缩略图对4:3这样的尺寸比较好,对长条形(如3:4)的图片缩略效果不好,为了

    自己手动更新评论最多的第一和第二条记录,故此不想自动更新读取前两条。

    • {$r[comments]}人参与评论·{str_cut($r[title], 28)}

    关键点就在 order by B.comments desc LIMIT 3,7 (表示从第3条记录开始,向下读取7条数据)这个在
    MYSQL是经常用,我抱着试试看的想法,结果是可以的。
    希望做PHPCMS开发的朋友共同学习和分享

    phpcms V9 保留了2008的get标签的使用方法

    它包括了2种方式一种是内部数据,另一种是外部数据

    我们先分析下内部数据的使用方法

    1、内部数据的调用

    {pc:get sql="SELECT * FROM XX WHERE fid =$ltid AND digest =2 AND ifupload =1

    ORDER BY tid DESC" num=“2” cache= “3600” return=“data” }

    {loop $data $r}

    。。。。。

    {/loop}{/pc}

    由此可以看出 get 语句支持num的用法但是不支持 limit 5,5.这样的用法

    实在是很遗憾

    num是调用的条数

    2、外部数据的调用

    { pc : get sql = “SELECT * FROM phpcms_member” cache = “3600” page = “$page” dbsource =“discuz” return = “data” }

    • { loop $data $key $val }

    { $val [ username ]}< br />
    { /loop}
    </ ul >
    { $pages }
    {/ pc }

    一个是数据源,一个是产生的pages翻页效果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1093388.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

光电柴微电网日前调度报告

摘要 微电网是目前国内外应用较为广泛的一种绿色可再生能源&#xff0c;近几年我国微电网产业的发展十分迅速。然后&#xff0c;越来越多的微电网系统建立并网&#xff0c;微电网产生的电能受外界因素影响较大&#xff0c;具有一定的随机性和波动性&#xff0c;给并网后的电力系…

leetCode 72. 编辑距离 动态规划

72. 编辑距离 - 力扣&#xff08;LeetCode&#xff09; 给你两个单词 word1 和 word2&#xff0c; 请返回将 word1 转换成 word2 所使用的最少操作数 。你可以对一个单词进行如下三种操作&#xff1a; 插入一个字符删除一个字符替换一个字符 编辑距离的应用场景&#xff1a;…

【内网攻击】DHCP协议概念——地址池耗尽攻击

目录 前言 DHCP 服务概念 1&#xff09;客户端发送DHCP Discovery广播包 2&#xff09;服务器响应DHCP Offer广播包 3&#xff09;客户机发送DHCP Request广播包 4&#xff09;服务器发送DHCP ACK广播包 部署DHCP服务器 dhcp地址池消耗攻击 攻击防御 前言 现在思考我们…

[论文分享] EnBinDiff: Identifying Data-Only Patches for Binaries

EnBinDiff: Identifying Data-Only Patches for Binaries [TDSC 2021] 在本文中&#xff0c;我们将重点介绍纯数据补丁&#xff0c;这是一种不会引起任何结构更改的特定类型的安全补丁。作为导致假阴性的最重要原因之一&#xff0c;纯数据补丁成为影响所有最先进的二进制差分方…

spring security 认证授权详解

spring security简介 Spring Security 是 Spring家族中的一个安全管理框架&#xff0c;它提供了更丰富的功能做认证授权 认证&#xff1a;当前用户有没有权限登录&#xff0c;是否为本系统用户授权&#xff1a;当前登录的用户有没有操作功能的权限 spring security的搭建 引入…

SqlServer安装教程

百度网盘地址: 链接&#xff1a;https://pan.baidu.com/s/1ntqoK9uVc6fBVTm7twh8kw 提取码&#xff1a;grdt 安装: 双击:SQLEXPRADV_x64_CHS.exe ,等待;点击计划,系统配置检查器,根据要求修改(我被要求重启了)点击安装,全新SQL Server独立安装或向现有安装添加功能,接受功能选…

颜色特征和sift算法结合的指示类交通标志识别

目录 摘 要...................................................................................... 3 第一章 绪论........................................................................ 6 1.1 研究课题背景...................................................…

fatal error C1083: 无法打开包括文件: “ta_libc.h”: No such file or directory

用python做交易数据分析时&#xff0c;可以用talib库计算各类指标&#xff0c;这个库通过以下命令安装&#xff1a; pip install TA-Lib -i https://pypi.tuna.tsinghua.edu.cn/simple windows安装时可能出现本文标题所示的错误&#xff0c;可按如下步骤解决&#xff1a; 1、去…

【Docker 内核详解】namespace 资源隔离(四):Mount namespace Network namespace

namespace 资源隔离&#xff08;四&#xff09;&#xff1a;Mount namespace & Network namespace 1.Mount namespace mount namespace 通过隔离文件系统挂载点对隔离文件系统提供支持&#xff0c;它是历史上第一个 Linux namespace&#xff0c;所以标识位比较特殊&#x…

云开发校园宿舍/企业/部门/物业故障报修小程序源码

微信小程序云开发校园宿舍企业单位部门物业报修小程序源码&#xff0c;这是一款云开发校园宿舍报修助手工具系统微信小程序源码&#xff0c;适用于学校机房、公司设备、物业管理以及其他团队后勤部&#xff0c;系统为简单云开发&#xff0c;不需要服务器域名即可部署&#xff0…

[HNCTF 2022 WEEK2]ez_ssrf题目解析

这题主要是引入ssrf这个漏洞攻击&#xff0c;本质上没有更深入的考察 本题是需要我们去伪造一个ssrf的请求头去绕过 题目开始给了我们信息让我们去访问index.php fsockopen函数触发ssrf fsockopen() 函数建立与指定主机和端口的 socket 连接。然后&#xff0c;它将传入的 bas…

nginx的location的优先级和匹配方式

nginx的location的优先级和匹配方式 在http模块中有server&#xff0c;server模块中有location&#xff0c;location匹配的是uri 在一个server中&#xff0c;会有多个location&#xff0c;如何来确定匹配哪个location niginx的正则表达式 ^ 字符串的起始位置 $ 字符串的…

Mybatis用Byte[]存图片,前端显示图片

前端页面 static下 也就是说byte[] 转成JSON字符串后,和用BASE64编码后是一摸一样的,那么SpringBoot会自动将实体类转JSON字符串,也就是说根本不需要Base64编码 注意:两个值并非一摸一样,一个多了个双引号 byte[]的值前后有个双引号 有一点点区别 一个有双引号,一个没有…

7.定时器

定时器资源 CC2530有四个定时器TIM1~TIM4和休眠定时器 TIM1 定时器1 是一个独立的16 位定时器&#xff0c;支持典型的定时/计数功能&#xff0c;比如输入捕获&#xff0c;输出比较和PWM 功能。定时器有五个独立的捕获/比较通道。每个通道定时器使用一个I/O 引脚。定时器用于…

NewStarCTF2023week2-Unserialize?

代码审计&#xff1a; 定义了一个eval类&#xff0c;该类下有一个私有变量cmd和公有成员函数destruct()&#xff0c;该函数在对象的所有引用都被删除或类被销毁时会自动调用&#xff1b; 调用该函数则会执行一个正则表达式进行正则匹配&#xff0c;过滤掉了一些常用命令和bas…

机器人技术研究现状

随着科技的不断进步&#xff0c;机器人技术在制造业中的应用越来越广泛。本文将综述机器人技术的研究现状&#xff0c;主要包括机器人控制技术、机器人感知技术、机器人智能化技术、柔性机器人技术、协作机器人技术以及云机器人技术六个方面。 一、机器人控制技术 机器人控制技…

2023年中国云计算软件市场规模、市场结构及市场份额情况分析[图]

云计算是分布式计算的一种&#xff0c;指的是通过网络“云”将巨大的数据计算处理程序分解成无数个小程序&#xff0c;然后&#xff0c;通过多部服务器组成的系统进行处理和分析这些小程序得到结果并返回给用户。云计算软件类型分为三类&#xff0c;即基础设施即服务、平台即服…

调试工具:应用程序验证器Application Verifier(配合WinDbg)

1.应用程序验证器&#xff08;Application Verifier&#xff09;简介 说明&#xff1a;Application Verifier是来自微软官方的一款应用程序验证工具&#xff0c;主要用于帮助用户检测和调试内存损坏、危险的安全漏洞、Run-time检测等&#xff1b;是一款辅助开发工具&#xff0…

NIO教程

一&#xff0c;概述 原本的java是基于同步阻塞式的i/o通信&#xff08;bio) 性能低下&#xff0c;所以出现了nio这种非阻塞式的 二&#xff0c;Java 的I/O演进之路 2.1 i/o模型基本说明 i/o模型&#xff1a;就是用什么样的通道或者说通信模式和架构进行数据的传输和接收&am…

GPT实战系列-ChatGLM2部署Ubuntu+Cuda11+显存24G实战方案

GPT实战系列-ChatGLM2部署UbuntuCuda11显存24G实战方案 自从chatGPT掀起的AI大模型热潮以来&#xff0c;国内大模型研究和开源活动&#xff0c;进展也如火如荼。模型越来越大&#xff0c;如何在小显存部署和使用大模型&#xff1f; 本实战专栏将评估一系列的开源模型&#xf…