My favourite function! :-)

On Sat, May 23, 2015 at 1:33 PM, Mathias Ettinger <
[email protected]> wrote:

> Mmmh… random.choice ? It's a function that is so underrated.
>
> Anyway, I understand your statement as to why we might not be able to
> implement a one size fits most approach.
>
>
> Le samedi 23 mai 2015 21:33:26 UTC+2, Stephen McDonald a écrit :
>>
>> Sure, but what if a product belongs to multiple categories?
>>
>>
>>
>> On Sat, May 23, 2015 at 12:21 PM, Mathias Ettinger <[email protected]
>> > wrote:
>>
>>> I meant a shop_menu tag, the page_menu already exists.
>>>
>>>
>>>
>>> Le samedi 23 mai 2015 21:20:35 UTC+2, Mathias Ettinger a écrit :
>>>>
>>>> What about implementing a page_menu tag in
>>>> cartridge.shop.templatetags.shop_tags? And changing the shop/product.html
>>>> template to use
>>>>
>>>> {% block breadcrumb_menu %}{% shop_menu "pages/menu/breadcrumb.html"
>>>> %}{% endblock %}
>>>>
>>>> Is it worth taking some time to provide it in cartridge?
>>>>
>>>>
>>>> Le samedi 23 mai 2015 18:57:35 UTC+2, Stephen McDonald a écrit :
>>>>>
>>>>> BTW you should be able to implement your own breadcrumb logic by
>>>>> overriding "{% block breadcrumb_menu %}" in your product.html template - 
>>>>> at
>>>>> that point you have your product variable, and access to its
>>>>> category/categories.
>>>>>
>>>>> That wouldn't be a "one size fits all" solution, but will absolutely
>>>>> work for your own project.
>>>>>
>>>>> On Sat, May 23, 2015 at 8:15 AM, Mathias Ettinger <
>>>>> [email protected]> wrote:
>>>>>
>>>>>> So, as I understand, you’re talking about:
>>>>>> https://github.com/stephenmcd/cartridge/blob/master/cartridge/shop/templates/shop/product.html#L45-L48
>>>>>> <https://www.google.com/url?q=https%3A%2F%2Fgithub.com%2Fstephenmcd%2Fcartridge%2Fblob%2Fmaster%2Fcartridge%2Fshop%2Ftemplates%2Fshop%2Fproduct.html%23L45-L48&sa=D&sntz=1&usg=AFQjCNGaRwDqDpf3rqW61_9I-dIh7EfvpA>
>>>>>> not displaying Shop > Category > Subcategory > Product.title but only 
>>>>>> Shop
>>>>>> > Product.title
>>>>>>
>>>>>> The block uses the page_menu template tag. But also uses the
>>>>>> PageMiddleware mechanisms because the page_menu function uses the page
>>>>>> object populated in the context by the PageMiddleware:
>>>>>> https://github.com/stephenmcd/mezzanine/blob/master/mezzanine/pages/templatetags/pages_tags.py#L57-L64
>>>>>>
>>>>>> PageMiddleware rely on the PageManager to query the pages in the
>>>>>> hierarchy of the page we are curently on:
>>>>>> https://github.com/stephenmcd/mezzanine/blob/master/mezzanine/pages/middleware.py#L76-L80
>>>>>>
>>>>>> You can see in PageMiddleware that the hierarchy is queryed by
>>>>>> searching for pages with their slug being a subset of the slug we are
>>>>>> currently on:
>>>>>> https://github.com/stephenmcd/mezzanine/blob/master/mezzanine/pages/managers.py#L68-L69
>>>>>>
>>>>>> And here is the problem you are facing. Since the url of your product
>>>>>> is SHOP_SLUG/product/PRODUCT_SLUG, only SHOP_SLUG is being matched as a
>>>>>> valid page, hence the short breadcrumb.
>>>>>>
>>>>>> I haven't thought of a way to solve it efficiently, but suggestions
>>>>>> are welcome.
>>>>>>
>>>>>>
>>>>>>
>>>>>> Le samedi 23 mai 2015 11:51:42 UTC+2, David Unric a écrit :
>>>>>>>
>>>>>>> Yes, you've nailed it. Thanks for rephrasing the question.
>>>>>>>
>>>>>>> It seems Product model derives only from Displayable, unlike
>>>>>>> Category which derives from Page, so it won't be  handled with
>>>>>>> PageMiddleware.
>>>>>>> I'd guess for Product it would be prefixed directly by its app_label.
>>>>>>>
>>>>>>> After inserting tracing output in mentioned pages_tags.py,
>>>>>>> shop_product view receives in context both Shop and Category instances, 
>>>>>>> but
>>>>>>> the former is used.
>>>>>>>
>>>>>>>
>>>>>>> On Saturday, May 23, 2015 at 3:53:13 AM UTC+2, Chris Trengove wrote:
>>>>>>>>
>>>>>>>> As I understand it, this happens in PageMiddleware
>>>>>>>> (pages/middleware.py) which is responsible for coming up with a "page" 
>>>>>>>> to
>>>>>>>> add to the template context. This happens as well for non-page views, 
>>>>>>>> like
>>>>>>>> blog pages and shop products, in which case the "page" that gets added 
>>>>>>>> to
>>>>>>>> the context is the root "blog" or "shop" page.
>>>>>>>>
>>>>>>>> For shop products, I think a useful feature would be to have the
>>>>>>>> context page be the category with the deepest (most specific) "path". 
>>>>>>>> So if
>>>>>>>> a product was in "Shop > Mens Wear > Shirts" and "Shop > Mens Wear" 
>>>>>>>> (as a
>>>>>>>> featured product), then when viewing the product, the "page" set in the
>>>>>>>> context would be "Shirts", so that the breadcrumbs then showed "Shop > 
>>>>>>>> Mens
>>>>>>>> Wear > Shirts" and not (as happens at present) "Shop".
>>>>>>>>
>>>>>>>> So, the question is how best to achieve this, presumably by
>>>>>>>> modifying PageMiddleware in some way.
>>>>>>>>
>>>>>>>> On Friday, May 22, 2015 at 11:11:51 PM UTC+10, David Unric wrote:
>>>>>>>>>
>>>>>>>>> Hello,
>>>>>>>>>
>>>>>>>>> how can I configure/tweak Mezzanine
>>>>>>>>> *cartridge.shop.models.Product* won't be prefixes with *Shop* in
>>>>>>>>> menus and breadcrumbs ?
>>>>>>>>>
>>>>>>>>> For example I've created product category Pages named "Cars" and
>>>>>>>>> "Acessories" and each product belongs only to one of them.
>>>>>>>>> Both categories are rendered as root in page_menu
>>>>>>>>> "pages/menus/tree.html" (bellow Shop), links in category view 
>>>>>>>>> (including
>>>>>>>>> nested ones) correspond to current category in a categories tree.  So 
>>>>>>>>> far
>>>>>>>>> so good.
>>>>>>>>> However when navigate to a specific product, instead of real
>>>>>>>>> parent categories path, page_menu places product directly as a 
>>>>>>>>> descendant
>>>>>>>>> of *Shop*, which is not correct.
>>>>>>>>>
>>>>>>>>> It seems the logic is in Mezzanine's pages_tags.py in
>>>>>>>>> pages/templatetags, but having a harder time to completely understand 
>>>>>>>>> it,
>>>>>>>>> incl. where *menu_pages* in context comes from etc.
>>>>>>>>>
>>>>>>>>> I do not know if I'am on the right track and would welcome if
>>>>>>>>> anybody can give me an advice how Cartridge products to be linked as
>>>>>>>>> descendants of their primary category instead of a generic Shop ?
>>>>>>>>>
>>>>>>>>> Thanks.
>>>>>>>>>
>>>>>>>>  --
>>>>>> You received this message because you are subscribed to the Google
>>>>>> Groups "Mezzanine Users" group.
>>>>>> To unsubscribe from this group and stop receiving emails from it,
>>>>>> send an email to [email protected].
>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Stephen McDonald
>>>>> http://jupo.org
>>>>>
>>>>  --
>>> You received this message because you are subscribed to the Google
>>> Groups "Mezzanine Users" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to [email protected].
>>>
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>>
>>
>> --
>> Stephen McDonald
>> http://jupo.org
>>
>  --
> You received this message because you are subscribed to the Google Groups
> "Mezzanine Users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/d/optout.
>



-- 
Stephen McDonald
http://jupo.org

-- 
You received this message because you are subscribed to the Google Groups 
"Mezzanine Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to