帝国cms用搜索做一些标签分类
时间:05-28
作者:
为啥用帝国cms用搜索做一些搜索分类呢,就是因为现在小伙伴们搞站总有奇怪想法,我们尽量在不二开的情况下去实现一些功能,这样不影响后续帝国cms版本升级。
前面我发过一次 帝
前面我发过一次 帝
为啥用帝国cms用搜索做一些搜索分类呢,就是因为现在小伙伴们搞站总有奇怪想法,我们尽量在不二开的情况下去实现一些功能,这样不影响后续帝国cms版本升级。
前面我发过一次 帝国cms使用搜索做指定内容页面 https://www.ps288.com/wangzhan/ecmscourse/4563.html
这个方式相对简单一些,但是有人无法使用,我研究了下发现那个是GET方式搜索,但是不少人安装的帝国cms只能POST方式搜索
这2个是有点点区别的导致上个教程部分站不能使用,先给大家看下这2个的区别吧
GET方式搜索
URL可见性:搜索参数会显示在URL中(如?key=关键词)
数据长度限制:受URL长度限制(通常约2048字符)
安全性:较低,搜索内容暴露在地址栏
缓存/书签:可被浏览器缓存,可收藏为书签
后退/刷新:后退按钮可直接重新提交搜索
POST方式搜索
URL不可见:搜索参数不会显示在URL中
数据长度:理论上无限制(实际受服务器配置限制)
安全性:相对较高,参数不暴露
缓存/书签:无法直接收藏搜索结果页面
后退/刷新:后退或刷新时浏览器会提示重新提交表单
重点开始: 今天我们就用POST方式搜索 再搞一份教程,顺便再一起弄下 一值多词 自动实现多连接搜索词显示
就像这个页面 我们后台 朝代标签值 里 直接写 马楚,后梁,辽国,闽国,南汉,南平,前蜀,杨吴,五代十国,吴越
那么前台页面自动实现 多个词 搜索连接形式 显示

直接看代码
<?php
// 获取年份字段值(用英文逗号分隔)
$nianhao_keywords = explode(',', $navinfor['nianhao']);
foreach ($nianhao_keywords as $keyword) {
$keyword = trim($keyword);
if (!empty($keyword)) {
// 生成唯一表单ID(避免重复)
$form_id = 'search_form_' . md5($keyword . time()); // 增加time()确保唯一性
?>
<!-- 每个年份关键词对应一个隐藏表单 -->
<form id="<?= $form_id ?>" action="/e/search/index.php" method="post" target="_blank" style="display: none;">
<input type="hidden" name="keyboard" value="<?= htmlspecialchars($keyword) ?>">
<input type="hidden" name="show" value="nianhao"> <!-- 修改1:字段名改为nianhao -->
<input type="hidden" name="tbname" value="article">
<input type="hidden" name="tempid" value="2">
<input type="hidden" name="t" value="<?= time() ?>">
</form>
<!-- 显示为可点击的链接 -->
<a href="javascript:void(0);"
onclick="document.getElementById('<?= $form_id ?>').submit();">
<?= $keyword ?>
</a>
<?php
}
}
?>
使用的时候将里面的nianhao 字段名字 换成你自己的。
可以在onclick="document.getElementById('<?= $form_id ?>').submit();">的();"后面 加style="text-align: 等等 修改下简单的样式,不会玩的勿动。
如果上面的在列表模板使用无效的话 请看下面
首先
如果网站支持 可以直接 这也是只能一个值 里面单一个词的
<a href="/e/search/index.php?searchget=1&tbname=article&keyboard=[!--nianhao--]&show=nianhao,keywords&tempid=2" target="_blank">[!--nianhao--]</a>
一个值里面多个词 还是搞下面的吧
<span id="nianhao-data" data-value="[!--nianhao--]"></span>
<script>
(function () {
var raw = document.getElementById("nianhao-data").getAttribute("data-value") || '';
// 统一替换常见分隔符为英文逗号
raw = raw
.replace(/,/g, ',') // HTML实体逗号
.replace(/,/g, ',') // 中文逗号
.replace(/、/g, ','); // 顿号
var nianhao = raw.split(',');
for (var i = 0; i < nianhao.length; i++) {
var kw = nianhao[i].trim();
if (kw) {
document.write(
'<a href="/e/search/index.php?searchget=1&tbname=article&keyboard=' +
encodeURIComponent(kw) +
'&show=nianhao,keywords&tempid=2" target="_blank">' +
kw + '</a> '
);
}
}
})();
</script>
或者
<script>
function submitChaodaiSearch(keyword) {
const form = document.createElement("form");
form.method = "POST";
form.action = "/e/search/index.php";
form.target = "_blank";
const inputs = {
keyboard: keyword,
show: "chaodai",
tbname: "article",
tempid: "2"
};
for (const name in inputs) {
const input = document.createElement("input");
input.type = "hidden";
input.name = name;
input.value = inputs[name];
form.appendChild(input);
}
document.body.appendChild(form);
form.submit();
document.body.removeChild(form);
}
</script>
<script>
var chaodai = "[!--chaodai--]".split(',');
for (var i = 0; i < chaodai.length; i++) {
var kw = chaodai[i].trim();
if (kw) {
document.write('<a href="javascript:submitChaodaiSearch(\'' + kw + '\')">' + kw + '</a> ');
}
}
</script>
注意替换代码里的标签为你用的标签。
前面我发过一次 帝国cms使用搜索做指定内容页面 https://www.ps288.com/wangzhan/ecmscourse/4563.html
这个方式相对简单一些,但是有人无法使用,我研究了下发现那个是GET方式搜索,但是不少人安装的帝国cms只能POST方式搜索
这2个是有点点区别的导致上个教程部分站不能使用,先给大家看下这2个的区别吧
GET方式搜索
URL可见性:搜索参数会显示在URL中(如?key=关键词)
数据长度限制:受URL长度限制(通常约2048字符)
安全性:较低,搜索内容暴露在地址栏
缓存/书签:可被浏览器缓存,可收藏为书签
后退/刷新:后退按钮可直接重新提交搜索
POST方式搜索
URL不可见:搜索参数不会显示在URL中
数据长度:理论上无限制(实际受服务器配置限制)
安全性:相对较高,参数不暴露
缓存/书签:无法直接收藏搜索结果页面
后退/刷新:后退或刷新时浏览器会提示重新提交表单
重点开始: 今天我们就用POST方式搜索 再搞一份教程,顺便再一起弄下 一值多词 自动实现多连接搜索词显示
就像这个页面 我们后台 朝代标签值 里 直接写 马楚,后梁,辽国,闽国,南汉,南平,前蜀,杨吴,五代十国,吴越
那么前台页面自动实现 多个词 搜索连接形式 显示

