×

欢迎光临,有什么想法就留言告诉我吧!

你的精彩评论可能会出现在这里哦! 留言抢沙发

技术坑

手动升级了一下zblog

mtsym mtsym 发表于2020-12-01 浏览4387 评论0

由于zblog之前有很多地方用起来不方便,于是自己改动了一番,结果升级的时候傻眼了,升级到162140改动很大!!!

我主要搞了下面一些操作

 一开始没有研究过插件,对着代码就是一顿瞎改,比如后台文章管理很弱,自己添加了部分功能,后面其他的功能都是以插件的形式实现了。
 xml-rpc支持修改,为了能更好的自动发布文章,我增加了对wordpress xml-rpc的支持配合python工具用。
 文章修改时间字段,我不知道为啥zblog一直没有这个字段,我自己添加了一个Mod

技术坑

zblog如何给单个分类文章添加特定内容

mtsym mtsym 发表于2019-12-23 浏览4258 评论0

如果你想给zblog某个分类下的文章单独添加特定html内容或者广告,可以通过修改模板文件post-single.php,找到``,在里面添加一个div,然后在主题的配置中心自己生成两个字段,比如分类叫post_ad_category,分类绑定的内容叫post_ad_category_content,修改大致如下

main.php的submit添加如下字段


    $zbp-˃Config( 'theme' )-˃postAdCategory  = $_POST['post<!--autointro-->

技术坑

zblog后台文章管理增加修改时间筛选过滤

mtsym mtsym 发表于2019-06-19 浏览4316 评论0

有时候在zblog下编辑了几篇文章后再想查看一下, 发现没有按修改时间排序的功能, 去数据库里看也没有看到保存修改时间的字段, 于是就自己添加了一个, 操作如下

  1. 首先在数据的zbp_post表里Log_PostTime后面增加一个字段Log_ModTime, 然后把它的值修改为文章创建时间,具体sql操作
    UPDATE zbp_post set zbp_post.log_ModTime=zbp_post.log_PostTime
  2. 找到post.php, 在P
zblog后台文章管理增加文章浏览次数查看及排序

技术坑

zblog后台文章管理增加文章浏览次数查看及排序

mtsym mtsym 发表于2019-06-17 浏览4597 评论0

如果你想给zblog后台文章管理添加文章浏览总数查看, 并且加上浏览总数排序过滤, 很简单, 找到c_system_admin.php文件, 修改函数Admin_ArticleMng, 主要是增加一个checkbox, 在table里面增加一列浏览总数,对应数据库字段log_ViewNums, 具体代码修改如下


function Admin_ArticleMng()
{
    global $zbp;
    // 省略若干行, 在istop的checkbox添加
    <!--autointro-->

技术坑

zblog远程发布文章API改进实现兼容wordpress xmlrpc

mtsym mtsym 发表于2019-05-04 浏览7673 评论0

最近有个zblog自动发布文章需求,大致看了一下,发现并没有wordpress方便,特别是我还有对接python的要求,大概有几种办法

1. 直接读取/zb_users/c_option.php,暴力写入数据
2. 直接开发一个插件使用zblog内部代码接口
3. 使用zblog本身的xmlrpc

第一种方案为了安全还得自己写鉴权,第二种方案通用性强但是需要对zblog比较了解,第三种方案最方便了,python可以直接使用xmlrpc库对接,由于我已经有wordpress自动发布的python脚本,我想复用这个,因此对zblog的xmlrpc进行改造。

兼容wordpress xmlrpc

找到zb_system/xml-rpc/index.php文件,先在入口判断出增加’mt.supportedMethods’支持,再增加’wp.newPost’支持

case 'mt.supportedMethods':
     $strXML = '<methodResponse><params><param><value><array><data>$%#1#%$</data></array></value></param></params></methodResponse>';
     $strAll = '<value><string>wp.newPost</string></value>';

     echo str_replace("$%#1#%$", $strAll, $strXML);
     break;

case 'wp.newPost':
     $username = (string)$xml->params->param[1]->value->string;
     $password = (string)$xml->params->param[2]->value->string;
     xmlrpc_Verify($username, $password);
     if ($zbp->CheckRights('ArticlePst')) {
         xmlrpc_newPost_as_wp($xml->params->param[3]->value->struct->asXML());
     } else {
         xmlrpc_ShowError(6, __FILE__, __LINE__);
    }
    break;

转化wordpress xmlrpc支持函数如下

```
function xmlrpc_newPost_as_wp($xmlstring)
{
global $zbp;

$xml = simplexml_load_string($xmlstring);

if ($xml) {
    $post = array();
    foreach ($xml->children() as $x) {
        $a = (string)$x->name;
        if ($a == 'terms_names') {
            $struct = $x->value->struct;
            foreach ($struct->children() as $y) {
                $a = (string)$y->name;
                $b = $y->value->children()->asXML();
                $b = str_replace(array('<array>', '</array>', '<data>', '</data>', '<string>', '</string>', '<value>', '</value>', PHP_EOL), array(''), $b);
                $post[$a] = $b;
            }
        } else {
            $b = $x->value->children();
            $b = str_replace(array('<array>', '</array>', '<data>', '</data>', '<string>', '</string>'), array(''), $b);
            $post[$a] = $b;
        }
    }

    $_POST['ID'] = 0;

    $_POST['Title'] = $post['post_title'];

    if (strcmp('publish', $post['post_status']) != 0) {
        $_POST['Status'] = 0;
    } else {
        $_POST['Status'] = 1;
    }

    if (isset($post['mt_basename'])) {
        $_POST['Alias'] = $post['mt_basename'];
    }
    if (isset($post['dateCreated'])) {
        date_default_timezone_set('GMT');
        $_POST['PostTime'] = strtotime($post['dateCreated']);
        date_default_timezone_set($zbp->option['ZC_TIME_ZONE_NAME']);
        $_POST['PostTime'] = date('c', $_POST['PostTime']);
    }
    if (isset($post['wp_author_id'])) {
        $_POST['AuthorID'] = $post['wp_author_id'];
    } else {
        $_POST['AuthorID'] = $zbp->user->ID;
    }
    if (isset($post['post_tag'])) {
        $_POST['Tag'] = $post['post_tag'];
    }
    if (isset($post['category'])) {
        $post['category'] = str_replace('<value>', '', $post['category']);
        $catename = trim(GetValueInArray(explode('</value>', $post['category']), 0));
        $_POST['CateID'] = $zbp->GetCategoryByName($catename)->ID;
    }
    if (isset($post['mt_excerpt'])) {
        $_POST['Intro'] = $post['mt_excerpt'];
    }
    if (isset($post['mt_text_more']) || isset($post['post_content'])) {
        if (isset($post['mt_text_more'])) {
            if ($post['mt_text_more'] != '') {
                $_POST['Content'] = $post['post_content'] . '

技术坑

ZBLOG国际化插件和主题增加英语支持

mtsym mtsym 发表于2019-01-22 浏览5105 评论0

虽然wordpress和zblog都用了十几年,也写过一些小的插件,但是我还是更喜欢zblog一些,对于一个没有系统学过php的人来说,就是凭着其他语言的经验回首掏手里干,wordpress虽然强大,但是相对比较复杂,相对来说zblog就比较直接一点,改起来比较轻松。

如果你需要做外语网站,虽然进入网站设置--˃全局设置--˃网站语言选择了英语,但是用的插件和主题都是中文的,怎么办?这需要自己自己增加多语言配置,具体操作官方已经提供了文档LoadLanguage 语言包载入

技术坑

zblog主题添加右侧栏

mtsym mtsym 发表于2018-08-17 浏览5412 评论0

现在用的这套主题是plain,当初搭建zblog时在应用中心随便点的,没注意到已经是三年前的主题,不支持sidbar,用了有一段时间了,不想折腾,今天花了点时间给加上了,zblog的结构很清晰,简单步骤如下

  1. 编辑css文件,给右侧留出布局空间
  2. 在index.php和single.php增加右侧栏布局,在模块管理里面可以看到有5个侧栏,在模板里面使用

    
    
        {template:sidebar}
        {template:sideb<!--autointro-->