PbootCMS Sqlite数据库转Mysql数据库教程

PbootCMS默认采用的是Sqlite数据库,系统自带完整后台以及一套响应式模板,放入PHP(5.3+)环境即可直接使用

线上搭建简易环境为:Apache 、 PHP5.6-PHP7.3 、 Mysql5.5+

所以如果已经上线一段时间了,网站已经有较多内容后要想换成Mysql版本是很不方便的,以下就是快速将Mysql转换为Sqlite的教程。

转换为SQL格式(一)

 

第一步:找到data文件夹下的后缀为db的数据库文件,下载到本地

 

第二步:到各官方群【开发工具】文件夹下载下方截图所示的两个文件

解压下载的两个压缩包

sqlitestudio-3.1.1文件夹:这个工具的作用是打开管理Sqlite数据库,我们将使用这个工具导出Sql格式文件

SQLITE转MYSQL工具教程文件夹:这个文件夹放置的是Sql修复工具和晨星傲月提供的教学视频,基本上我们只需要按照视频流程操作就行了

 

第三步:打开SqliteStudio文件夹下的SQLiteStudio应用程序

将我们下载的后缀为db的数据库文件拖到程序中,点击左上角导航栏的【工具】-【导出】选项

接下来会弹出一个选择框,我们选择默认的 数据库(代表所有数据)

点击Next

默认全选,即导出所有表的内容,点击Next

【导出格式】选择 SQL

【输出】点击右侧按钮选择输出后的位置,并设置输出后文件的名称

【导出编码】选择UTF-8

【导出格式选项】勾选最下面一条

最后点击【Finish】即完成SQL的初步流程了

修复导出后的文件(二)

 

将导出后的SQL文件通过编辑器或者记事本打开

第一步:删除【– 表: ay_area】签名的所有内容

第二步:定位到第一个【索引】文字的位置,删除第一个索引开始后面的所有内容,最后重新保存

至此,转换流程便完成了,我们可以直接把转换好的SQL文件导入到Mysql中

PBootcms程序提示:未检测到您服务器环境的sqlite3数据库扩展,请检查php.ini中是否已经开启该扩展!另外,检测到您服务器支持pdo_sqlite扩展,您也可以修改数据库配置连接驱动为pdo_sqlit

错误信息

未检测到您服务器环境的sqlite3数据库扩展,请检查php.ini中是否已经开启该扩展!
另外,检测到您服务器支持pdo_sqlite扩展,您也可以修改数据库配置连接驱动为pdo_sqlite试试!

报错截图

解决方法

解决方法有两种,看具体情况选择:

第一种方法:把数据库配置连接驱动改为pdo_sqlite

按照提示把数据库配置连接驱动修改未pdo_sqlite,接下来照着图文操作下。

打开数据库配置文件/apps/config/database.php,找到’type’这一行,把sqlite改为pdo_sqlite

 

第二种方法:修改php.ini开启sqlite3扩展

按照提示信息操作,检查php.ini中是否已经开启sqlite3扩展,未开启则开启之。这边用phpstudy pro来做个演示,按照下面截图操作。

1、打开软件,找到设置-配置文件-php.ini-php7.3.4nts(网站使用的php版本,具体按照自己的选择)点击打开

2、快捷键ctrl+f调出查找框,输入sqlite3点击查找,找到;extension=sqlite3,然后去掉前面的分号(;)接着快捷键ctrl+s保存。

3、重启服务,看使用的服务,选择apache重启或者nginx,服务重启后就ok了。

pbootcms安装显示No input file specified.

首先我们来看一下PbootCMS官方提供的伪静态规则:

<IfModule mod_rewrite.c>
  Options +FollowSymlinks
  RewriteEngine On
  
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f
  
  #如果页面出现"No input file specified." 请注释第一条,启用第二条
  RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
  #RewriteRule ^(.*)$ index.php [E=PATH_INFO:$1,QSA,PT,L]  
  
</IfModule>

 

 

这里有一条很重要备注提示:

#如果页面出现”No input file specified.” 请注释第一条,启用第二条。

 

为什么同样是Apache服务器会有多种情况呢?

在Apache服务器上,采用模块化运行与采用fastcgi运行方式的伪静态是有差别的,系统默认开启的规则是Apache采用模块化运行方式时需要配置的伪静态规则,而如果您当前的Apache采用fastcgi模式运行PHP,那么使用默认伪静态规则就会出现“No input file specified.”的错误提示。原因是Apache采用fastcgi模式的时候,不能识别PATH_INFO路径,报错如下:

 

