我目前正在使用CodeIgniter建立房地产网站。由于进行了数字营销计划,因此我有一个固定的URL结构,该结构遵循以下规则:
root /properties/
region name (all-regions|region-1|...|region-n)/
operation (all-operations|sale|rent|transfer|vacational-rent)/
property type (all-property-types|house|apartment|...)/
price range from-(:num)-to-(:num)/
city (:any)/
neighborhood (:any)
所以,这就是我处理CodeIgniter路线的方式,并且有效。
规则如下:
Region
是City
的父级,而City
是Neighborhood
的父级,其思想是如果未选择Region
,则City
是不显示,并且如果未选择City
,则不显示Neighborhood
。Region -> City -> Neighborhood
,因此,如果假设选择了Neighborhood
,则一旦删除City
,邻居也会被删除,如果删除Region
City
和Neighborhood
均被删除。Operation
是Price range
的父项,因此它的工作方式与上述相同,如果未选择Operation
,则不会出现Price range
,并且如果我删除{{1 }}作为过滤器,如果有Operation
处于活动状态,它也会被删除。我的初始过滤器选项是
属性类型还有其他内容,但是由于每个属性类型的不同,我将通过GET或其他一些复杂的参数将其传递。
有关链接形成方式的其他数据:
Price range
/properties
/properties/region-1
但是也有可能用户直接进入操作或属性类型,然后我遇到了这样的情况:
/properties/region-1/sale
/properties/all-regions/sale
IT也可能会这样发生:
/properties/all-regions/all-operations/house
我遇到的困难是使链接生成和参数删除链接生成的过程足够动态,而又不会在基于活动和不活动过滤器的很多情况下重复出现。我也在寻找一种最佳的方式来加载过滤器内容,并有条件正确显示它并使用格式正确的链接。
我目前有一个/properties/region-1/all-operations/from-0-to-1000000000/all-property-types/city-1
数据库表,其中包含以下字段:
我目前有一个函数,可以接收该函数的过滤器参数并对其进行分类,如下所示:
Filters
在Filters_m.php中:
public function index($region_slug = null, $operation_slug = null, $property_type_slug = null, $price_range_min = null, $price_range_max = null, $city_slug = null, $neighborhood_slug = null) {
$this->data->filters = $this->filters_m->get_filter_data($region_slug, $operation_slug, $property_type_slug, $price_range_min, $price_range_max, $city_slug, $neighborhood_slug);
........
}
之后(...),我用foreach扫描该数组,并将它们分离为一个具有两个主要索引的数组,这些索引基于{的值{过滤器。
我创建了一个函数,该函数根据到达参数接收要从活动过滤器中删除的参数,然后将索引移至非活动过滤器并取消设置活动索引。
是否有任何改进或改进其动态性的建议?我当时正在考虑为此准备一个特殊的数据结构,但是我不确定这是否可以解决我的问题。