当系统内自带的标签不符合我们自己的需求时,就要自定义一个了,以block为例(调用固定内容,虽然系统内有公用标签,但是在后台的展示不太友好,还是决定自己写一个)。
模版:
{pboot:block id='2'/}
模版标签控制器控制器:
在这个文件中,需要写一个自定义标签方法:
public function parserBLock($content){$pattern = '/\{pboot:block(\s+[^}]+)?\}/';if (preg_match_all($pattern, $content, $matches)) {$count = count($matches[0]);for ($i = 0; $i < $count; $i ++) {$params = $this->parserParam($matches[0][$i]);$data = '';foreach ($params as $key => $value) {switch ($key) {case 'id':$data = $this->model->getBlockContent($value);//return $data['value'];//print_r($data);exit();break;/*$data = $this->model->getContent($value)->content; // 获取到的文章id去获取文章内容$data = testreplace($data);*/}}if (! $data) { // 无内容不解析continue;}$content = $data['value'];}}return $content;}
同时还需要在ParseModel文件中,添加一条获取数据的方法:
public function getBlockContent($id){return parent::table('ay_block')->where(['id'=>$id])->decode()->find(1);}
最后在parseController中parseAfter方法中,添加上我们自定义的方法即可。
注意:在find的时候,加进去1的参数,即可输出php数组,默认是stdObject。