我们知道,PHPCMS V9默认模板都是用
{$SEO['keyword']}、
{$SEO['description']}这2个标签调用关键词和描述的,但是我在使用中发现一个问题很不爽,那就是当我们在创建栏目没有填写相应的关键词和描述时,那它就会调用站点管理中SEO配置里面的关键词和描述,这样的后果是每个栏目的关键词和描述都一样,根据大师的观点是不利于SEO的。
最终演示:
http://www.gongzhengwang.org/
那么,我们能不能改造一下,改造成当栏目填写了关键词和描述就显示对应的,没有填写的话就为空呢?答案是可以的!Follow me!
分析了V9的数据库结构,我们知道栏目的信息是存在v9_category这个表的,如下:
array (
'workflowid' => '',
'ishtml' => '1',
'content_ishtml' => '1',
'create_to_html_root' => '1',
'template_list' => 'www.gongzhengwang.org',
'category_template' => 'category',
'list_template' => 'list',
'show_template' => 'show',
'meta_title' => '',
'meta_keywords' => '律师公证资讯,律师公证新闻',
'meta_description' => '',
'presentpoint' => '1',
'defaultchargepoint' => '0',
'paytype' => '0',
'repeatchargedays' => '1',
'category_ruleid' => '31',
'show_ruleid' => '33',
)
我们只需要用正则提取一下就OK了!
代码如下:
关键词
{pc:get sql="select `setting` FROM `v9_category` WHERE `catid`=$catid" num="1" siteid="$siteid"}
{loop $data $v}
{php preg_match("/meta_keywords' => '(.+)'/", $v[setting], $rs);}
{$rs[1]}
{/loop}
{/pc}
描述
{pc:get sql="select `setting` FROM `v9_category` WHERE `catid`=$catid" num="1" siteid="$siteid"}
{loop $data $v}
{php preg_match("/meta_description' => '(.+)'/", $v[setting], $rs);}
{$rs[1]}
{/loop}
{/pc}