我这改成了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(' ', '#', "@", "$", "%", "^", '&', '·', '<', '>', ';', '`', '~', '!', '¥', '……', ';', '?', '?', '-', '—', '_', '=', '+', '.', '{', '}', '|', ':', ':', '、', '/', '。', '[', ']', '【', '】', '‘', ' ', ' ', ' ', ' ', ' '), '', $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 . '}';
}