直接看代码
<?php
// 获取年份字段值(用英文逗号分隔)
$nianhao_keywords = explode(',', $navinfor['nianhao']);
foreach ($nianhao_keywords as $keyword) {
$keyword = trim($keyword);
if (!empty($keyword)) {
// 生成唯一表单ID(避免重复)
$form_id = 'search_form_' . md5($keyword . time()); // 增加time()确保唯一性
?>
<!-- 每个年份关键词对应一个隐藏表单 -->
<form id="<?= $form_id ?>" action="/e/search/index.php" method="post" target="_blank" style="display: none;">
<input type="hidden" name="keyboard" value="<?= htmlspecialchars($keyword) ?>">
<input type="hidden" name="show" value="nianhao"> <!-- 修改1:字段名改为nianhao -->
<input type="hidden" name="tbname" value="article">
<input type="hidden" name="tempid" value="2">
<input type="hidden" name="t" value="<?= time() ?>">
</form>
<!-- 显示为可点击的链接 -->
<a href="javascript:void(0);"
onclick="document.getElementById('<?= $form_id ?>').submit();">
<?= $keyword ?>
</a>
<?php
}
}
?>
使用的时候将里面的nianhao 字段名字 换成你自己的。
可以在onclick="document.getElementById('<?= $form_id ?>').submit();">的();"后面 加style="text-align: 等等 修改下简单的样式,不会玩的勿动。
如果上面的在列表模板使用无效的话 请看下面
首先
如果网站支持 可以直接 这也是只能一个值 里面单一个词的
<a href="/e/search/index.php?searchget=1&tbname=article&keyboard=[!--nianhao--]&show=nianhao,keywords&tempid=2" target="_blank">[!--nianhao--]</a>
一个值里面多个词 还是搞下面的吧
<span id="nianhao-data" data-value="[!--nianhao--]"></span>
<script>
(function () {
var raw = document.getElementById("nianhao-data").getAttribute("data-value") || '';
// 统一替换常见分隔符为英文逗号
raw = raw
.replace(/,/g, ',') // HTML实体逗号
.replace(/,/g, ',') // 中文逗号
.replace(/、/g, ','); // 顿号
var nianhao = raw.split(',');
for (var i = 0; i < nianhao.length; i++) {
var kw = nianhao[i].trim();
if (kw) {
document.write(
'<a href="/e/search/index.php?searchget=1&tbname=article&keyboard=' +
encodeURIComponent(kw) +
'&show=nianhao,keywords&tempid=2" target="_blank">' +
kw + '</a> '
);
}
}
})();
</script>
或者
<script>
function submitChaodaiSearch(keyword) {
const form = document.createElement("form");
form.method = "POST";
form.action = "/e/search/index.php";
form.target = "_blank";
const inputs = {
keyboard: keyword,
show: "chaodai",
tbname: "article",
tempid: "2"
};
for (const name in inputs) {
const input = document.createElement("input");
input.type = "hidden";
input.name = name;
input.value = inputs[name];
form.appendChild(input);
}
document.body.appendChild(form);
form.submit();
document.body.removeChild(form);
}
</script>
<script>
var chaodai = "[!--chaodai--]".split(',');
for (var i = 0; i < chaodai.length; i++) {
var kw = chaodai[i].trim();
if (kw) {
document.write('<a href="javascript:submitChaodaiSearch(\'' + kw + '\')">' + kw + '</a> ');
}
}
</script>
注意替换代码里的标签为你用的标签。