所以在windows下很多人安装PbootCMS的时候都没出现这个问题,因为大部分windows用户安装的Apache是采用模块化运行方式的,而在linux上以及在少量windows系统用户采用fastcgi运行模式。如果你采用fastcgi运行方式的时候出现此类提示,只需要把规则改为如下即可(即启用备用规则):

RewriteRule ^(.*)$ index.php [E=PATH_INFO:$1,QSA,PT,L] 

 

pbootcms模板制作教程七 – 自定义分页样式

要自定义分页,首先要使用分页。

根据PbootCMS官方文档,分页标签有两种:

 

系统内置的完整分页条

{page:bar}

 

独立的分页元素标签,可自由搭配使用

{page:current}、{page:count}、{page:rows}...等

 

第一种:系统内置的完整分页条

代码如下:

<div class="paging">{page:bar}</div>

而且,每个元素都已经拥有了自己的样式名称,例如:.page-status、.page-inde…等。

 

接下来只要写上对应的CSS进行美化就可以了。

例如:

/* 分页样式 */
.paging { margin-top: 32px; font-size: 14px; }
.paging > span { margin: auto 16px; }
.paging .page-numbar { margin: auto 0; }
.paging .page-numbar .page-num,
.paging .page-index,
.paging .page-pre,
.paging .page-next,
.paging .page-last { display: inline-block; margin: auto 4px; padding: 2px 12px; border: 1px solid #EEE; border-radius: 2px; }
.paging .page-numbar .page-num-current,
.paging .page-numbar .page-num:hover { border-color: #8667F7; color: #8667F7; }

 

处理后效果:

 

第二种:独立的分页元素标签

如果有需求需要对分页条的内容进行自定义,那么看以本站的分页代码为例:

//通过{page:count}来判断当前列表的分页数量,如果超过1页则显示分页条
{pboot:if('{page:count}' > 0)}

//分页容器
<div class="uk-text-center frontier-paging">
    <ul class="uk-clearfix">
    
        //{page:index}以及{page:pre}指定首页和上一页的链接地址,并且可以在a标签中自由设置首页或者上一页的文字
        <a class="first" href="{page:index}"><i class="fa fa-angle-double-left"></i></a>
        <a class="uk-visible@s prev" href="{page:pre}"><i class="fa fa-angle-left"></i></a>
        
        //分页条
        {page:numbar}
        
        //同首页和上一页,这里是尾页和下一页
        <a class="uk-visible@s next" href="{page:next}"><i class="fa fa-angle-right"></i></a>
        <a class="last" href="{page:last}"><i class="fa fa-angle-double-right"></i></a>
    </ul>
</div>
{/pboot:if}

 

添加样式美化:

/* 分页样式 */
.frontier-paging { margin-top: 32px; }
.frontier-paging ul { display: inline-block; vertical-align: bottom; }
.frontier-paging ul span, 
.frontier-paging ul a { display: block; float: left; margin: auto 2px; padding: 4px 12px; background: #FFF; box-shadow: 0 0 8px rgba(0,0,0,0.07); border-radius: 2px; font-size: 14px; color: #999; }
.frontier-paging ul a.page-num-current,
.frontier-paging ul a:hover { background: #775BFF; color: #FFF; }

 

处理后效果:

 

总结:还是以前所说的,PbootCMS的各种标签已经非常丰富,能不能做出好的东西,就看能不能熟悉标签,自由组合来达成各种需求。

pbootcms模板制作教程七 – 栏目单页内容的调用

单页简单来说就是一个栏目等于一篇文章,一般用于企业站的公司简介、联系我们等。

 

要调用单页内容,首先要创建单页。

如果你直接去后台 “文章内容 — 单页内容”这里寻找的话,将会一无所获,因为单页的创建是在栏目管理里面的。

 

下面是创建单页的步骤:

基础内容 — 内容栏目 — 栏目新增

 

接下来是创建单页的关键,选择内容模型。第一眼在内容模型里面应该看不到单页两个字,因为它在这里叫专题。

至于为什么叫专题,不用管了,选择就是了。

 

 

可以看到,选择内容模型为专题后,列表页模板 — 无,内容页模板 — about.html。

因为之前说过,单页就是一个栏目等于一篇文章,所以并不会有什么内容列表。

至于内容页的模板,可以使用默认的about.html,如果创建的这个单页有独立的样式,那么这里还可以填写其他的模板名称。

例如:新建一个联系我们的单页,内容页模板为contact.html,然后到模板目录,创建html文件,命名为contact.html。那么这个单页栏目的样式就会使用contact.html这个模板页面的样式了。

 

再回到“文章内容 — 单页内容” 就可以看到刚才建立的单页了。

 

在添加完单页的内容后,就可以开始写代码调用了。

 

代码调用部分比较简单,这里就简单写一下,更多的调用参数大家可以参考官方手册。

 

1、在首页或其他聚合页面调用

方法1:

{pboot:content id=单页的内容ID}
    <a href="[content:link]">[content:title]</a>
{/pboot:content}

非常简单,使用{pboot:content}标签调用就可以。注意:这里的id是内容ID,并不是栏目编码。

 

方法2:

{pboot:content scode=单页的分类编码}
    <a href="[content:link]">[content:title]</a>
{/pboot:content}

此方法需要较新的版本才支持。这里的scode是单页栏目编码。

 

2、在单页的自身模板调用

单页自身的模板就是创建单页时填写的模板名称,例如上文提到的about.html或者contact.html。

{content:title}
{content:content}

这个就更简单了,直接在模板页面使用内容详情标签即可。

pbootcms模板制作教程六 – 首页Banner轮播

调用轮播图片是每个企业站常用的,今天我们介绍调用轮播图的标签代码。

这里有两个思路,使用PbootCMS自带的轮播图片模块或者自建一个轮播模型。

1、使用PbootCMS自带的幻灯片模块

{pboot:slide gid=1 num=3}

<div class=”swiper-slide”>

    <a href=”[slide:link]”>

      <img src=”[slide:src]” alt=”[slide:title]”>

    </a>

</div>

{/pboot:slide}

很简单,使用{pboot:slide}标签调用即可,其中gid是分组,num是数量。

自带的轮播扩展内置了10个分组,有标题、副标题和链接地址,一般轮播够用了。

2、自建一个轮播模型

这是本篇教程着重要讲解的部分。

关于模型概念的理解,在使用的时候是非常重要的。

(1)、新建一个轮播模型

输入模型名称,模型类型选择列表,模板留空,提交。轮播模型就建好了,是不是很简单。

 

(2)、添加模型字段

这里可以自己添加需要在轮播中出现的一些元素,比如覆盖在轮播图片上的文字,点击跳转的链接等等,更高级一些甚至还可以添加一个表示当前轮播图片的动画效果的CSS名称,让不同的轮播图用不同的动画效果出现。(只要开动脑筋,PbootCMS的模型让一切皆有可能)

 

(3)、添加轮播栏目

添加栏目的理由:

最简单的理由就是添加内容需要选择栏目,不然不能添加。不过,仔细思考一下,一个网站的轮播很有可能不止在首页顶部调用,比如一些侧边栏广告轮播。那么这里的栏目就相当于默认轮播扩展中的分组,不同的是,这里的栏目是可以无限分组的,而且还可以根据栏目名称知道这是显示在哪里的轮播,方便管理。

 

(4)、接下来就可以添加轮播图了

可以看到,刚才添加的字段“轮播文字”也在这里显示了。

 

(5)、轮播图调用

关于自建模型中轮播图的调用,参考官网文档:指定列表调用 即可。

{pboot:list scode=*}

<a href= “[list:link]”><img src=“[list:ico]”></a>

{/pboot:list}

 

总结:轮播图制作的时候主要就是调用思路。使用自带的轮播扩展,可以直接添加调用;使用模型的方式,可以做一些更高级的定义。

pbootcms模板制作教程五 – 多级导航菜单

从本篇教程开始,将会以网站中常用的一些组件为例,来帮助大家了解和熟悉PbootCMS的标签。

因为习惯从上往下写页面代码,所以就从网页头部的导航菜单开始。

 

本篇教程所需要掌握的知识点:CSS盒子模型、CSS选择器、浮动、清除浮动、绝对定位、相对定位、CSS3 2D转换、CSS3 过渡、导航菜单列表标签、当前栏目标签、if条件语句、PHP运算符。

 

每个人都有自己的代码习惯,比如我就喜欢先写HTML(结构),再写模板标签(数据),接着写CSS(样式),最后写JS(交互)。

所以,先开始写导航菜单的HTML部分:

<!-- 演示就只写二级导航,更多级导航大家可以依葫芦画瓢 -->
<nav class="menu">
    <ul>
        <li>
            <a href="#">主栏目</a>
            <ul>
                <li><a href="">子栏目</a></li>
                <li><a href="">子栏目</a></li>
            </ul>
        </li>
    </ul>
</nav>

 

接下来,使用PbootCMS的模板标签来填充数据:

<nav class="menu">
    <ul>
        {pboot:nav}
        <li>
            <a href="[nav:link]">[nav:name]</a>
            <ul class="sub-menu">
                {pboot:2nav parent=[nav:scode]}
                <li>
                    <a href="[2nav:link]">[2nav:name]</a>
                </li>
                {/pboot:2nav}
            </ul>
        </li>
        {/pboot:nav}
    </ul>
</nav>

 

看一下前端页面:

可以看到,二级菜单已经调用出来了,接下来处理一下导航高亮。

 

导航高亮:

原理:判断当前栏目的ID和导航的ID是否一致,如果一致,则添加class,然后CSS中给这个class设置高亮样式。

方案:使用if条件语句结合当前栏目标签以及导航菜单列表标签进行判断。

代码:

<nav class="menu">
    <ul>
        {pboot:nav}
        <li class="{pboot:if('[nav:scode]'=='{sort:tcode}')}active{/pboot:if}">
            <a href="[nav:link]">[nav:name]</a>
            <ul class="sub-menu">
                {pboot:2nav parent=[nav:scode]}
                <li class="{pboot:if('[2nav:scode]'=='{sort:scode}')}active{/pboot:if}">
                    <a href="[2nav:link]">[2nav:name]</a>
                </li>
                {/pboot:2nav}
            </ul>
        </li>
        {/pboot:nav}
    </ul>
</nav>

 

pbootcms模板制作教程四 – pbootcms模板标签手册

在正式制作模板之前,还需要了解并灵活熟练地使用模板标签。

一个模板中,除去结构(HTML)、样式(CSS)、交互(JS)后就是内容(数据)了,而数据就是通过模板标签,把你在网站后台提交的内容调用出来,展示在前端模板页面。通过不同的结构、样式、交互和内容的组合,就能制作出不同的模板。

 

一、阅读官方开发手册

PbootCMS提供了在线官方开发手册(阅读地址),制作模板的时候可以随时参考手册的内容。

 

二、灵活使用模板标签

开发手册提供的是最基础的模板标签,但是实际制作模板过程中,会遇到一些手册中没有的需求。毕竟,手册不可能把每个需求的代码都直接给你写好,这时候就需要在模板标签的基础上进行灵活运用了。

 

思路一:

先使用 指定栏目标签 调用指定子栏目标题:

{pboot:sort scode=*}
    <a href="[sort:link]">[sort:name]</a>
{/pboot:sort}

再使用 指定栏目内容列表 的标签来调用子栏目内容:

{pboot:list scode=*}
    <a href="[list:link]">[list:title]</a>
{/pboot:list}

 

结合使用:

{pboot:sort scode=1,2,3}
    <a href="[sort:link]">[sort:name]</a>
    {pboot:list scode=[sort:scode]}
        <a href="[list:link]">[list:title]</a>
    {/pboot:list}
{/pboot:sort}

我们只需要指定 scode=子栏目的id 即可。有几个子栏目,scode就写几个id。因为标签支持多个栏目,如:1,2,3。

 

代码实例:

栏目及栏目内容文档调用:

前台效果:

可以看到,子栏目标题和内容列表已经完成了。

不过,这样就需要解决另外一个问题:如果后台新增了子栏目,或者删除了子栏目,怎么办?

当然,你可以到模板文件的 scode 中继续添加新增的id,或者删除id。每次后台新增或者删除子栏目,模板文件就要改一遍。

 

为了更好解决这个问题,就需要灵活使用模板标签了。

 

pbootcms模板制作教程三 – 创建模板文件

学习程序,一定要多动手,多思考。

由于本系列是模板制作教程,因此不会涉及一些基础的HTML以及CSS这些知识的详解,大家需要自行去了解。

在了解PbootCMS的模型概念和拥有一定的基础知识之后,就可以开始动手制作模板了。

 

一、创建模板目录

在template目录下,新建模板目录,命名随意。(例如:new)

 

二、选择模板目录

在PbootCMS后台 — 基础内容 — 站点信息 — 站点模板中选择刚才新建的new。

 

清理一下缓存,看一下前端。

发现错误提示,模板文件不存在。那是当然的,因为我们只是新建了一个目录而已,里面什么都没有。

 

三、创建模板文件

接下来要做的就是在模板目录里面创建模板文件了。这里可以写一个页面创建一个模板文件,也可以统筹规划好有哪些页面,然后把用到的模板文件都一起创建了。(前期教程只做演示,因此之创建一个index.html。后期如果有时间,可以一边写模板一边更新教程,做一个实例教程。)

 

刷新一下前端页面看看。

还是一个错误,仔细看一下,原来的“不存在”变成“读取错误”了,那是因为只是建了个文件,文件里面还是空的,什么都没有。

 

四、写个Hello world!

 

刷新页面,看看Hello world!吧。

 

五、建立资源文件夹

比较简单,在模板目录下分别建立存放css文件的css目录,存放js文件的js目录,存放图片的img目录。

当然,你也可以把这些文件都直接扔在模板目录里面,或者放到其他地方,只要能引用过来就可以。如果你忍受得了,或者喜欢这种混乱的方式的话。

 

接下来,模板的制作就是 HTML+CSS+JS+PbootCMS标签调用 的事情了。

pbootcms模板制作教程二 – 必备工具及基本知识

在做模板之前,还要做一些准备工作,毕竟吃饭之前也要记得洗手。

这里就简单介绍一下制作模板的时候需要做的一些准备工作。

 

1、知识储备

有很多人往往会轻视知识的储备,建议新手直接开工。这样就导致新手在制作模板的时候碰到很多的基础问题,而这些问题如果在交流群等地方直接提出的时候,大家基本上都会建议百度。因为这些问题实在太基础了,大神们已经在群里回答了N遍了,以至累得都懒得回答了。这时候,如果新手具备搜索获取信息的能力还好,如果新手连进行搜索获取信息的能力都不足的话,就卡死了。那么,新手在开工之前,做一些基础知识的储备,绝对是必要的。因为即便是饭来张口,衣来伸手的人,他也得有口可张,有手可伸。

 

模板制作的基础知识包括:HTML+CSS+JS以及获取信息的能力。

(1)、HTML+CSS+JS本教程也不打算展开说,因此新手们可以自行去w3cschool或者菜鸟教程学习。这也不是很难的事情,看文档,写实例就可以了。不要求把每个属性和值都背得滚瓜烂熟,关键是你会运用,至于属性和值,忘记的时候再翻开教程文档看就可以了。所以,学习的时候切记一定要动手多写,加深理解。仅仅把文档读背记住是没用的,就像王语嫣一样,只会说不会打,实践才能出真知。

(2)、可能会有很多人会觉得获取信息的能力很简单吧,打开百度输入要搜索的内容就好了 。如果仅仅是这样的话,怎么解释有些东西为什么别人一搜就有,你怎么搜索也找不到呢?这方面这里就不展开讲了,各位自己去百度一下“搜索技巧”这个关键词,自行学习即可。另外,技术类的问题,有条件的还是上个VPN,找谷歌会比较好。当然,最好还得有一些常用词的英文水平。

 

2、工具储备

几千年前的人就知道“工欲善其事,必先利其器”了,制作模板当然也离不开各种工具了。对于工具的选择,只有一个原则:顺手就好。

以下是一些推荐的工具(排名不分先后):

代码编辑:Visual Studio Code/Sublime Text/Notepad++/Atom/Dreamweaver等等

图片编辑:Photoshop(想不出其他的了,AICDR做矢量?美图秀秀?)

页面调试:Chrome/Firefox

 

3、审美储备

这点就有点玄幻了,因为大家都会拿哈姆雷特来当借口。这方面也不展开说了,容易口水。

只是稍微提醒一下:

(1)、10元的设计和10万的设计是有根本上的区别的。

(2)、间距10px和8px也是有着根本上的区别的。

(3)、既然是制作模板,是直接面对访客视觉的,那么“美”应该是首位考虑的。

 

关于审美的储备方法:没有什么技巧,花时间多看一些“美”的设计,有空的话可以稍微了解一下设计基础理论。

 

总结:准备工作看似简单,实际上新手需要花大量的时间去熟悉和巩固。就像小朋友学拼音的时候要先熟记a、o、e一样。