tag修复

well2025-11-04  33

直接下载替换文件或自行修改

修复tag过长超过120数据库出错,建议大家手动加上,就不写成插件了。

//修改model目录tag.func.php文件

替换function well_tag_post、function well_tag_post_update

增加function df_tag_json_length

function well_tag_post($tid, $fid, $str)
{
    // hook model_tag_post_start.php

    if (empty($str)) return '';

    $arr = explode(',', $str);
    $arr = array_filter($arr);
    if (empty($arr)) return '';
    $arr = array_unique($arr);

    // hook model_tag_post_end.php

    // $tags中的tagid和帖子tid入库 创建帖子时json入库主题附表
	$json = well_tag_process($tid, $fid, $arr);
    // 调用封装函数
    $json = df_tag_json_length($json, 120);
    return $json;
}

// 修改内容标签预处理 $newtag数组, $oldtag旧的json数据
function well_tag_post_update($tid, $fid, $newtag, $oldtag)
{
    // hook model_tag_post_update_start.php

    // 如果旧的tag为空 直接创建新标签
    if (empty($oldtag)) return well_tag_post($tid, $fid, $newtag);

    // hook model_tag_post_update_before.php

    // json旧标签
    if (!is_array($oldtag)) {
        $oldtag = xn_json_decode($oldtag);
        is_array($oldtag) || $oldtag = array();
    }

    // hook model_tag_post_update_center.php

    $newtag = explode(',', $newtag);
    $newtag = array_filter($newtag);
    $newtag = array_unique($newtag);

    // hook model_tag_post_update_middle.php

    //if (empty($newtag)) return '';

    $create_tag = array();
    $tagarr = array();
    if (!empty($newtag)) {
        foreach ($newtag as $tagname) {
            // 搜索数组键值,并返回对应的键名
            $tagname = filter_all_html($tagname);
            $key = array_search($tagname, $oldtag);
            if (FALSE === $key) {
                // 创建新数组$new_tags
                $create_tag[] = $tagname;
            } else {
                // 保留的旧标签
                $tagarr[$key] = $tagname;
                // 销毁旧数组保留的标签 余下为需要删除的标签
                unset($oldtag[$key]);
            }
        }
    }
    // hook model_tag_post_update_after.php

    if (!empty($oldtag)) {
        $tagids = array();
        foreach ($oldtag as $tagid => $tagname) {
            $tagids[] = $tagid;
        }

        well_oldtag_delete($tagids, $tid);
    }

    $r = well_tag_process($tid, $fid, $create_tag, $tagarr);

    // hook model_tag_post_update_end.php
    $r = df_tag_json_length($r, 120);

    return $r;
}

 

// hook model__tag_end.php
//json长度处理
function df_tag_json_length($json, $max_length = 120) {
    if (empty($json)) {
        return $json;
    }
    if (xn_strlen($json) <= $max_length) {
        return $json;
    }
    $json_truncated = xn_substr($json, 0, $max_length - 1);
    $json_truncated = rtrim($json_truncated, ',');
    return $json_truncated . '}';
}
上传的附件:
转载请注明原文地址:https://www.wellcms.net/read-884.html
00