魔改tag无限制

well2025-11-04  72

我这改成了1024,建议改255,实在不够用就1024。

修改数据库

如果没安装可以改install/install.sql第329行在安装

  `tag` varchar(1024) NOT NULL DEFAULT '',  # 标签 

如果已经安装就去改数据库

wellcms_website_thread   tag改varchar(1024)

 

修改文件

view/js/wellcms.js

替换179行。删除了tag 5个限制

            $('<span class="tag tags-token" style="margin-right: 1rem;margin-bottom: .25rem;margin-top: .25rem;padding: .25rem .5rem;border: 1px solid #dddfeb;font-size: .8575rem;line-height: 1.5;border-radius: .2rem;">' + tag + '</span>').insertBefore(tag_input.parents('.tags').find('.tag-wrap'));
            tag_input.val('');
            get_tag_val(tag_input);

model/tag.func.php 

替换function well_tag_post、function well_tag_post_update、function well_tag_process

增加function df_tag_json_length

 

function well_tag_post、function well_tag_post_update在263-343行替换以下代码

//--------------其他方法-------------

// 标签预处理 一般出入的是数组
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, 1024);
    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, 1024);

    return $r;
}

function well_tag_process在389行替换以下代码

//tag入库无限制
function well_tag_process($tid, $fid, $new_tags = array(), $tagarr = array())
{
    if (empty($tid)) return '';

    // hook model_tag_process_start.php

    // 新标签处理入库
    if ($new_tags) {

        // hook model_tag_process_foreach_start.php

        $threadarr = array();
        $tagids = array();
        
        // 移除数量限制:删除原$size、$n的计算逻辑

        // hook model_tag_process_foreach_before.php

        foreach ($new_tags as $name) {
            $name = trim($name);
            $name = stripslashes($name);
            $name = strip_tags($name);
            $name = str_replace(array('&nbsp;', '#', "@", "$", "%", "^", '&', '·', '<', '>', ';', '`', '~', '!', '¥', '……', ';', '?', '?', '-', '—', '_', '=', '+', '.', '{', '}', '|', ':', ':', '、', '/', '。', '[', ']', '【', '】', '‘', '	', '    ', '  ', '   ', '    '), '', $name);
            $name = htmlspecialchars($name, ENT_QUOTES);
            // 移除数量限制:删除$i相关判断,仅保留标签有效性判断
            if ($name) {
                // hook model_tag_process_read_name_before.php
                // 查询标签
                $read = well_tag_read_name($name);
                // hook model_tag_process_read_name_after.php
                if ($read) {
                    // 存在 count+1
                    $tagids[] = $read['tagid'];
                    // hook model_tag_process_read_name.php
                } else {
                    // 入库
                    $arr = array('name' => $name, 'count' => 1);
                    // hook model_tag_process_create.php
                    $tagid = well_tag_create($arr);
                    FALSE === $tagid and message(-1, lang('create_failed'));
                    $read = array('tagid' => $tagid, 'name' => $name);
                    // hook model_tag_process_create_after.php
                }

                $tag_thread = array('tagid' => $read['tagid'], 'tid' => $tid);

                // hook model_tag_process_before.php

                $threadarr[] = $tag_thread;

                // hook model_tag_process_center.php

                $tagarr[$read['tagid']] = $read['name'];
            }
        }

        // hook model_tag_process_middle.php

        !empty($threadarr) and tag_thread_big_insert($threadarr);

        !empty($tagids) and well_tag_update($tagids, array('count+' => 1));
    }

    // hook model_tag_process_after.php

    $json = empty($tagarr) ? '' : xn_json_encode($tagarr);

    // hook model_tag_process_end.php

    return $json;
}

// hook model__tag_end.php
//json长度处理
function df_tag_json_length($json, $max_length = 1024) {
    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-885.html
40