fastadmin标签链接更换成ID查询,或者关键词拼音标签查询
提供几处修改的代码,直接替换即可!如果可用,请给此文章点个赞,鼓励下!
文章基础表archives增加个字段tagids,包含关键词ID和关键词name,字符串(id|name,id|name,*****)
application/admin/model/cms/Archives.php找到如下对比修改。
if (isset($row['tags'])) { $tags = array_filter(explode(',', $row['tags'])); if ($tags) { $tags_list = $tags; $tagslist = Tags::where('name', 'in', $tags)->select(); foreach ($tagslist as $k => $v) { $archives = explode(',', $v['archives']); if (!in_array($row['id'], $archives)) { $archives[] = $row['id']; $v->archives = implode(',', $archives); $v->nums++; $v->save(); } $tags = array_udiff($tags, [$v['name']], 'strcasecmp'); } $list = []; foreach ($tags as $k => $v) { $list[] = ['name' => $v, 'archives' => $row['id'], 'nums' => 1]; } if ($list) { (new Tags())->saveAll($list); } //扩展标签tagids if ($tags_list) { $tags_list_arr = Tags::where('name', 'in', $tags_list)->select(); $tag_arr = []; foreach ($tags_list_arr as $key=>$value_arr){ $tag_arr[] = $value_arr['id'].'|'.$value_arr['name']; } $row->where('id', $row['id'])->update(['tagids' => implode(',', $tag_arr)]); } } }
文章页面标签链接更新,如下代码:/addons/cms/model/Archives.php
public function getTagslistAttr($value, &$data) { if (isset($data['tagslist'])) { return $data['tagslist']; } $list = []; foreach (array_filter(explode(",", $data['tagids'])) as $k => $v) { $value_s = explode('|', $v); $list[] = ['name' => $value_s[1], 'url' => addon_url('cms/tags/index', [':id' => $value_s[0]])]; } $data['tagslist'] = $list; return $list; }
标签控制器代码修改:/addons/cms/controller/Tags.php
<?php namespace addons\cms\controller; use addons\cms\model\Archives; use addons\cms\model\Tags as TagsModel; /** * 标签控制器 * Class Tags * @package addons\cms\controller */ class Tags extends Base { public function index() { // $tags = null; // $name = $this->request->param('name'); // if ($name) { // $tags = TagsModel::getByName($name); // } $tags = null; $id = $this->request->param('id'); if ($id) { $tags = TagsModel::getById($id); } if (!$tags) { $this->error(__('No specified tags found')); } $filterlist = []; $orderlist = []; $orderby = $this->request->get('orderby', ''); $orderway = $this->request->get('orderway', '', 'strtolower'); $params = []; if ($orderby) { $params['orderby'] = $orderby; } if ($orderway) { $params['orderway'] = $orderway; } $sortrank = [ ['name' => 'default', 'field' => 'weigh', 'title' => __('Default')], ['name' => 'views', 'field' => 'views', 'title' => __('Views')], ['name' => 'id', 'field' => 'id', 'title' => __('Post date')], ]; $orderby = $orderby && in_array($orderby, ['default', 'id', 'views']) ? $orderby : 'default'; $orderway = $orderway ? $orderway : 'desc'; foreach ($sortrank as $k => $v) { $url = '?' . http_build_query(array_merge($params, ['orderby' => $v['name'], 'orderway' => ($orderway == 'desc' ? 'asc' : 'desc')])); $v['active'] = $orderby == $v['name'] ? true : false; $v['orderby'] = $orderway; $v['url'] = $url; $orderlist[] = $v; } $orderby = $orderby == 'default' ? 'weigh DESC,id DESC' : $orderby; $pagelist = Archives::with(['channel']) ->where('status', 'normal') ->where('id', 'in', explode(',', $tags['archives'])) ->order($orderby, $orderway) ->paginate(10, false, ['type' => '\\addons\\cms\\library\\Bootstrap']); $pagelist->appends($params); $this->view->assign("__FILTERLIST__", $filterlist); $this->view->assign("__ORDERLIST__", $orderlist); $this->view->assign("__TAGS__", $tags); $this->view->assign("__PAGELIST__", $pagelist); \think\Config::set('cms.title', $tags['name']); return $this->view->fetch('/tags'); } }bi/addons/cms/model/tags.php
标签模型链接修改:/addons/cms/model/Tags.php
public function getUrlAttr($value, $data) { // $name = $data['name'] ? $data['name'] : $data['id']; // return addon_url('cms/tags/index', [':id' => $data['id'], ':name' => $name], true); $name = $data['id'] ? $data['id'] : $data['name']; return addon_url('cms/tags/index', [':id' => $data['id'], ':name' => $name], true); }
最后补充:
插件后台管理,更新关键词链接name修改为:id。
发表评论 取消回复