天兴工作室

主题演示站

zblogphp提示“ Call to undefined function openssl_pkey_get_public()”的原因和解决办法

我们在使用zblogphp的过程中可能会遇到“ Call to undefined function openssl_pkey_get_public()”这个错误提示,如下图:

2.png

把这个错误提示翻译一下:

2.png

意思就是调用了一个没有定义的函数,“openssl_pkey_get_public”这个函数是依赖openssl组件的,如果你的服务器上没有安装这个组件,当你启用zblog收费应用的时候就会报这个错误了。

知道原因后解决就简单了,去服务器里面安装或者开启openssl这个组件就可以了。


由于主机服务器环境太多,每一种开启的方法都不一样,所以如果你是虚拟主机推荐直接联系你的主机服务器解决。

如果你用的是服务器,那么请网上搜索对应的“服务器环境+openssl”关键词找对应的解决方法。


本文只来举一个windows服务器安装了“phpstudy”的环境下的解决办法。

打开“phpstudy”,点击“其他选项菜单”--“打开配置文件”--“php-ini”,搜索“extension=php_openssl.dll”,把前面的分号删掉,然后重启下phpstudy即可。

zblogphp1.6版本报错“非法访问”的原因和解决办法

天兴工作室在之前写过一篇关于zblog报错“非法访问”的文章:“zblog提示“非法访问”是什么原因?zblog提示非法访问的解决办法”。但是如果你是zblogphp1.6版本,那么这个报错就还有一个原因,本篇文章来尝试说明下。

QQ截图20201223095419.png

首先确认你的zblogphp版本是不是1.6及以上,再去确认下操作了什么之后才报这个错误的。

如果是网站后台页面打开后长期没有使用而触发了程序安全规则导致的报错,那么重新登录即可。

另外一种就是在后台某个页面提交了数据之后报的错,那么就肯定是本篇文章说到的这个问题了。

zblogphp1.6版本程序新增了一个“csrfToken”安全功能,这个功能是为了防止跨站伪造请求提交数据的。不用理解这个原理,只用知道这是一个让你网站数据更加安全的方法即可。

如果你提交的数据不规范或者提交数据页面的验证规则有问题就会出现这个报错提示了。

了解了原因后就可以针对性的解决问题了,先定位到你是在操作了什么之后出现的错误。如果是在程序自带数据提交页面,例如发布文章新建分类等页面报这个错误的话,请切换到默认主题并逐个排查插件直到定位到哪一个应用引起的,然后联系该应用作者排查即可。

如果是在插件或者主题的数据提交页面,例如主题配置页面、插件配置页面报这个错误,那么一般就是该应用的“csrfToken”不规范造成的,请直接联系应用作者排查即可。

wordpress导航栏自定义添加class和rel="nofollow"的步骤

wordpress导航栏是可以自定义添加class和rel="nofollow"的,但是新手往往找不到设置入口,如果你也遇到了这个问题,可以按照本文步骤操作。

第一步:打开后台--外观--菜单,点击右上角的“显示选项”,会出现以下界面:

1.png

然后再勾选“CSS类”和“链接关系(XFN)“两个。

第二步:还是打开后台--外观--菜单,点开“使用实时预览管理”来到导航栏设置界面,在打开的新页面里面先选择导航栏,然后就可以对导航栏的某项设置css类和rel="nofollow"了,如下图:

2.png

设置完成点击发布即可完成整个步骤。

swiper做导航栏时自动跳转至对应分类的代码

给客户做一个zblog模板,手机端需要实现一个滑动导航栏的需求。分为上下两部分,一级分类显示在上面当导航栏,下面则显示该分类的子分类,左右滑动可切换。

于是准备直接用swiper实现,直接new了两个Swiper对象,然后绑定切换,这个效果Swiper官网有案例的。

然后出现了一个问题,当打开列表页的时候导航栏需要切换到当前分类并高亮显示,底部也要切换到对应的子分类模块显示。

尝试了一些方法后用“slideTo”这个方法解决了,分享下思路过程和代码。

首先了解下“slideTo”这个方法的参数,官方文档说明:https://www.swiper.com.cn/api/methods/109.html

思路大概就是循环导航栏swiper,对比哪一个跟当前页面的链接是相同的,然后获取它的“data-swiper-slide-index”值;

然后用“slideTo”方法,把上面获取到值赋给子分类模块的swiper,即可实现需求。

代码:

