欢迎来到六久阁织梦模板网!
用PbootCms扩展标签定制属于自己的模板

用PbootCms扩展标签定制属于自己的模板

浏览次数: 0

作者: 六久阁织梦模板网

信息来源: 未知

更新日期: 2022-03-24

文章简介

为什么写这个?可能有人觉得没啥作用,我写这个的目的就是为了让pbootcms更适合自己使用,更简洁简便。 2020.04.04 新增智能路径,js、css自动追加版本号;快速链接。 2020.04.03 新增每日一图标签。 调用必应搜索的每日一图接口,返回图片URL,调用标签:{

  • 正文开始
  • 热门文章

为什么写这个?可能有人觉得没啥作用,我写这个的目的就是为了让pbootcms更适合自己使用,更简洁简便。

2020.04.04    新增智能路径,js、css自动追加版本号;快速链接。

2020.04.03    新增每日一图标签。


调用必应搜索的每日一图接口,返回图片URL,调用标签:{ pboot:walle }  //这里自己去掉空格哦。

举例:pbootcms调用某个栏目的超链接的时候,需要这样写:

{pboot:sort scode=1}

<a href= "[sort:link]">关于我们</a>

{/pboot:sort}

使用了快速链接扩展,只需要这样写:


//下面没空格的,突然发现标签被解析了..所以我加了个空格看着方便

{ @about.1 }//点后面跟scode的id

{ @list.2 }//点后面跟scode的id

{ @content.3 }//点后面跟文章的id



智能路径

pbootcms默认有 {pboot:sitetplpath} 这个标签,每次写这个都很麻烦。

所以需要让他更智能一些。

智能路径会自动补全模板中的src=|href=|value=|background=这些标记后面的内容,当然并不是全部替换,只自动补全images|img|css|js|style这几个文件夹的路径。


举个例子:

<link rel="stylesheet" type="text/css" href="css/common.css">

<script src="js/common.js"></script>

<img src="images/logo.png" />

然后就会自动补足路径,js和css会自动追加版本号


最终效果如下:

<link rel="stylesheet" type="text/css" href="/template/a8yun/css/common.css?v=20200404134138">

<script src="/template/a8yun/js/common.js?v=20200403155213"></script>

<img src="/template/a8yun/images/logo.png" />

这一切都是系统自动完成的。

有人会说这样写模板会被偷的,我只能说扣码防不住。



下面贴上完整的ExtLabelController.php代码,pbootcms v2的用户只需拷贝到apps/home/controller/ExtLabelController.php这个文件下即可。

<?php
namespace app\home\controller;
use core\basic\Controller;
use core\basic\Url;
use app\home\model/ParserModel;
class ExtLabelController extends Controller
{
    protected $content;
    protected $model;
    public function __construct()
    {
        $this->model = new ParserModel();
    }
    /* 必备启动函数 */
    public function run($content)
    {
        // 接收数据
        $this->content = $content;
        
        // 执行个人自定义标签函数
        $this->diylabel();
        //快速标签
        $this->fastUrl();
        //智能模板路径、自动更新CSS,JS版本号,不用再让客户强制刷新啦
        $this->smartURL();
        // 返回数据
        return $this->content;
    }
    // 扩展单个标签
    private function diylabel()
    {
        //{ pboot:walle } 每日一图的图片URL  //这里自己去掉空格哦。
        $this->content = str_replace('{ pboot:walle }', $this->getBingImage(), $this->content);
    }
    //抓取必应每日一图
    private function getBingImage(){
        $url = 'https://www.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1';
        $data = json_decode(get_url($url));
        $result = $data->images[0];
        $image = 'https://www.bing.com'.$result->url;
        return $image;
    }
    
    //解析快速URL{ @about.1 }{ @list.2 }{ @content.3 } 为啥要用@,因为$用不了了,咱们就用@召唤神兽吧 括号中无空格哦
    private function fastUrl(){
        $url_break_char = $this->config('url_break_char') ?: '_';
        $url_rule_suffix = $this->config('url_rule_suffix') ?: '.html';
        $url_rule_sort_suffix = $this->config('url_rule_sort_suffix') ? $url_rule_suffix : '/';
        $pattern = '/{@(about|list|content).([a-z0-9_]+)}/';
        if (preg_match($pattern, $this->content, $matches)) {
            $this->content = preg_replace_callback(
                $pattern, 
                function($matches) use ( $url_break_char, $url_rule_suffix, $url_rule_sort_suffix ){
                    switch ($matches[1]){
                        case 'about';
                            $data = $this->model->getAbout($matches[2]);
                            $data->urlname = $data->urlname ?: 'about';
                            if ($data->sortfilename) {
                                 $link = Url::home($data->sortfilename, $url_rule_sort_suffix);
                            } else {
                                 $link = Url::home($data->urlname . $url_break_char . $data->scode, $url_rule_sort_suffix);
                            }
                            return $link;
                            break;
                        case 'list';
                            $data = $this->model->getSort($matches[2]);
                            $data->urlname = $data->urlname ?: 'list';
                            if ($data->filename) {
                                $link = Url::home($data->filename, $url_rule_sort_suffix);
                            } else {
                                $link = Url::home($data->urlname . $url_break_char . $data->scode, $url_rule_sort_suffix);
                            }
                            return $link;
                            break;
                        case 'content';
                            $data = $this->model->getContent($matches[2]);
                            $data->urlname = $data->urlname ?: 'list';
                            if ($data->sortfilename && $data->filename) {
                                $link = Url::home($data->sortfilename . '/' . $data->filename, true);
                            } elseif ($data->sortfilename) {
                                $link = Url::home($data->sortfilename . '/' . $data->id, true);
                            } elseif ($data->filename) {
                                $link = Url::home($data->urlname . $url_break_char . $data->scode . '/' . $data->filename, true);
                            } else {
                                $link = Url::home($data->urlname . $url_break_char . $data->scode . '/' . $data->id, true);
                            }
                            return $link;
                            break;
                    }
                },
                $this->content);
        }
    }
    //智能路径
    private function smartURL(){
        $pattern = '/<(.*?)(src=|href=|value=|background=)["|'](images/|img/|css/|js/|style/)(.*?)["|'](.*?)>/';
        if (preg_match($pattern, $this->content, $matches)) {
            $this->content = preg_replace_callback(
                $pattern, 
                function($matches){
                    if( strstr($matches[4], '.js') || strstr($matches[4],'.css') ){
                        return '<'.$matches[1].$matches[2].'"'.$this->auto_version(APP_THEME_DIR.'/'.$matches[3].$matches[4]).'"'. $matches[5] .'>';
                    }else{
                        return '<'.$matches[1].$matches[2].'"'.APP_THEME_DIR.'/'.$matches[3].$matches[4].'"'. $matches[5] .'>';
                    }
                }, 
                $this->content);
        }
    }
    //自动更新时间版本号
    public function auto_version($url){
        $ver = filemtime(DOC_PATH . $url);
        return $url.'?v='.date("YmdHis",$ver);
    }
}

本文不定期更新。


转载请注明: 织梦模板 » 用PbootCms扩展标签定制属于自己的模板

标签:
  • pbootcms忘记后台密码-pbootcms后台密码遗忘,如何找回?
    阅读
    pbootcms是一款功能强大的内容管理系统,它为用户提供了方便快捷的网站建设和管理工具。由于各种原因,有时候我们可能会忘记pbootcms后台的登录密码,这给我们的网站管理带来了一定的困扰。那么,当我们忘记了pbootcms后台密码时,应该如何找回呢?本文将从...
  • pbootcms免费插件下载、pbootcms免费插件下载中心,助你快速获取所需插件
    阅读
    pbootcms是一款免费的内容管理系统,它提供了丰富的插件下载中心,为用户快速获取所需插件提供了便利。我将详细介绍pbootcms免费插件下载和下载中心的各个方面,帮助读者更好地了解和使用这个功能。 1. 插件下载中心的背景 在开始介绍pbootcms的插件下载中心...
  • pbootcms生成静态、pbootcms静态生成:高效实现网站静态化
    阅读
    pbootcms是一款高效的网站管理系统,它提供了静态生成的功能,可以帮助用户将网站内容快速生成静态页面。本文将详细介绍pbootcms生成静态、pbootcms静态生成的过程和优势,希望能引起读者的兴趣。 在互联网时代,网站的访问速度和用户体验是至关重要的。传统...
  • PBOOTCMS容易被挂马—PBOOTCMS易被挂马,安全需加强
    阅读
    大家好,今天我想和大家聊一聊PBOOTCMS容易被挂马的问题。PBOOTCMS是一款功能强大的内容管理系统,但是在安全性方面却存在一些问题。本文将详细阐述PBOOTCMS容易被挂马的原因,并提出加强安全性的建议。希望能够引起大家对PBOOTCMS安全性的关注,以保护网站...
  • pbootcms页面不存在;pbootcms页面未找到:解决办法和常见错误,完美指南
    阅读
    你是否曾经遇到过在使用pbootcms时遇到页面不存在或未找到的问题?这个问题可能让你感到困惑和无助。不要担心!本篇文章将为你提供完美的解决办法和常见错误的指南,帮助你轻松解决这个问题。 1、数据库连接错误 在使用pbootcms时,页面不存在或未找到的一个...
  • pbootcms漏洞处理-pbootcms漏洞处理:最全面的解决方案指南
    阅读
    PbootCMS是一款开源的内容管理系统,它提供了丰富的功能和灵活的扩展性,被广泛应用于各种网站开发中。就像其他软件一样,PbootCMS也存在一些安全漏洞,如果不及时处理,可能会导致网站被黑客攻击和数据泄露的风险。本文将为大家介绍PbootCMS漏洞处理的最全...
  • PbootCMS网站打不开,PbootCMS网站无法访问:解决方案大揭秘
    阅读
    在当今数字化时代,网站已经成为人们获取信息、交流和商业活动的重要平台。有时我们可能会遇到PbootCMS网站打不开或无法访问的问题,这给我们的工作和生活带来了困扰。本文将详细阐述PbootCMS网站打不开和无法访问的原因,并提供解决方案,帮助读者解决这一...
  • pbootcms更换模板方法,pbootcms模板更换方法详解
    阅读
    pbootcms是一款功能强大的开源内容管理系统,它提供了丰富的模板选择,让用户可以轻松更换自己喜欢的模板。本文将详细介绍pbootcms的模板更换方法,帮助读者了解如何进行模板更换,并提供一些实用的技巧和注意事项。 一、背景介绍 pbootcms是一款基于PHP+MyS...
  • pbootcms上传限制_pbootcms上传限制:解决大文件上传、格式限制等问题
    阅读
    PbootCMS是一款功能强大的内容管理系统,它不仅可以帮助用户轻松搭建网站,还提供了丰富的插件和模板,满足不同用户的需求。在使用PbootCMS时,我们可能会遇到一些上传限制的问题,比如无法上传大文件或者受到格式限制。本文将围绕这一主题展开,详细介绍Pbo...
  • PbootCMS多语言插件(PbootCMS多语言插件:构建全球化网站的首选之选)
    阅读
    PbootCMS多语言插件:构建全球化网站的首选之选 引言:在当今全球化的时代,构建一个多语言网站已经成为了许多企业和个人的需求。PbootCMS多语言插件是一款功能强大的插件,可以帮助用户轻松实现网站的多语言化。我们将详细介绍PbootCMS多语言插件的特点和优...
收藏此文 打赏本站

如本文对您有帮助,就请六久阁织梦模板网抽根烟吧!

  • 支付宝打赏
    支付宝扫描打赏
    微信打赏
    微信扫描打赏
优化PbootCms程序的点赞功能效果
« 上一篇 2022年03月24日
这是最后一篇
下一篇 »

精彩评论

有问题在这里提问,阁主会为你解决!
  • 全部评论(0
    还没有评论,快来抢沙发吧!
推荐精品模板更多
新闻博客军事新闻资讯头条网织梦模板(带手机端)
更新时间:2019-11-08

人已经看过了!

绿色园林景观设计企业响应式织梦模板
更新时间:2019-11-07

人已经看过了!

中英双语窗帘门窗类网站织梦模板(响应式源码)
更新时间:2019-09-29

人已经看过了!

大学职业学院技术学校类织梦模板(带手机端)
更新时间:2018-04-24

人已经看过了!

律师事务所网站织梦dede模板(中英双语自适应模板)
更新时间:2019-11-07

人已经看过了!

响应式装修室内设计织梦模板(自适应手机端)
更新时间:2019-11-11

人已经看过了!