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

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.mzph.cn/news/105822.shtml

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

相关文章

Docker Compose命令讲解+文件编写

docker compose的用处是对 Docker 容器集群的快速编排。&#xff08;源码&#xff09; 一个 Dockerfile 可以定义一个单独的应用容器。但我们经常碰到需要多个容器相互配合来完成某项任务的情况&#xff08;如实现一个 Web 项目&#xff0c;需要服务器、数据库、redis等&#…

Linux 学习的六个过程

Linux 上手难&#xff0c;学习曲线陡峭&#xff0c;所以它的学习过程更像一个爬坡模式。这些坡看起来都很陡&#xff0c;但是一旦爬上一阶&#xff0c;就会一马平川。 1、抛弃旧的思维习惯&#xff0c;熟练使用 Linux 命令行 在 Linux 中&#xff0c;无论我们做什么事情&…

网络 | 排错五大步骤,没有解决不了的网络故障准达信息准达信息

网络故障是我们工作中最易常见的问题&#xff0c;那么如何才能进行网络排查&#xff0c;快速解决问题呢&#xff1f; 一、网络排错五大基本步骤与命令 五大基本思路如下&#xff1a; &#xff08;1&#xff09;检查物理链路是否有问题&#xff1b; &#xff08;2&#xff09;…

模拟实现字符串函数(5): strncpy

1.函数介绍 拷贝num个字符从源字符串到目标空间。 如果源字符串的长度小于num&#xff0c;则拷贝完源字符串之后&#xff0c;在目标的后边追加0&#xff0c;直到num个 strncpy与strcpy的作用是一样的&#xff0c;区别在于strncpy指定了复制字符的个数。 2.思路分析 这里多了…

找不到msvcp100.dll无法继续执行此代码怎么解决,快速修复dll问题的5个方法

电脑已经成为我们生活和工作中不可或缺的一部分&#xff0c;在我们使用电脑的时候&#xff0c;总会遇到一些技术问题&#xff0c;其中之一就是“找不到msvcp100.dll”。msvcp100.dll是一个动态链接库文件&#xff0c;它是Microsoft Visual C 2010 Redistributable Package的一部…

APT攻击

1.1 APT攻击简介 1.1.1APT攻击概念 网络安全&#xff0c;尤其是Internet互联网安全正在面临前所未有的挑战&#xff0c;这主要就来自于有组织、有特定目标、持续时间极长的新型攻击和威胁&#xff0c;国际上有的称之为APT&#xff08;Advanced Persistent Threat&#xff09;攻…

2023 年 Arm A-Profile 架构发展

随着人工智能 (AI) 的兴起和安全威胁的加剧,计算需求不断发展,作为世界设备核心的基础计算架构也必须不断发展。这就是为什么我们的工程团队向普遍存在的 Arm 架构添加新功能和技术,然后软件团队确保软件尽可能无缝地适应这些未来的功能和技术。 Arm架构是如何开发的 Arm …

【总结】两个独立同分布的随机变量相加还是原来的分布吗?

二项分布&#xff0c;泊松分布&#xff0c;正态分布&#xff0c;卡方分布&#xff0c;具有独立可加性。 图源自没咋了&#xff0c;面哥课程。

飞书应用机器人文件上传

背景&#xff1a; 接上一篇 flask_apscheduler实现定时推送飞书消息&#xff0c;当检查出的异常结果比较多的时候&#xff0c;群里会有很多推送消息&#xff0c;一条条检查工作量会比较大&#xff0c;且容易出现遗漏。   现在需要将定时任务执行的结果记录到文件&#xff0c;…

C# GFPGAN 图像修复

效果 项目 代码 using Microsoft.ML.OnnxRuntime; using Microsoft.ML.OnnxRuntime.Tensors; using OpenCvSharp; using System; using System.Collections.Generic; using System.Drawing; using System.Drawing.Imaging; using System.Windows.Forms;namespace 图像修复 {pu…

二维数组的行指针与列指针

二维数组的行指针与列指针 笔记来源&#xff1a;懒猫老师-C语言-用指针访问二维数组&#xff08;指针与二维数组&#xff09; 声明&#xff1a;本文笔记来自bili懒猫老师&#xff0c;仅供学习参考 回顾一维数组 int a[3];//其中a或a[0]是数组首地址 //a1指向第二个元素的地址…

PyTorch 深度学习之卷积神经网络(高级篇)Advanced CNN(十)

0. Revision 前面讲的比较简单的是 串行网络结构 1. GoogLeNet 1.1 Inception module w h 要一致 what is 11 convolution? 信息融合-eg.高中各门学科成绩比较(总分) 最主要工作:改变通道数量 why is 11 convolution? 减少10倍 1.2 implementation of inception module 拼…

AOP面向切面编程

AOP简介 AOP(Aspect oriented Programming)面向切面编程&#xff0c;就是面向特定的方法编程&#xff0c;将方法比作一个一个的切面&#xff0c;可以向指定的方法执行前/后执行自己的逻辑。如统一获取方法的时间。 应用场景&#xff1a; 记录操作日志、权限控制、事务管理 优…

Node.js初体验

Node.js简介 node.js的运行环境 1.V8引擎对js代码进行解析与执行 2.内置API&#xff1a;fs、path、http...等&#xff0c;提供了一些能力&#xff0c;能够使得js调用这些API去做一些后端的事情 流程&#xff1a;我们在node.js的运行环境中编写待执行的JavaScript代码&#…

部署k8s dashboard(这里使用Kubepi)

9. 部署k8s dashboard&#xff08;这里使用Kubepi&#xff09; Kubepi是一个简单高效的k8s集群图形化管理工具&#xff0c;方便日常管理K8S集群&#xff0c;高效快速的查询日志定位问题的工具 部署KubePI&#xff08;随便在哪个节点部署&#xff0c;我这里在主节点部署&#…

黑马JVM总结(三十)

&#xff08;1&#xff09;类加载-连接-解析 new对象&#xff0c;会触发对象的解析和初始化 通过类加载器加载类C&#xff0c;这里只会进行类C的加载并不会导致类C的解析以及初始化&#xff0c;这样加载类C的时候类D也不会解析跟初始化 通过jps找到进程id&#xff1a; 打开…

Kafka SASL认证授权(四)认证源码解析

Kafka SASL认证授权(四)认证源码解析。 官网地址:https://kafka.apache.org/ 一、认证流程 在了解kafka网络模型的基础上,了解它的认证流程: ApiVersionsRequest->SaslHandshakeRequest->a series of SASL client and server tokens corresponding to the mechani…

IDEA的使用(二)快捷键 (IntelliJ IDEA 2022.1.3版本)

1. IDEA中的常用快捷键 1.1 通用型快捷键 1.2 提高编写速度 ctrl shift ↑或↓ 只能在方法里面移动代码。 alt shift ↑或↓ 可以向方法外移动代码。 设置过自动导包&#xff0c;所以不用批量导包啦。 1.3 类结构、查找和查看源码 1.4 查找、替换和关闭 1.5 调整格式 1.6 De…

Elasticsearch 分片内部原理—使文本可被搜索、动态更新索引

目录 一、使文本可被搜索 不变性 二、动态更新索引 删除和更新 一、使文本可被搜索 必须解决的第一个挑战是如何使文本可被搜索。 传统的数据库每个字段存储单个值&#xff0c;但这对全文检索并不够。文本字段中的每个单词需要被搜索&#xff0c;对数据库意味着需要单个字…

【CNN-GRU预测】基于卷积神经网络-门控循环单元的单维时间序列预测研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…