欢迎来到六久阁织梦模板网!
用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);
    }
}

本文不定期更新。


插件下载说明

未提供下载提取码的插件,都是站长辛苦开发,需收取费用!想免费获取辛苦开发插件的请绕道!

织梦二次开发QQ群

本站客服QQ号:3149518909(点击左边QQ号交流),群号(383578617) DedeCMS织梦教程QQ群 如果您有任何织梦问题,请把问题发到群里,阁主将为您写解决教程!

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

标签:
  • PbootCms关闭自动更新的方法二开必备
    阅读
    在使用PbootCms做网站的过程中,难免会遇到一些二次开发的内容。网站后台有在线更新的按钮。 如果做了二开,那么更新就需要慎重了。比较保险的做法是禁用掉在线更新。 操作方法 通常的做法是在 \apps\admin\view\default\system\home.html \apps\admin\view\...
  • 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生成静态、pbootcms静态生成的过程和优势,希望能引起读者的兴趣。 在互联网时代,网站的访问速度和用户体验是至关重要的。传统...
  • PbootCms扩展控制器本地正常上传到服务器就出错的解决办法
    阅读
    PbootCms扩展标签定制个性化时间的文章定制了自己想要的时间格式,结果本地正常,上传到服务器环境后就不生效。 原因是PbootCms官方的一个小BUG,截至V2.0.9仍然存在。如果你也遇到,可以参考一下解决方案。 解决办法 如下图标记,路径前有一个点。 解决办法...
  • pbootcms后台左边菜单如何修改
    阅读
    第一种:直接后台链接操作 超级管理后台登录后台,手动访问这个链接(你的后台登录地址/Menu/index)打开菜单列表,找到系统管理-系统菜单点击状态启用,接着去重新登录后即可。 注意:截图里用的是默认后台 登录 地址域名/admin.php,根据实际情况输入。 下...
  • pbootcms更换模板方法,pbootcms模板更换方法详解
    阅读
    pbootcms是一款功能强大的开源内容管理系统,它提供了丰富的模板选择,让用户可以轻松更换自己喜欢的模板。本文将详细介绍pbootcms的模板更换方法,帮助读者了解如何进行模板更换,并提供一些实用的技巧和注意事项。 一、背景介绍 pbootcms是一款基于PHP+MyS...
收藏此文 打赏本站

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

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

精彩评论

有问题在这里提问,阁主会为你解决!
  • 全部评论(0
    还没有评论,快来抢沙发吧!
推荐精品模板更多
出国留学教育培训机构类织梦模板(带手机端)
更新时间:2018-04-24

人已经看过了!

响应式室内设计工程施工类织梦模板(自适应手机端)
更新时间:2018-06-07

人已经看过了!

织梦中英双语服装连锁加盟店模板(响应式自适应)
更新时间:2019-09-19

人已经看过了!

织梦响应式博客仿杨青博客网站模板利于收录排名
更新时间:2020-02-27

人已经看过了!

高端品牌建筑装饰类响应式织梦模板
更新时间:2017-08-10

人已经看过了!

织梦HTML5响应式自适应文化传媒公司网站模板
更新时间:2019-09-19

人已经看过了!