infrajs/catalog

此包的最新版本(v1.0.68)没有可用的许可证信息。

基于docx和xlsx文件构建的目录

安装数: 1,855

依赖: 10

建议者: 0

安全性: 0

星标: 0

关注者: 6

分支: 2

开放问题: 0

语言:Smarty


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是已发送到服务器的参数的哈希,而param1param2是刚刚添加的参数。标记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::runGroupsXlsx::runPoss进行。

位置值生产厂产品编号有自己的副本,其中删除了一些不能用于地址栏producerarticle的字符。对于descr.名称title

位置的唯一性由producerarticle对确定,这些参数用于链接到位置完整描述页面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": "Описание добавленное вручную"
}

如何为过滤器参数自定义格式

  1. 需要为目录(infrajs/catalog)添加新的依赖项。由于目录本身不知道这一点,因此需要在配置中更改目录的dependencies选项。可以在安装扩展时通过sys-配置或项目根配置进行此操作。在update.php中通过扩展进行示例。在这种情况下,扩展将确保在访问目录时连接。如果没有这个部分,在访问目录的REST处理器时,扩展将不会被初始化,并且带有新设计过滤器的扩展订阅将不会生效。
  2. 需要订阅事件Catalog.option,该事件为所有参数触发,并基于这些参数确定所需的过滤器,然后准备保存到$param['block']中的模板变量。示例
  3. 在订阅中,在变量$param['block']['layout']中指定应该显示此过滤器的模板名称。
  4. 在目录配置中,需要添加到应该连接到过滤器的模板的路径,例如在配置中添加“filtertpl”:“-path/to/layout.tpl”。模板应包含名为layout-{layout}的子模板,其中layout是订阅中在$param['block']['layout']中指定的名称。可以通过替换项目根目录或单独的扩展配置来实现这一点,如这里

如何选择参数值的范围

每个参数的过滤器中都预设了特殊值

  1. minmax=min/max - 指定值范围
  2. no=1 - 所有未指定值的项
  3. yes=1 - 所有指定值的项

伪组filgroups基于参数生成

组描述存储在属性conf.filgroups中,参数名称和基于其的组模板。

gagarin类

点击时显示紧跟其后的HTML元素或指定在data-div属性中的元素。默认显示的元素应隐藏 display:none。用户的操作将被保存在sessionStorage中