具有父子依赖性和固定URL位置的筛选器链接的最佳技术

时间:2018-10-22 18:46:39

标签: php codeigniter optimization filter codeigniter-3

我目前正在使用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路线的方式,并且有效。

规则如下:

  • RegionCity的父级,而CityNeighborhood的父级,其思想是如果未选择Region,则City是不显示,并且如果未选择City,则不显示Neighborhood
  • 其层次结构类似于Region -> City -> Neighborhood,因此,如果假设选择了Neighborhood,则一旦删除City,邻居也会被删除,如果删除Region CityNeighborhood均被删除。
  • OperationPrice 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数据库表,其中包含以下字段:

  • 过滤器ID
  • 过滤器名称
  • 过滤弹头
  • Id父过滤器(主过滤器为0,子过滤器为父过滤器ID)
  • 过程名称(目前在CodeIgniter中我的Filters模型的功能
  • 外观顺序(只是为了可视地对过滤器进行排序)

我目前有一个函数,可以接收该函数的过滤器参数并对其进行分类,如下所示:

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扫描该数组,并将它们分离为一个具有两个主要索引的数组,这些索引基于{的值{过滤器。

我创建了一个函数,该函数根据到达参数接收要从活动过滤器中删除的参数,然后将索引移至非活动过滤器并取消设置活动索引。

是否有任何改进或改进其动态性的建议?我当时正在考虑为此准备一个特殊的数据结构,但是我不确定这是否可以解决我的问题。

0 个答案:

没有答案