Go to main content

Textpattern CMS support forum

You are not logged in. Register | Login | Help

#1 2013-01-24 05:03:06

whaleen
Member
From: Portland
Registered: 2006-05-11
Posts: 373
Website

Deeply Nested Categories

I’ve found this approach helpful for auto-generating nav based off of categories defined.

My question is: Does anyone use a way to auto-generate nav from deeper nesting? Nesting that goes further than one ‘level’ down?

My purpose: I’ll have users building categories willy-nilly and the nesting that occurs should be reflected in the navigation auto-generated in their public facing pages. In theory it should support infinite levels but I’ve suggested three levels max and this makes sense so if it is not possible to write for infinite support, a third level would suffice.


txtstrap (Textpattern + Twitter Bootstrap + etc…)

Offline

#2 2013-01-24 05:10:40

whaleen
Member
From: Portland
Registered: 2006-05-11
Posts: 373
Website

Re: Deeply Nested Categories

I believe I have figured it out sooner than I thought i would. This is an addition to the approach mention above in my initial post.

<ul id="menu">
<txp:category_list children="0" break="li">
<txp:category title="1" link="1" section="default" />
<txp:article_custom category='<txp:category />' break="li" wraptag="ul" limit="999">
<txp:permlink><txp:title /></txp:permlink>
</txp:article_custom>

<txp:category_list parent='<txp:category />' exclude='<txp:category />' break="" wraptag="ul">
<li><txp:category title="1" link="1" section="default" />
<txp:article_custom category='<txp:category />' wraptag="ul" limit="999">
<li><txp:permlink><txp:title /></txp:permlink></li>
</txp:article_custom></li>

<txp:category_list children="0" parent='<txp:category />' exclude='<txp:category />' break="" wraptag="ul">
<li><txp:category title="1" link="1" section="default" />
<txp:article_custom category='<txp:category />' wraptag="ul" limit="999">
<li><txp:permlink><txp:title /></txp:permlink></li>
</txp:article_custom></li>

</txp:category_list>
</txp:category_list>
</txp:category_list>
</ul>

txtstrap (Textpattern + Twitter Bootstrap + etc…)

Offline

#3 2013-01-24 09:15:20

etc
Developer
Registered: 2010-11-11
Posts: 5,471
Website GitHub

Re: Deeply Nested Categories

I think you have to choose some plugin for deeper nesting.

Offline

#4 2013-01-25 01:23:32

whaleen
Member
From: Portland
Registered: 2006-05-11
Posts: 373
Website

Re: Deeply Nested Categories

etc wrote:

I think you have to choose some plugin for deeper nesting.

Is there one that you have used for this? I’m having trouble finding a plugin.


txtstrap (Textpattern + Twitter Bootstrap + etc…)

Offline

#5 2013-01-25 08:55:50

etc
Developer
Registered: 2010-11-11
Posts: 5,471
Website GitHub

Re: Deeply Nested Categories

You could try adi_cat_menu or stw_category_tree or azp_menugen. I have a modified version of azp_menugen that works well (for me). If you have no luck with others, I can post it here, but have to update the help first.

Offline

#6 2013-01-25 11:14:02

jpdupont
Member
Registered: 2004-10-01
Posts: 752

Re: Deeply Nested Categories

@Oleg,

could you share your azp_menugen version ? (The original download link don’t work …)

@Josh : I use adi_cat_menu on many sites, with rss_unlimited_categories or not and it works fine.

Offline

#7 2013-01-25 11:35:17

etc
Developer
Registered: 2010-11-11
Posts: 5,471
Website GitHub

Re: Deeply Nested Categories

Here it is:

YToxMTp7czo0OiJuYW1lIjtzOjExOiJhenBfbWVudWdlbiI7czo2OiJhdXRob3IiO3M6MTI6IkFuZHJlaSBaaW5jYSI7czoxMDoiYXV0aG9yX3VyaSI7czowOiIiO3M6NzoidmVyc2lvbiI7czo1OiIxLjByYyI7czoxMToiZGVzY3JpcHRpb24iO3M6NDI6IkdlbmVyYXRlcyBtZW51IGJhc2VkIG9uIGNhdGVnb3J5IHN0cnVjdHVyZSI7czo0OiJoZWxwIjtzOjEzODI6IjxoMj5DYXRlZ29yeSBNZW51IGdlbmVyYXRvcjwvaDI+Cgo8cD5UaGlzIHBsdWdpbiBnZW5lcmF0ZXMgYSBodG1sIGxpc3QgYmFzZWQgb24geW91ciBzaXRlIGNhdGVnb3J5IHN0cnVjdHVyZS48L3A+Cgo8aDI+TGVhcm4gYnkgZXhhbXBsZTwvaDI+Cgo8cD48Y29kZT4mbHQ7dHhwOmF6cF9tZW51Z2VuIHN0YXJ0PSJmcnVpdHMiIHNob3djb3VudD0ieWVzIiBleGNsdWRlPSJhcHBsZSIgLyZndDs8L2NvZGU+PC9wPgoKPHA+d2lsbCBnZW5lcmF0ZSBhIG1lbnUgb2YgY2F0ZWdvcnkgZnJ1aXRzIGFuZCBhbGwgaXRzIHN1YmNhdGVnb3JpZXMgZXhjZXB0IGFwcGxlIGlmIGF2YWlsYWJsZSBhbmQgc2hvdyB0aGUgYXJ0aWNsZSBjb3VudC48L3A+Cgo8cD48Y29kZT4mbHQ7dHhwOmF6cF9tZW51Z2VuIHN0YXJ0PSI/IiByb290PSJmcnVpdHMiIGRlcHRoPSIzIiBtb3JlPSIsJnJhcXVvOyIgLyZndDs8L2NvZGU+PC9wPgoKPHA+d2lsbCBnZW5lcmF0ZSBhIG1lbnUgb2YgdGhlIGN1cnJlbnQgc2VsZWN0ZWQgY2F0ZWdvcnkgd2l0aGluIGZydWl0cyBhbmQgc2hvdyBtYXhpbXVtIHRocmVlIGxldmVscyBvZiBzdWJjYXRlZ29yaWVzLiBJdCB3aWxsIGFsc28gcHJpbnQgYXMgdGl0bGUmcmFxdW87IHRoZSBjYXRlZ29yaWVzIGhhdmluZyBjaGlsZHJlbi4gc3RhcnQgcHJvcGVydHkgaXMgYnkgZGVmYXVsdCAiPyI8L3A+Cgo8cD5BbHNvLCBhenBfbWVudWdlbiBnZW5lcmF0ZXMgWEhUTUwgY29tcGxpYW50IGxpc3QgbWVudSwgdGFncyB0aGUgYWN0aXZlIGl0ZW1zIHdpdGggdGhlIGNzcyBjbGFzcyAiYWN0aXZlIiBhbmQgdGhlIGFjdGl2ZSBwYXRoIHdpdGggImFjdGl2ZXBhdGgiLjwvcD4KCjxoMj5BdHRyaWJ1dGVzPC9oMj4KCjx1bD4KPGxpPjxiPnJvb3Q8L2I+OiAncm9vdCcuIExpbWl0IHRoZSBtZW51IHRvIHRoZSBjaGlsZHJlbiBvZiAncm9vdCcgY2F0ZWdvcnkuPC9saT4KPGxpPjxiPnN0YXJ0PC9iPjogJz8nLiBJZiBzdGFydD0nPycsIHdpbGwgc3RhcnQgd2l0aCB0aGUgY3VycmVudCBjYXRlZ29yeSwgb3Igcm9vdCBpZiBub25lLjwvbGk+CjxsaT48Yj5kZXB0aDwvYj46ICc/JzwvbGk+CjxsaT48Yj5jYXRlZ29yeTwvYj46ICcnPC9saT4KPGxpPjxiPmV4Y2x1ZGU8L2I+OiAnJzwvbGk+CjxsaT48Yj50eXBlPC9iPjogJ2FydGljbGUnPC9saT4KPGxpPjxiPm1vcmU8L2I+OiAnJy4gQ29tbWEgc2VwYXJhdGVkIGNvdXBsZSBvZiBzeW1ib2xzIHRvIGFwcGVuZCBvbiB0aGUgbGVmdCBhbmQgb24gdGhlIHJpZ2h0IG9mIGNhdGVnb3JpZXMgaGF2aW5nIGNoaWxkcmVuLjwvbGk+CjxsaT48Yj5zaG93Y291bnQ8L2I+OiAwPC9saT4KPGxpPjxiPmluY2x1ZGVhcnRpY2xlczwvYj46IDA8L2xpPgo8bGk+PGI+bGFiZWw8L2I+OiAnJzwvbGk+CjwvdWw+IjtzOjQ6ImNvZGUiO3M6MzUzMToiZnVuY3Rpb24gYXpwX2dldHRyZWUoJiR0cmVlLCAkc3RhcnQsICRkZXB0aCwgJG1vcmUsICRhbGV2ZWwsICYkYXBhdGgsICYkZXhjbHVkZSwgJHNob3djb3VudD0wLCAkaW5jbHVkZWFydGljbGVzPTAsICR0eXBlPSdhcnRpY2xlJykgew0KICBnbG9iYWwgJHByZXRleHQ7DQogIHN0YXRpYyAkaW5kPTA7DQogIGxpc3QoJGwsJHIpID0gZXhwbG9kZSgnLCcsJG1vcmUpOw0KICAkYnVmZmVyID0gJyc7DQogIHdoaWxlKGlzc2V0KCR0cmVlWyRpbmRdKSBhbmQgZXh0cmFjdCgkdHJlZVskaW5kXSkgYW5kICRsZXZlbD49JGFsZXZlbCkgew0KICAgICRpbmQrKzsNCiAgICBpZigkbmFtZT09JHN0YXJ0KSBjb250aW51ZTsNCiAgICBpZihpc3NldCgkY3V0b2ZmKSAmJiAkbGV2ZWwgPiAkY3V0b2ZmKSBjb250aW51ZTsNCiAgICBlbHNlIHVuc2V0KCRjdXRvZmYpOw0KICAgIGlmKGluX2FycmF5KCRuYW1lLCAkZXhjbHVkZSkpIHskY3V0b2ZmID0gJGxldmVsOyBjb250aW51ZTt9DQogICAgaWYoJGRlcHRoICE9ICc/JyAmJiAkbGV2ZWwgPiAkZGVwdGgpIGNvbnRpbnVlOw0KICAgICRraWRzID0gJGFydGljbGVzID0gJGFjdGl2ZXBhdGggPSAnJzsNCiAgICBpZigkY2hpbGRyZW4gJiYgKCRkZXB0aCAhPSAnPycpICYmICgkbGV2ZWwgPiAkZGVwdGgtMSkpICRjaGlsZHJlbj0wOw0KICAgIGlmICgkaW5jbHVkZWFydGljbGVzKSB7DQogICAgICAkc25hbWUgPSBkb1NsYXNoKCRuYW1lKTsNCiAgICAgICRycyA9IHNhZmVfcm93cygnSUQgYXMgdGhpc2lkLCBTZWN0aW9uIGFzIHNlY3Rpb24sIFRpdGxlIGFzIHRpdGxlLCB1cmxfdGl0bGUsIHVuaXhfdGltZXN0YW1wKFBvc3RlZCkgYXMgcG9zdGVkJywndGV4dHBhdHRlcm4nLCIoQ2F0ZWdvcnkxID0gJyRzbmFtZScgT1IgQ2F0ZWdvcnkyID0gJyRzbmFtZScpIEFORCAgU3RhdHVzID49IDQgT1JERVIgQlkgUG9zdGVkIERFU0MiKTsNCiAgICAgIGZvcmVhY2goJHJzIGFzICRhcnRpY2xlKSAkYXJ0aWNsZXMgLj0gZG9UYWcocGVybWxpbmt1cmwoJGFydGljbGUpLCAnbGknKTsNCiAgICAgIGlmKCRhcnRpY2xlcykgJGFydGljbGVzID0gZG9UYWcoJGFydGljbGVzLCd1bCcsJ2FydGljbGVsaXN0JykuIlxuIjsNCiAgICAgIGlmKCRzaG93Y291bnQpICR0aXRsZSAuPSAnKCcuY291bnQoJHJzKS4nKSc7DQogICAgfQ0KICAgIGVsc2VpZiAoJHNob3djb3VudCkgew0KICAgICAgJHNuYW1lID0gZG9TbGFzaCgkbmFtZSk7DQogICAgICAkY291bnQgPSBzYWZlX2NvdW50KCd0ZXh0cGF0dGVybicsIihDYXRlZ29yeTEgPSAnJHNuYW1lJyBPUiBDYXRlZ29yeTIgPSAnJHNuYW1lJykgQU5EICBTdGF0dXMgPj0gNCIpOw0KICAgICAgJHRpdGxlIC49ICIoJGNvdW50KSI7DQogICAgfQ0KICAgIGlmKCRjaGlsZHJlbiBhbmQgJGtpZHMgPSBhenBfZ2V0dHJlZSgkdHJlZSwgJHN0YXJ0LCAkZGVwdGgsICRtb3JlLCAkbGV2ZWwrMSwgJGFwYXRoLCAkZXhjbHVkZSwgJHNob3djb3VudCwgJGluY2x1ZGVhcnRpY2xlcywgJHR5cGUpKSB7DQogICAgICBpZigkbGV2ZWwgPCAkYXBhdGgpIHskYXBhdGggPSAkbGV2ZWw7ICRhY3RpdmVwYXRoID0gJ2FjdGl2ZXBhdGgnO30NCiAgICAgICRraWRzID0gZG9UYWcoJGtpZHMsJ3VsJywkYWN0aXZlcGF0aCk7DQogICAgICAkdGl0bGUgPSAkbC4kdGl0bGUuJHI7DQogICAgfQ0KLyogICAgaWYgKCRwcmV0ZXh0WydwZXJtbGlua19tb2RlJ10gPT0gJ21lc3N5JykgJGhyZWYgPSBodSAuICdpbmRleC5waHA/Yz0nIC4gdXJsZW5jb2RlKCRuYW1lKTsNCiAgICBlbHNlICRocmVmID0gaHUgLiAnY2F0ZWdvcnkvJyAuIHVybGVuY29kZSgkbmFtZSkgLiAnLyc7Ki8NCiAgICAkaHJlZiA9IHBhZ2VsaW5rdXJsKGFycmF5KCdzJyA9PiAnJywgJ2MnID0+ICRuYW1lLCAnY29udGV4dCcgPT4gJHR5cGUpKTsNCiAgICAkYWN0aXZlID0gKCRuYW1lID09ICRwcmV0ZXh0WydjJ10pID8gJ2FjdGl2ZScgOiAnJzsNCiAgICBpZigkYWN0aXZlKSAkYXBhdGggPSAkbGV2ZWw7DQogICAgJGJ1ZmZlciAuPSBkb1RhZyhocmVmKCR0aXRsZSwkaHJlZikuJGFydGljbGVzLiRraWRzLCdsaScsJGFjdGl2ZSwnJywnbWVudS0nLiRuYW1lKS4iXG4iOw0KICB9DQogIGlmKCFpc3NldCgkdHJlZVskaW5kXSkgJiYgJGxldmVsPT0wKSAkaW5kPTA7DQogIHJldHVybiAkYnVmZmVyOw0KfQ0KDQpmdW5jdGlvbiBhenBfbWVudWdlbigkYXR0cykgew0KICAgIGdsb2JhbCAkcHJldGV4dDsNCg0KICAgIGV4dHJhY3QobEF0dHMoYXJyYXkoDQogICAgICAgICdyb290JyAgICAgPT4gJ3Jvb3QnLA0KICAgICAgICAnc3RhcnQnICAgICA9PiAnPycsDQogICAgICAgICdsYWJlbCcgICAgID0+ICcnLA0KICAgICAgICAndHlwZScgICAgID0+ICdhcnRpY2xlJywNCiAgICAgICAgJ3Nob3djb3VudCcgPT4gJzAnLA0KICAgICAgICAnaW5jbHVkZWFydGljbGVzJyA9PiAnMCcsDQogICAgICAgICdkZXB0aCcgICAgID0+ICc/JywNCiAgICAgICAgJ21vcmUnICAgICA9PiAnJywNCiAgICAgICAgJ2NhdGVnb3J5JyAgICAgPT4gJycsDQogICAgICAgICdleGNsdWRlJyAgICAgPT4gJycNCiAgICApLCRhdHRzKSk7DQoNCi8qIGFkanVzdCBzdGFydCAqLw0KICAgIGlmICgkc3RhcnQgPT0gJz8nKSAkc3RhcnQgPSAkcHJldGV4dFsnYyddID8gJHByZXRleHRbJ2MnXSA6ICRyb290Ow0KICAgICR3aGVyZSA9ICcxPTEnOw0KICAgIGlmICgkcm9vdCAhPSAncm9vdCcgJiYgJHN0YXJ0ICE9ICRyb290KSB7DQogICAgICAkcnMgPSBzYWZlX3JvdygibGZ0IGwsIHJndCByIiwndHhwX2NhdGVnb3J5JywNCgkJCSJuYW1lPSciLmRvU2xhc2goJHJvb3QpLiInIGFuZCB0eXBlID0gJyIuZG9TbGFzaCgkdHlwZSkuIiciDQogICAgICApOw0KICAgICAgaWYgKCEkcnMpIHJldHVybiAnJzsNCiAgICAgIGV4dHJhY3QoJHJzKTsNCiAgICAgICR3aGVyZSA9ICJsZnQgPj0gJGwgYW5kICRyZ3QgPD0gJHIiOw0KICAgIH0NCiAgICBpZigkY2F0ZWdvcnkpICR3aGVyZSAuPSAiIGFuZCBuYW1lIElOICgnIi5qb2luKCInLCciLCBkb1NsYXNoKGRvX2xpc3QoJGNhdGVnb3J5KSkpLiInKSI7DQoNCg0KDQogICAgJHJzID0gZ2V0VHJlZSgkc3RhcnQsICR0eXBlLCAkd2hlcmUpOw0KLy9lY2hvICRzdGFydCwnPHByZT4nLHByaW50X3IoJHJzKSwnPC9wcmU+JzsNCiAgICBpZiAoY291bnQoJHJzKSkgew0KICAgICAgJGV4Y2x1ZGUgPSBkb19saXN0KCRleGNsdWRlKTsNCi8vICAgICAgJG9mZnNldCA9ICgkc3RhcnQ9PSAncm9vdCcgfHwgJGNhdGVnb3J5ICYmICFpbl9hcnJheSgkc3RhcnQsZG9fbGlzdCgkY2F0ZWdvcnkpKT8gMCA6IDEpOw0KICAgICAgaWYoJGxhYmVsKSAkdGl0bGU9IjxsaT4kbGFiZWw8L2xpPlxuIjsNCiAgICAgIGlmICgkYnVmZmVyPWF6cF9nZXR0cmVlKCRycywkc3RhcnQsJGRlcHRoLCRtb3JlLDAsJGFwYXRoPTAsJGV4Y2x1ZGUsJHNob3djb3VudCwkaW5jbHVkZWFydGljbGVzLCR0eXBlKSkgcmV0dXJuICJcbjx1bD5cbiIgLiAkdGl0bGUuICRidWZmZXIgLiAiXG48L3VsPlxuIjsNCiAgICB9DQogICAgcmV0dXJuICcnOw0KfQ0KIjtzOjQ6InR5cGUiO3M6MToiMCI7czo1OiJvcmRlciI7czoxOiI1IjtzOjU6ImZsYWdzIjtzOjE6IjAiO3M6MzoibWQ1IjtzOjMyOiJmMDRiOTcwNTJlZTc3MTk4NDM1MjU4MTE1YjU3MjUzNyI7fQ==