导航栏swiper的class为“gallery-thumbs”,子分类模块swiper的class为“galleryTop”。js代码如下:

var surl = location.href;
$(".gallery-thumbs .swiper-slide a").each(function() {
    if ($(this).attr("href") == surl) {
        var liebs = $(this).parent().attr("data-swiper-slide-index");
        var liebss = liebs - 1;
        galleryTop.slideTo(liebss,0, false);
    }
});

最后总结下,swiper确实很强大。

zblogphp自带js框架评论接口大全

zblogphp从1.5版本就开始推出了自带的js前端框架:Z-BlogPHP JavaScript Framework;把一些前端常用的事件都封装了起来内置到zblogphp.js文件里面。

主题的js只需要简单的按照规定调用即可,大大的简化了流程和统一了标准。

分享以下官方git库里面的一些使用案例:

// 评论字段校验规则,要求提交的内容必须有一个test字段
zbp.options.comment.inputs.test = {
    required: true,
    getter: function () {
        return 'ZBPJF'
    },
    validator: function (text, callback) {
        if (text !== 'ZBPJF') {
            callback(new Error('No ZBPJF!'))
        } else {
            // null代表没问题
            callback(null)
        }
    }
}

// 挂接口

// 获取评论数据
zbp.plugin.on("comment.get", "ZBPJFExample", function (postId, page) {
    console.log('开始尝试评论数据')
})

// 得到评论数据
zbp.plugin.on("comment.got", "ZBPJFExample", function (formData, data, textStatus, jqXhr) {
    console.log('获得评论数据')
    console.log(data)
})

// 评论开始接口,只能对formData进行读取和修改
zbp.plugin.on("comment.post.start", "ZBPJFExample", function (formData) {
    console.log('开始评论!')
})

// 评论验证中接口
zbp.plugin.on("comment.post.validate", "ZBPJFExample", function (formData) {
    console.log('评论验证中!')
})

// 评论验证失败接口
zbp.plugin.on('comment.post.validate.error', 'ZBPJFExample', function (error, formData) {
    console.log('评论验证失败:' + error.code)
})

// 评论验证成功接口
zbp.plugin.on('comment.post.validate.success', 'ZBPJFExample', function (formData) {
    console.log('评论验证成功!')
})

// 评论发送成功接口
zbp.plugin.on('comment.post.success', 'ZBPJFExample', function (formData, data, textStatus, jqXhr) {
    console.log('评论发送成功!')
    console.log("系统返回数据:");
    console.log(data)
})

// 评论发送失败接口
zbp.plugin.on('comment.post.error', 'ZBPJFExample', function (error, formData, data, textStatus, jqXhr) {
    console.log('评论发送失败,错误:' + error.code)
    console.log(error)
})

// 评论发送结束接口
// 无论成功或失败,评论发送结束均会触发
zbp.plugin.on('comment.post.done', 'ZBPJFExample', function (error, formData, data, textStatus, jqXhr) {
    console.log('评论发送结束')
})

// 评论回复接口,可能在为老版本使用的主题中会无效
// 另外,通过zbp.plugin.unbind("comment.reply", "system-default")可以解绑系统的相关事件。
zbp.plugin.on("comment.reply.start", "ZBPJFExample", function (id) {
    console.log("回复评论ID:" + id);
});

// 取消评论回复接口,可能在为老版本使用的主题中会无效,若解绑了系统有关事件可能会无效。
// 可能需要主题配合
zbp.plugin.on("comment.reply.cancel", "ZBPJFExample", function (id) {
    console.log("取消回复评论");
});

有兴趣的可以直接在自己的代码里面测试,可玩性还是有的。

wordpress提示"Error establishing a database connection"的解决办法

今天一个客户的wordpress网站提示"Error establishing a database connection",所有页面都打不开了。

这个提示的意思翻译出来是“建立数据库连接时出错”。按提示来说应该就是数据库没链接上。

一开始以为是用户自己修改数据库信息导致的,去“wp-config.php”里面查看数据库信息发现并没有问题,然后准备用“phpmyadmin”打开数据库看下,结果数据库登录不上去,提示登录失败。

查看“MySQL”服务发现已经挂了,“MySQL”的状态是关闭。重新启用问题就解决了。

1.png

最后的疑惑是到底是操作了什么会导致“MySQL”挂掉呢?

天兴工作室单品营销zblog主题使用视频教程

