PbootCMS修改自定义标签获取标签备注名
今天客户反馈自己不会修改模板中的一些文字,故所以有了以下二开教程!尽量让后台可以控制的更多,这样方便用户自己操作,也避免很多絮叨!
今天客户反馈自己不会修改模板中的一些文字,故所以有了以下二开教程!尽量让后台可以控制的更多,这样方便用户自己操作,也避免很多絮叨!
开发步骤
修改后的函数
函数位置:/apps/home/controller/ParserController.php
// 解析自定义标签 public function parserUserLabel($content) { $pattern_value = '/{label:value_([w]+)(s+[^}]+)?}/'; $pattern_name = '/{label:name_([w]+)(s+[^}]+)?}/'; if(preg_match_all($pattern_value, $content, $matches)) { $data = $this->model->getLabel(); $count = count($matches[0]); for ($i = 0; $i < $count; $i ++) { if (! $data) { // 无数据时直接替换为空 $content = str_replace($matches[0][$i], '', $content); continue; } $params = $this->parserParam($matches[2][$i]); switch ($matches[1][$i]) { default: if (isset($data[$matches[1][$i]])) { if ($data[$matches[1][$i]]['type'] == 3 && $data[$matches[1][$i]]['value']) { if (! preg_match('/^http/', $data[$matches[1][$i]]['value'])) { $data[$matches[1][$i]]['value'] = $this->adjustLabelData($params, SITE_DIR . $data[$matches[1][$i]]['value']); } else { $data[$matches[1][$i]]['value'] = $this->adjustLabelData($params, $data[$matches[1][$i]]['value']); } } $content = str_replace($matches[0][$i], $this->adjustLabelData($params, $data[$matches[1][$i]]['value']), $content); } } } } if(preg_match_all($pattern_name, $content, $matches)) { $data = $this->model->getLabel(); $count = count($matches[0]); for ($i = 0; $i < $count; $i ++) { if (! $data) { // 无数据时直接替换为空 $content = str_replace($matches[0][$i], '', $content); continue; } $params = $this->parserParam($matches[2][$i]); switch ($matches[1][$i]) { default: if (isset($data[$matches[1][$i]])) { $content = str_replace($matches[0][$i], $this->adjustLabelData($params, $data[$matches[1][$i]]['description']), $content); } } } } return $content; }
修改模型
模型位置:/apps/home/model/ParserModel.php
// 自定义标签,不区分语言,兼容跨语言 public function getLabel() { return parent::table('kaifa_label')->decode()->column('value,type,description', 'name'); }
至此通过{label:value_XXX}可以调用标签内容 通过{label:name_XXX}可以调用标签名称
优化点击名称快速复制标签
新增js复制函数
// 快捷复制调用标签 function copyText(text) { var input = document.getElementById("copyText"); input.value = '{'+text+'}'; // 修改文本框的内容 input.select(); // 选中文本 document.execCommand("copy"); // 执行浏览器复制命令 layer.msg('复制标签成功') }
修改模板给名称和内容增加触发事件
<a href="javascript:;" onclick="copyText('label:value_[value->name]');"> <a href="javascript:;" onclick="copyText('label:name_[value->name]');"> <!-- 内容复制区域 --> <textarea id="copyText" style="position: absolute;top: 0;left: 0;opacity: 0;z-index: -10;"></textarea>
这样就不用一个一个去拼调用标签了,相对便捷!又想法的同学可以尝试一下。
文章链接:https://www.94kaifa.com/kf/10025.html
文章版权:94KAIFA(www.94kaifa.com) 所发布的内容,部分为原创文章,转载请注明来源,网络转载文章如有侵权请联系我们!
本文最后更新发布于 2023-08-23 17:41:23 ,某些文章具有时效性,若有错误或已失效,请联系客服处理:75109479@qq.com