织梦地区筛选栏目制作教程

地区筛选是本地化站点的常见需求,如分类信息、同城服务都需要按城市过滤内容。本教程讲解在织梦中制作带地区筛选的栏目的完整流程。

一、整体方案选择

1. 单栏目+地区参数筛选

所有内容放在一个栏目,通过URL参数?city=筛选。优点是结构简单,缺点是地区URL需伪静态处理。

2. 多栏目按地区分目录

每个地区建一个子栏目,内容分别归入。优点是URL清晰、权重独立,缺点是数据分散、维护成本高。

本教程采用方案一,更通用且易扩展。

二、地区数据准备

1. 使用联动字段

在自定义模型中添加"地区"字段,类型选联动,绑定织梦内置地区数据dede_stepselect。后台录入时选择对应地区,数据写入附加表。

2. 自定义地区表

也可自建一张地区表,字段:id、名称、父级。灵活度更高,适合自定义城市分级。

三、栏目与模板设置

新建一个栏目绑定自定义模型,列表模板使用list_area.htm。在栏目内容中正常录入带地区字段的信息。

四、筛选交互实现

1. 地区导航渲染

<div class="area-filter">
  <a href="/list-5-0.html" class="on">全部</a>
  <a href="/list-5-1.html">北京</a>
  <a href="/list-5-2.html">上海</a>
  <a href="/list-5-3.html">广州</a>
</div>

2. URL规则

伪静态将/list-5-1.html重写为list.php?tid=5&city=15是栏目ID,1是地区ID。

五、SQL条件拼接

在列表处理逻辑中读取city参数,联合附加表查询:

$tid=intval($_GET['tid']);
$city=intval($_GET['city']);
$where="a.typeid=$tid AND a.arcrank>-2";
if($city) $where .=" AND b.city=$city";
$sql="SELECT a.* FROM dede_archives a LEFT JOIN dede_addoninfo b ON a.id=b.aid WHERE $where ORDER BY a.pubdate DESC";

六、多条件组合

地区常与类型、价格组合筛选。每个条件一个URL段,如/list-5-city1-type2.html。PHP解析各段参数拼接WHERE。条件过多时注意去重与canonical处理。

七、伪静态规则示例

RewriteRule ^list-([0-9]+)-([0-9]+)\.html$ /list.php?tid=$1&city=$2 [L]

Nginx写法对应rewrite ^/list-([0-9]+)-([0-9]+)\.html$ /list.php?tid=$1&city=$2 last;

八、注意事项

九、制作落地建议

建议先完成"全地区列表+单地区筛选"这条主线,跑通伪静态与SQL后,再叠加类型、价格等组合条件。地区数据尽量复用织梦联动数据,减少维护成本。上线后关注各城市URL的收录情况,逐步补充热门城市的内容,提升地区筛选栏目的流量覆盖。