-
-
Save stevewithington/6214658 to your computer and use it in GitHub Desktop.
<cfscript> | |
/** | |
* @parentID Category ParentID | |
*/ | |
public any function dspNestedCategories( | |
string siteid='#variables.$.event('siteid')#' | |
, string parentID='' | |
, string keywords='' | |
, boolean activeOnly=false | |
, boolean InterestsOnly=false | |
, boolean showCategoryKids=true | |
) { | |
var local = {}; | |
local.str = ''; | |
local.gateway = variables.$.getBean('categoryGateway'); | |
local.rs = local.gateway.getCategories(argumentCollection=arguments); | |
local.it = variables.$.getBean('categoryIterator').setQuery(local.rs); | |
if ( local.it.hasNext() ) { | |
savecontent variable='local.str' { | |
WriteOutput('<ul>'); | |
While ( local.it.hasNext() ) { | |
local.item = local.it.next(); | |
// If allows content assignments, then create a link | |
if ( local.item.getIsOpen() ) { | |
local.itemCategoryURL = variables.$.createHREF( | |
filename = variables.$.event('currentFilenameAdjusted') | |
& '/category/' | |
& local.item.getFilename() | |
); | |
WriteOutput('<li> | |
<a href="#local.itemCategoryURL#"> | |
#HTMLEditFormat(local.item.getName())# | |
</a> | |
'); | |
} else { | |
WriteOutput('<li>#HTMLEditFormat(local.item.getName())#'); | |
} | |
// Show Child Categories? | |
if ( arguments.showCategoryKids ) { | |
local.rsKids = local.gateway.getCategories( | |
siteID=local.item.getSiteID() | |
, parentID=local.item.getCategoryID() | |
); | |
if ( local.rsKids.recordcount ) { | |
local.itKids = variables.$.getBean('categoryIterator').setQuery(local.rsKids); | |
While ( local.itKids.hasNext() ) { | |
local.kid = local.itKids.next(); | |
WriteOutput('<ul> | |
<li>'); | |
// If allows content assignments, then create a link | |
if ( local.kid.getIsOpen() ) { | |
local.kidCategoryURL = variables.$.createHREF( | |
filename = variables.$.event('currentFilenameAdjusted') | |
& '/category/' | |
& local.kid.getFilename() | |
); | |
WriteOutput(' | |
<a href="#local.kidCategoryURL#"> | |
#HTMLEditFormat(local.kid.getName())# | |
</a> | |
'); | |
} else { | |
WriteOutput('#HTMLEditFormat(local.kid.getName())#'); | |
} | |
WriteOutput('#dspNestedCategories(parentID=local.kid.getCategoryID())# | |
</li> | |
</ul>'); | |
} | |
} | |
} // @end showCategoryKids | |
WriteOutput('</li>'); | |
} | |
WriteOutput('</ul>'); | |
} | |
} // @end local.it.hasNext() | |
return local.str; | |
} | |
</cfscript> |
I think you may have a problem with your siteID
setting. Currently, you have it picking up the attribute called allonnews
from the content bean. I don't think you meant to do that.
I would think it should probably be something more like this:
<cfscript>
catBean = $.getBean('category').loadBy(name='Jessup, GA', siteID=$.event('siteid'));
parentCatBean = $.getBean('category').loadBy(categoryid=catBean.getParentID(), siteID=$.event('siteid'));
</cfscript>
That said, once you have actually obtain a bean by which you can pull out a category's parentID that you want to display the children of, you should be able to invoke this method (assuming you've placed the dspNestedCategories() method in your contentRenderer.cfc) by passing in that parentID such as:
#$.dspNestedCategories(parentID='yourCategoryParentID')#
Excellent function! I modified the href attributes of the anchor elements to suit the URL structure of my project, which looks like /mynewsfeed/?categoryid=[categoryid]
. These two lines got me there:
local.itemCategoryURL = variables.$.event('scriptName') & "?categoryid=" & local.item.getCategoryId();
local.kidCategoryURL = variables.$.event('scriptName') & "?categoryid=" & local.kid.getCategoryId();
... though I do prefer your URL structure and it's making me re-think my URLs!
This function (or something simliar) should be included in Mura core!
<cfset thisCat = 'Jesup, GA' /> <cfset siteID = $.content('allonnews') /> <cfset category = $.getBean("category").loadBy(name=thisCat,siteID=siteID) /> <cfset par_id = category.getParentID()> <cfset category_par = $.getBean("category").loadBy(categoryID=par_id,siteID=siteID) />
I get the parentID of a category. Where do I pass that to make this give me all the kids of that parent?