【常用】phpcms利用联动菜单和分类信息函数库实现利于SEO的分类筛选功能

分类筛选功能在网站中是一种常见的应用,比如房地产里根据区域、价格、户型等条件实现的多条件筛选,网站案例里根据行业类型、端口类型等条件实现的多条件筛选,或者类似58赶集网那样的本地生活信息服务类网站,都用到了分类筛选的功能。

用好分类筛选,不仅可以提升网站的用户体验,在SEO方面,更是可以起到很大的帮助。举个例子,假如一个网站的分类筛选里分类1有5项、分类2有10项、分类3有10项,那么网站一共会生成500( 5 X 10 X 10 )条的组合,实际的网站应用中往往会比这个更多,这样的话,你如果原来发布了1条数据信息,在搜索引擎里面就只会有1条搜录,如果加了分类筛选的话,就至少是500+的搜录了,如果能利用好分类筛选,在做SEO网站优化的时候往往能做到事半功倍的效果。

这听起来确实是一件很酷的事情,但是如果要从0开发这个功能,工作量和技术难度还是比较大的。好在PHPCMS官方在2011年就实现了这个功能,做一些适当的改造,就能实现上面期望的效果,下面作者总结下具体的实现方法。

1、将官方的分类信息函数库info.func.php放到\phpcms\libs\functions\autoload里面,增加了https支持、英文格式伪静态的支持

2、在网站后台扩展”“联动菜单” “ 添加联动菜单

phpcms利用联动菜单和分类信息函数库实现利于SEO的分类筛选功能
phpcms利用联动菜单和分类信息函数库实现利于SEO的分类筛选功能

3、在 “模型管理” “字段管理” 添加“联动菜单” 字段,然后添加栏目,选择添加了联动菜单字段的那个模型,然后添加几条测试数据

注意:添加 “联动菜单” 的时候, “是否作为筛选字段” 请一定要选中,筛选才会生效

phpcms利用联动菜单和分类信息函数库实现利于SEO的分类筛选功能

注意:添加完 “联动菜单” 后,如果在后台添加数据时,下拉菜单没有显示内容,记得更新下缓存就可以了

phpcms利用联动菜单和分类信息函数库实现利于SEO的分类筛选功能

4、前台使用之生成利于SEO的标题, 以所属行业分类webhy为例说明

<?php 
$webhy =""; //定义当前正在访问的分类名
$linkage_webhy = isset($_GET['webhy'])?intval($_GET['webhy']):'0';
$info_linkageid_webhy = 3360;//一级分类ID
$linkages_webhy = show_linkage($info_linkageid_webhy,3361,3361,$modelid,"webhy");//3361为对应子菜单第一个分类ID
?>
{loop $linkages_webhy  $r}
 {if $linkage_webhy == $r['linkageid'] || get_linkage_level($info_linkageid_webhy,
$linkage_webhy)== $r['linkageid']}
    {php $webhy = $r['name']}
    {php break;}
 {/if}
{/loop}

<?php 
$webtype ="" ;
$linkage_webtype = isset($_GET['webtype'])?intval($_GET['webtype']):'0';
$info_linkageid_webtype = 3372;
$linkages_webtype = show_linkage($info_linkageid_webtype,3373,3373,$modelid,"webtype");
?>
{loop $linkages_webtype  $r}
 {if $linkage_webtype == $r['linkageid'] || get_linkage_level($info_linkageid_webtype,
$linkage_webtype)== $r['linkageid']}
    {php $webtype = $r['name']}
    {php break;}
 {/if}
{/loop}
{if $webhy == "全部"}
  {php $webhy = "所属行业"}
{/if}
{if $webtype == "全部"}
  {php $webtype = "全部网站类型"}
{/if}

TDK这样写即可

<title>{if $page != 1}第{$page}页_{/if}{if $webhy != ""}{$webhy}_{/if}{if $catid == 18}{$webtype}_{/if}
{$catname}_太友帮</title>
<meta name="keywords" content="{$SEO['keyword']}" />
<meta name="description" content="关于成都网站建设和成都网站制作的{$catname}:{$webhy}{if $catid == 18}_{$webtype}
{/if};太友帮成立于2015年,专业从事网站建设、小程序开发、微信公众号开发等服务。" />

5、联动菜单的数据调用

{loop $linkages_webhy  $r}
 {if $linkage_webhy == $r['linkageid'] || get_linkage_level($info_linkageid_webhy,$linkage_webhy)== 
$r['linkageid']}
    <li class="active">
       <a  href="{$r['url']}">{$r['name']}</a>
    </li>
 {else}
    <li>
       <a href="{$r['url']}">{$r['name']}</a>
    </li>
 {/if}
{/loop}
{loop $linkages_webtype  $r}
 {if $linkage_webtype == $r['linkageid'] || get_linkage_level($info_linkageid_webtype,$linkage_webtype)==
 $r['linkageid']}
    <li class="active">
       <a  href="{$r['url']}">{$r['name']}</a>
    </li>
 {else}
    <li>
       <a href="{$r['url']}">{$r['name']}</a>
    </li>
 {/if}
{/loop}

6、lists标签的数据调用要这样写了

<?php
// PHPCMS在{pc:content action="lists"}里加入查询条件where="$sql"后,查询语句条件部分没有and部分,需手动加上
?>
{php $sql = structure_filters_sql($modelid); }
{php  $sql = " and " . $sql;}
{php $urlrule = makeurlrule();//这句用来生产自定义的urlrule,不能去掉 }
{pc:content  action="lists" catid="$catid" where="$sql" num="12"  order="listorder desc,inputtime desc" 
page="$page"}
{loop $data $r}
<div class="item"><a href="{$r[url]}" target="_blank" style="background-image:url({$r[thumb]});"></a></div>
{/loop}
{/pc} 

7、添加伪静态支持

RewriteRule ^list-([0-9]+)-([0-9]*)-([0-9]*)-([0-9]+).html 
index.php?m=content&c=index&a=lists&catid=$1&webhy=$2&webtype=$3&page=$4

至此,利于SEO的分类筛选功能就全部实现了,如图:

phpcms利用联动菜单和分类信息函数库实现利于SEO的分类筛选功能

相关推荐