我使用的是Kentico 7.0,电子商务版。
我想创建一个侧边栏菜单,显示eshop的畅销产品类别。我是一个kentico新手所以我正在寻找正确的术语/指导,以便我可以深入挖掘。
我认为理想的方法是能够在类别上添加字段,用于过滤菜单的类别。这样,我可以根据销售情况自动更新字段,或者为管理员提供手动覆盖,以指定类别是否会显示在菜单上。当然,还需要某种重量来指定菜单项的排序。
我应该看哪种方式?
答案 0 :(得分:1)
您是否尝试过使用“销售前N名产品”网络部分?您可以配置它应该从哪个内容树(产品)中提取数据 - 在Path属性中,您还可以使用动态解析的路径表达式或宏,以便Web部件可以在不同的部分显示不同的产品。
答案 1 :(得分:1)
Kentico的编码方式有很多种。我个人觉得API有点笨拙,很多时候我很惊讶一个方法并不存在,需要额外的调用来获得所需的结果。在将数据放入Kentico时,我确实使用了Kentico API。拉出来我使用以下内容。
STORED PROC
编写SQL存储过程以获取前X个类别 - GetTop5Categories。
查看COM_ *表,特别是COM_OrderItem,将OrderItemSKUID链接回COM_SKU(如果需要访问IA,则查看View_COM_SKU_Joined)。
这将为您带来最畅销的产品,包括分组,计数,前X和订单。
然后,您可以链接到其他表,例如CMS_Category或CMS_Document(取决于您设置类别的方式)。这样做的好处就是编译了procs,你在那里进行所有的数据操作(它是MSSQL专门研究的!),你只需要在结果集中发回你需要的东西。
DOMAIN(利用EF)
我通常创建一个单独的类库项目myproject.domain,并在其中放置一个Entity Framework edmx映射回Kentico DB。将proc添加到EDMX,然后从新导入的proc中创建一个Function Import MyProject_GetTop5Categories。
WEB
从您的网络项目添加对域项目的引用,并在控件的代码隐藏顶部使用。
使用myproject.domain;
然后在Page_Load中作为控件:
...
if(!IsPostBack)
{
var entities = new MyProjectModelContainer();
var list = entities.MyProject_GetTop5Categories().ToList();
StringBuilder sb = new StringBuilder("<ul>");
foreach(var category in list)
{
sb.Append("<li><a href='"+category.Link+"'>" + category.Name + "</a></li>");
}
sb.Append("<ul>");
listPlaceHolder = sb.ToString();
}
手写,所以可能是一两个错字:)
HTH