天兴工作室单品营销zblog主题使用视频教程,通过此教程可以更快的去熟悉主题的设置和使用。

主题购买地址:http://demo.txcstx.cn/post/1364.html

天兴工作室 zblog页面工具栏插件使用视频教程

插件界面购买页面:http://demo.txcstx.cn/post/1355.html


如果你对插件有什么建议或者反馈可以在插件购买页面留言,也可以在本页面留言。

用腾讯企业邮做为邮件服务器来发送通知邮件的操作步骤

之前写过一篇“设置QQ邮箱为发送邮件服务器的详细带图步骤”,但是用QQ邮箱做发件服务还是不那么方便。天兴工作室自己用的是腾讯企业邮,设置起来很方面。唯一的限制就是得有自己的域名,再一想域名做为基础每个站长应该都有,那么本文就为大家介绍下怎么用腾讯企业邮做为发送服务器来发送通知邮件。

第一步:注册腾讯企业邮箱

去腾讯企业邮官网:https://exmail.qq.com/注册账号,开通基础版就行了。

注册的步骤稍微有点多,需要绑定域名啥的,照提示操作就行了,这里就不详细说明了。

注册成功后你会有一个类似于“用户名@域名”这样格式的邮箱,和设置好的邮箱密码,有两个就可以看接下来的步骤了。

第二步:zblog后台设置发送邮件服务器

一般需要你配置发送邮件服务器的后台配置会类似于下图这样:

21.png

需要填写的部分如下:

SMTP服务器:smtp.exmail.qq.com;

SMTP端口:465;

发信邮箱:你的邮箱账号;

发信密码:你的邮箱密码;

收信邮箱:测试邮件是否发送成功的收信邮箱账号;

发送方式:选SMTP模式;

开启SSL:开启;

然后保存提交,再点击发送测试邮件,收到了通知邮件则证明配置成功了。


补充说明:如果发送测试邮件失败,页面会有提示,如果你没有解决可以把提示复制下在本文下评论区域留言,我们看到了有可能会回复的。

zblog当天发布的文章标题显示成红色的几种解决办法

当天发布的文章标题或者日期变红色这些小需求很受客户的喜欢,都说这个可以提升用户体验。虽然我也没能理解提升了啥,但是存在即合理,本文来分享下两种可以实现这个需求的方法。

第一种:小白都会写的第一个函数

打开你正在使用的主题目录里面的“include.php”文件,在一个你认为合适的地方插入下面的函数:

function TX_Tagging_red($as){
   $time1 = strtotime(date('y-m-d')); //获取当前时间并转换为时间戳
   $time2 = strtotime($as->Time('y-m-d')); //获取文章发布时间并转换为时间戳
   $isnew = false; 
   if (ceil(($time1 - $time2) / 86400) < 1) { 
     $isnew = true;
   }
   return $isnew;
}

详细解释下这个函数:

先获取当前时间,再获取文章发布时间。拿当前时间减去文章发布时间,除以86400秒也就是一整天,再把得出的数字向上舍入得出一个整数,最后判断这个整数是否小于1。如果小于1函数输出布尔值的“真”,反之输出布尔值的“假”。

函数写好了就可以去主题文件里面使用了,找到并打开你想显示当天发布文章标红的地方,例如“post-multi.php”文件,找到文章标题调用代码“{$article.Title}”,把它改成下面这样:

<span{if TX_Tagging_red($article)} style="color: red"{/if}>{$article.Title}</span>

保存文件再去后台首页清空下缓存,就能看到效果了。

第二种:更简单更粗糙的对比

这个方法简单粗暴有疗效,一样的以“post-multi.php”文件为例,找到文章标题调用代码“{$article.Title}”,把它改成下面这样:

<span{if $article.PostTime > strtotime(date("Y-m-d"))} style="color: red"{/if}>{$article.Title}</span>

代码解释:

获取文章发布时间戳,获取当前时间转换为时间戳,获取的当前时间只有年月日,默认时分秒全部是0,所以只要是当天发布的文章的时间戳都会比这个大,因此一个简单的对比就能对比出来。

<< < 1 2 3 4 5 6 7 8 9 10 > >>
«    2026年4月    »
12345
6789101112
13141516171819
20212223242526
27282930
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
文章归档
网站收藏
友情链接

Powered By Z-BlogPHP 1.7.5

天兴工作室主题演示站点,如遇到问题请联系我们的在线qq:207649916咨询