pbootcms自定义标签开发_替换标题中的特殊符号

2022-07-29 0 758

Zu近在使用pbootcms进行建站,现有的标签不符合自己的一些业务需求,想着自己做个符合自己的业务的标签,于是参考了一下网上的资料以后便开始着手开发了,整个二开还是比较简单,下面放出来需要修改的文件.

apps/home/controller/ParserController.php  解析标签的类
1)在parserAfter方法中新增一行解析入口
$content = $this->parserTitleReplaceLabel($content);

01 public function parserAfter($content)
02     {
03         // 默认页面信息替换
04         $content str_replace('{pboot:pagetitle}'$this->config('other_title') ?: '{pboot:sitetitle}-{pboot:sitesubtitle}'$content);
05         $content str_replace('{pboot:pagekeywords}''{pboot:sitekeywords}'$content);
06         $content str_replace('{pboot:pagedescription}''{pboot:sitedescription}'$content);
07         $content str_replace('{pboot:keyword}', get('keyword''vars'), $content); // 当前搜索的关键字
08                                                                                      
09         // 解析个人扩展标签,升级不覆盖
10         if (file_exists(APP_PATH . '/home/controller/ExtLabelController.php')) {
11             if (class_exists('apphomecontrollerExtLabelController')) {
12                 $extlabel new ExtLabelController();
13                 $content $extlabel->run($content);
14             }
15         }
16         
17         $content $this->parserSiteLabel($content); // 站点标签
18         $content $this->parserCompanyLabel($content); // 公司标签
19         $content $this->parserMemberLabel($content); // 会员标签
20         $content $this->parserNavLabel($content); // 分类列表
21         $content $this->parserSelectAllLabel($content); // CMS筛选全部标签解析
22         $content $this->parserSelectLabel($content); // CMS筛选标签解析
23         $content $this->parserSpecifySortLabel($content); // 指定分类
24         $content $this->parserListLabel($content); // 指定列表
25         $content $this->parserSpecifyContentLabel($content); // 指定内容
26         $content $this->parserContentPicsLabel($content); // 内容多图
27         $content $this->parserContentCheckboxLabel($content); // 内容多选调取
28         $content $this->parserContentTagsLabel($content); // 内容tags调取
29         $content $this->parserSlideLabel($content); // 幻灯片
30         $content $this->parserLinkLabel($content); // 友情链接
31         $content $this->parserMessageLabel($content); // 留言板
32         $content $this->parserFormLabel($content); // 自定义表单
33         $content $this->parserSubmitFormLabel($content); // 自定义表单提交
34         $content $this->parserSqlListLabel($content); // 自定义SQL输出
35         
36         $content $this->parserQrcodeLabel($content); // 二维码生成
37         $content $this->parserPageLabel($content); // CMS分页标签解析(需置后)
38         $content $this->parserIfLabel($content); // IF语句(需置***后)
39         $content $this->parserLoopLabel($content); // LOOP语句(需置后,不可放到if前面,否则有安全风险)
40         $content $this->restorePreLabel($content); // 还原不需要解析的内容
41         $content $this->parserReplaceKeyword($content); // 页面关键词替换
42         $content $this->parserTitleReplaceLabel($content); // 通用内容替换标签  这里是我新增的
43         return $content;
44     }

2)添加对应的解析方法(写在上述文件的Zui后一个}前面)

01 // 通用内容替换标签 @mk-title_replace
02    //$content这里用的时文章标题,直接是字符串
03    public function parserTitleReplaceLabel($content)
04    {
05        $pattern '/{pboot:titlereplace(s+[^}]+)?}/';
06
07        if (preg_match_all($pattern$content$matches)) {
08            $count count($matches[0]);
09            for ($i = 0; $i $count$i ++) {
10                $params $this->parserParam($matches[0][$i]);
11                $data '';
12                foreach ($params as $key => $value) {
13                    switch ($key) {
14                        case 'title'://这里其实可以解析很多的,不只是title,可以根据case进行不同的解析
15                            $data $value// 获取到的文章title
16
17                            if (! $data) { // 无内容不解析
18                                continue;
19                            }
20                            $data = titlereplace($data); //testreplace方法为自定义方法,在ppscommon unction.php里
21                            break;
22                    }
23                }
24                $content str_replace($matches[0][$i], $data$content);
25            }
26        }
27        return $content;
28    }

apps/common/function.php 文件Zui后面替换方法titlereplace()在这里写

1 function titlereplace($data){
2     //把? ?都替换为空格
3     $search array('?','?',' ','%',',');
4     return str_replace($search"_"$data);
5 }

前端使用标签的地方
我的需求其实是在news.html也就是新闻中文章末尾添加一个自定义图片(根据标题生成一张图片,因为生成图片的方法不能包含特殊符号所以需要把标题中的特殊符号尤其是?去掉)
{pboot:titlereplace title='{content:title}’}
其中{pboot:titlereplace title='{content:title}’}便是我要新增的标签,title这个属性是在上面的parserTitleReplaceLabel方法中进行case判断用的

收藏 (0) 打赏

感谢您的支持,我们会继续努力的!

打开支付宝/微信/QQ扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

1. 本站所有教学内容和资源均来源于本站原创和网络收集以及用户自主上传,如有侵权请带证联系本站客服进行处理!邮箱:team@lcwl.fun
2. 对于非本站原创的资源不保证所提供下载资源的准确性、安全性和完整性,资源仅供下载学习之用!如有链接无法下载、失效或广告,请联系本站客服处理,有奖励!
3. 除本站原创教学或资源外其余资源您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!如用于商业或者非法用途,与本站无关,一切后果请用户自负!
4. 本站原创资源如需商用还请申请商业授权,否则本站有权追究其法律责任!
5. 如果您也有好的资源或教程,您可以投稿发布,成功分享后有学币奖励额外收入!

凌晨资源网 PbootCMS pbootcms自定义标签开发_替换标题中的特殊符号 https://www.lingchenw.cn/ztjc/6224.html

常见问题
  • 本站所有付费教程均可单独付费或者开会员学习,自己购买或者开了会员就可以学习,来凌晨学院报名学习送会员,并且有讲师一对一辅导培训教学,师生互动化,定期布置作业等
查看详情
  • 本站所有资源版权均属于原作者所有,资源中标注可商用的可以商用的代表是本团队自主研发公布可商用的产品,未标注可商用所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。
查看详情

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务

学习手机编程软件开发
手机编程软件开发

你知道吗?用手机也能开发制作软件,满足自己的编程心,做属于自己的软件

报名学习
自媒体短视频
副业做自媒体短视频

想做自媒体短视频剪辑给自己多一份副业,只需一部手机你也可以

报名学习
搭建网站必备云互联主机
链未云互联

搭建网站,后台云服务等必备云服务器互联主机,IDC云主机

现在使用
Fa快捷助手
用手点一点就能开发做软件

不用记编程语法,不用一行一行手敲代码,用手点一点就能开发制作软件

点击下载