Offline

#8 2013-01-25 12:22:05

jpdupont
Member
Registered: 2004-10-01
Posts: 752

Re: Deeply Nested Categories

Thanks !

Offline

#9 2013-01-25 21:07:00

whaleen
Member
From: Portland
Registered: 2006-05-11
Posts: 373
Website

Re: Deeply Nested Categories

etc wrote:

a modified version of azp_menugen that works well (for me).

<txp:azp_menugen /> = :)

Thanks a lot. I don’t use categories on many projects so I was having trouble slapping native tags around and it was started to get a little too crazy.

Much appreciated.


txtstrap (Textpattern + Twitter Bootstrap + etc…)

Offline

#10 2013-01-26 00:49:24

whaleen
Member
From: Portland
Registered: 2006-05-11
Posts: 373
Website

Re: Deeply Nested Categories

Having discovered azp_menugen can only go three category levels deep I’ve tried stw_category_tree which appears to go deeper, maybe infinitely. I’ve tested down to 5 levels nested categories and stw_category_tree is working fine. Any more than that would be silly.


txtstrap (Textpattern + Twitter Bootstrap + etc…)

Offline

#11 2013-01-26 09:06:36

etc
Developer
Registered: 2010-11-11
Posts: 5,471
Website GitHub

Re: Deeply Nested Categories

whaleen wrote:

Having discovered azp_menugen can only go three category levels deep

There is no depth limitation in azp_menugen, have you set its start attribute? <txp:azp_menugen start="root" /> should display the whole tree.

Offline

#12 2013-01-26 16:42:17

JimJoe
Member
From: United States
Registered: 2010-01-30
Posts: 573
Website

Re: Deeply Nested Categories

My old paper and pencil rpg site Crestar has 5 levels of categories in areas that haven’t detailed the locals and where they live yet. So it could go to 6 or more levels of nesting.

Offline

Board footer

Powered by FluxBB