infrajs / catalog
基于docx和xlsx文件构建的目录
Requires
- akiyatkin/form: ~1
- akiyatkin/load: ~1
- akiyatkin/showcase: ~1
- infrajs/doc: ~1
- infrajs/excel: ~1
- infrajs/imager: ~1
- infrajs/layer-config: ~1
- infrajs/layer-seojson: ~1
- infrajs/mark: ~1
- infrajs/path: ~1
- infrajs/rest: ~1
- infrajs/router: ~1
- infrajs/rubrics: ~1
- dev-master
- v1.0.68
- v1.0.67
- v1.0.66
- v1.0.65
- v1.0.64
- v1.0.63
- v1.0.62
- v1.0.61
- v1.0.60
- v1.0.59
- v1.0.58
- v1.0.57
- v1.0.56
- v1.0.55
- v1.0.54
- v1.0.53
- v1.0.52
- v1.0.51
- v1.0.50
- v1.0.49
- v1.0.48
- v1.0.47
- v1.0.46
- v1.0.45
- v1.0.44
- v1.0.43
- v1.0.42
- 1.0.41
- 1.0.40
- 1.0.39
- 1.0.38
- 1.0.37
- 1.0.36
- 1.0.35
- 1.0.34
- 1.0.33
- 1.0.32
- 1.0.31
- 1.0.30
- 1.0.29
- 1.0.28
- 1.0.27
- 1.0.26
- 1.0.25
- 1.0.24
- 1.0.23
- 1.0.22
- 1.0.21
- 1.0.20
- 1.0.19
- 1.0.18
- 1.0.17
- 1.0.16
- 1.0.15
- 1.0.14
- 1.0.13
- 1.0.12
- 1.0.11
- 1.0.10
- 1.0.9
- 1.0.8
- 1.0.7
- 1.0.6
- 1.0.5
- 1.0.4
- 1.0.2
- 1.0.1
This package is auto-updated.
Last update: 2024-09-13 16:31:30 UTC
README
目录不使用数据库。在简单的托管上有限制,约为1000个完整描述。在使用memcache和良好的服务器时,可以调整限制。
通过composer安装
{ "require":{ "infrajs/catalog":"~1" } }
通过地址/catalog连接层
{ "crumb":"catalog", "external":"-catalog/catalog.layer.json" }
在data/catalog/
文件夹中的Excel文件将被解释为目录数据,其中Excel文档的名称是生产厂家的名称。在data/catalog/{producer}/{article}/
文件夹中应放置图片和docx文件,其中包含目录项目的完整描述。
筛选器
对于自动生成的筛选器,需要单独的层
{ "external":"-catalog/filters.layer.json", }
可以通过不同的参数筛选项目列表。筛选通过在地址栏中使用魔法参数实现&m=key:param1=value1:param2=value2
。其中key
是已发送到服务器的参数的哈希,而param1
和param2
是刚刚添加的参数。标记m
应传递到所有处理选择的php文件。在层描述中,这通过在模板中插入...file.php?m={infra.Crumb.get.m}
来完成。服务器响应包含新的哈希mark
,其中包含刚刚传递的参数。
在脚本中,所有参数的新旧组合是通过方法$md=Catalog::initMark($ans);
获得的,其中$md
是包含所有参数的关联数组。在$ans
中会添加一个属性mark
,它将包含用于在后续链接中使用的新参数的哈希。`initMark`配置为处理地址栏中的`&m=`参数。
在config.catalog.filters
中指定了可用的参数列表,除了指定的参数外,还有预定义的参数。
{ "count":10, "reverse":false, "sort":false, "producer":{}, "group":{}, "search":false, "more":{}, "cost":{} }
数据处理
通过$data = Catalog::init();
获取目录数据。后续操作通过扩展infrajs/excel
中的Xlsx::runGroups
和Xlsx::runPoss
进行。
位置值生产厂
和产品编号
有自己的副本,其中删除了一些不能用于地址栏producer
和article
的字符。对于descr.名称
和title
。
位置的唯一性由producer
和article
对确定,这些参数用于链接到位置完整描述页面catalog/producer/article
。
infrajs/config配置
{ "nds":false, "dir":"~catalog/", "cache":["~catalog/"], "title":"Каталог", "md":{ }, "filename":"Производитель", "columns":[], "alwaysshowposs":true, //Показывать позиции, когда есть вложенные группы "filgroupsissort":false, //Сортировка значений фильтров по возрастанию "filgroups":[], //группы из параметров позиций "countonpage":10, //Количество позиций на странице по умолчаню "pageset":false, //Показывать кнопку сортировки "ignorelistname":true,//Имя листа не используется в качестве группы "showmore":true,//Параметры показываются в коротком описании позиции "listreverse":false, //Новые позиции в конце таблицы "searchingroups":true, //При использовании слоя с иерархией групп показывать строку поиска "foldwhen"=>30, //Скрывать значения фильтра если их больше "filteroneitem"=>true, //Показывать ли фильтр в котором только один пункт, который true для всей выборке "filtershowhard" => array(), //Фильтры, которые всегда показываются "filtermemory" => true, //При переходах по хлебным крошкам выбранные фильтры сохраняются "filterslimitpercent" = 10, //Процент позиций у которых должен быть указан параметр, чтобы он показался в фильтрах "filters":{ "producer":{ "posid":"producer", "posname":"Производитель", "title":"Производитель", "separator":false }, "cost":{ "posid":"Цена", "posname":"Цена", "title":"Цена", "separator":false //Символ который разделяет несколько значения в одной ячейки, например "," } } }
特殊列
需要在config.column中指定的Excel列,在模板中单独处理,不应出现在more数组中,也不应自动显示在参数列表中
预定义的特殊列
- 名称
- 文件
- 产品编号
- 生产厂
- 价格
- 描述
- 在完整描述中隐藏筛选器
- 照片(文件夹images中图片的名称)
- prod2(生产厂家的备用文件夹,其中在images中寻找图片)
分组描述
分组描述是位于表格上方的数据。描述只能占用两列。参数名称和参数值。以下参数是可用的。
- 名称 - 分组的完整名称或应显示给访客的名称。
- 图片 - 与值
大
所有组的位置的第一个图片将在描述中展开到整个页面。 - 货号 - 隐藏值 隐藏
在完整描述中隐藏过滤器列
当在Excel中添加“在完整描述中隐藏过滤器列”列并设置值为true(例如“隐藏”)时,页面位置的数据将不会在单独的表格中显示。假设所有参数都手动列在完整描述(Word文档)中。
文件列
指定相对路径。路径指向需要绑定到位置的文件夹或文件。
添加自己的过滤器
添加自己的过滤器时,需要调整配置,例如
{ "columns":["ИД","Наличие","Акция"], "md":{ "action":false }, "filters":{ "producer":{ "posid":"producer", "posname":"Производитель", "title":"Производитель", "separator":false }, "action":{ "posid":"action", "posname":"action", "title":"Товары на акции", "separator":false }, "cost":{ "posid":"Цена", "posname":"Цена", "title":"Цена", "separator":false } } }
支持手动调整SEO
手动调整SEO需要在位置文件夹中添加文件seo.json。seo.json文件示例
{ "title": "Позиция у которой заголовок seo создан вручную", "description": "Описание добавленное вручную" }
如何为过滤器参数自定义格式
- 需要为目录(infrajs/catalog)添加新的依赖项。由于目录本身不知道这一点,因此需要在配置中更改目录的dependencies选项。可以在安装扩展时通过sys-配置或项目根配置进行此操作。在update.php中通过扩展进行示例。在这种情况下,扩展将确保在访问目录时连接。如果没有这个部分,在访问目录的REST处理器时,扩展将不会被初始化,并且带有新设计过滤器的扩展订阅将不会生效。
- 需要订阅事件
Catalog.option
,该事件为所有参数触发,并基于这些参数确定所需的过滤器,然后准备保存到$param['block']
中的模板变量。示例。 - 在订阅中,在变量
$param['block']['layout']
中指定应该显示此过滤器的模板名称。 - 在目录配置中,需要添加到应该连接到过滤器的模板的路径,例如在配置中添加“filtertpl”:“-path/to/layout.tpl”。模板应包含名为layout-{layout}的子模板,其中layout是订阅中在
$param['block']['layout']
中指定的名称。可以通过替换项目根目录或单独的扩展配置来实现这一点,如这里。
如何选择参数值的范围
每个参数的过滤器中都预设了特殊值
- minmax=min/max - 指定值范围
- no=1 - 所有未指定值的项
- yes=1 - 所有指定值的项
伪组filgroups基于参数生成
组描述存储在属性conf.filgroups中,参数名称和基于其的组模板。
gagarin类
点击时显示紧跟其后的HTML元素或指定在data-div属性中的元素。默认显示的元素应隐藏 display:none。用户的操作将被保存在sessionStorage中