Пример #1
0
    def product(self):
        product_id = self.request.matchdict.get("product_id")
        if not util.is_uuid(product_id):
            # it's not really a product ID, but a search string from a bot.
            raise HTTPFound("/ecom/search?search=%s" % product_id)
        prod = Product.load(product_id)
        self.redir_if(not prod or not prod.enabled or not prod.web_visible)

        page = self.request.matchdict.get(
            "page", util.nvl(prod.render_template, "product")
        )  # /product/{product_id}/{page}

        self.session["last_product_id"] = product_id
        self.session["back_link"] = "/product/%s" % product_id
        params = self.params()
        self._add_to_recent_products(prod)

        params["product"] = prod
        params["products_also_liked"] = SmartCatalog.also_liked_product_list(prod, params["campaign"])
        params["products_related"] = SmartCatalog.related_product_list(prod, params["campaign"])
        params["product_attributes"] = self._prep_product_attributes(prod.get_product_attributes())
        params["attrs"] = prod.get_attrs()
        params["price"] = SmartPricing.product_price(prod, params["campaign"])
        (params["seo_title"], params["seo_keywords"], params["seo_description"]) = SmartSeo.product_seo(
            prod, self.request.ctx.site
        )
        return self.render(page, params)
Пример #2
0
 def category(self):
     # /category/{category_id}/{page}
     page = self.request.matchdict.get("page", "category")
     category_id = util.to_uuid(self.request.matchdict.get("category_id"))
     category = ProductCategory.load(category_id)
     self.redir_if(not category)
     self.session["back_link"] = "/category/%s" % category_id
     params = self.params()
     params["products"] = util.page_list(
         SmartCatalog.category_product_list(self.request.ctx.campaign, category_id),
         self.request.GET.get("offset"),
         self.request.GET.get("limit"),
     )
     params["category"] = category
     (params["seo_title"], params["seo_keywords"], params["seo_description"]) = SmartSeo.category_seo(
         category, self.request.ctx.site
     )
     return self.render(page, params)
Пример #3
0
 def content(self):
     page = self.request.matchdict.get("page", "content")
     params = self.params()
     params["content_name"] = content_name = self.request.matchdict.get("content_name")
     content = Content.find_by_name(self.request.ctx.site, content_name)
     if content:
         (params["seo_title"], params["seo_keywords"], params["seo_description"]) = SmartSeo.obj_seo(
             content, self.request.ctx.site
         )
     return self.render(page, params)