I’m not sure if this is the place to contribute code or not, but here is a version of the snippet that has a flag for showing/hiding items that are (un)checked as ’Show in Menu’:
// --------------------
// Snippet: ListSiteMap
// --------------------
// Version: 0.9.0
// Date: 2006.08.14
// [email protected]
//
// This snippet was designed to show a nested
// list site map with each pagetitle being a
// link to that page. It will not include
// unpublished folders/pages OR its children,
// even if the children ARE published.
// Config
// $siteMapRoot [int]
// The parent ID of your root. Default 0. Can be set in
// snippet call with LSM_root (to doc id 10 for example):
// [[ListSiteMap?LSM_root=10]]
$siteMapRoot = 0;
// $showDescription [ 1 | 0 ]
// Specify if you would like to include the description
// with the page title link.
$showDescription = 1;
// $titleOfLinks [ string ]
// What database field do you want the title of your links to be?
// The default is pagetitle because it is always a valid (not empty)
// value, but if you prefer it can be any of the following:
// id, pagetitle, description, parent, alias, longtitle
$titleOfLinks = 'pagetitle';
// $removeNewLines [ 1 | 0 ]
// If you want new lines removed from code, set to true. This is generally
// better for IE when lists are styled vertically.
$removeNewLines = 1;
// $maxLevels [ int ]
// Maximum number of levels to include. The default 0 will allow all
// levels. Also settable with snippet variable LSM_levels:
// [[ListSiteMap?LSM_levels=2]]
$maxLevels = 0;
// $selfAsLink [ true | false ]
// Define if the current page should be a link (true) or not
// (false)
$selfAsLink = 0;
// $showUnpubs [ true | false ]
// Decide to include items in unpublished folders. This will show the
// unpublished items as well. No links will be made for the unpublished items
// but they will be shown in the structure. You will not likely want to do
// this but the option is yours.
$showUnpubs = 0;
// $showHideMenu [ true | false ]
// Decide to include menu items that are checked as hidden from the menu.
// Hides all children of the hidden document as well.
$showHideMenu = 0;
// Styles
//
// .LSM_currentPage span surrounding current page if $selfAsLink is false
// .LSM_description description of page
// .LSM_N ul style where N is the level of nested list- starting at 0
// ###########################################
// End config, the rest takes care of itself #
// ###########################################
// Initialize
$siteMapRoot = (isset($LSM_root))? $LSM_root : $siteMapRoot ;
$maxLevels = (isset($LSM_levels))? $LSM_levels : $maxLevels ;
$ie = ($removeNewLines)? '' : "\n" ;
// Overcome single use limitation on functions
if(!function_exists('MakeSiteMap')){
function MakeSiteMap($funcModx, $listParent, $listLevel, $description, $titleOfLinks,$maxLevels,$su,$selfAsLink,$shm){
$children = $funcModx->getAllChildren($listParent,'menuindex ASC, pagetitle','ASC','id,pagetitle,description,parent,alias,longtitle,published,deleted,hidemenu');
$output .= '<ul class="LSM_'.$listLevel.'">'.$ie;
foreach($children as $child){
// skip unpubs unless desired
if ((!$su && !$child['published']) || ($child['deleted']) || (!$shm && $child['hidemenu'])) continue;
$descText = ($description)? ' <span class="LSM_description">'.$child['description'].'</span>' : '';
$output .= '<li>';
if ((!$selfAsLink) && ($child['id'] == $funcModx->documentIdentifier)){
$output .= '<span class="LSM_currentPage">'.$child['pagetitle'].'</span>';
} else if (!$child['published']){
$output .= '<span class="LSM_unpubPage">'.$child['pagetitle'].'</span>';
} else {
$output .= '<a href="[~'.$child['id'].'~]" title="'.$child[$titleOfLinks].'">'.$child['pagetitle'].'</a>';
}
$output .= $descText;
if ($funcModx->getAllChildren($child['id']) && (($maxLevels==0) || ($maxLevels > $listLevel+1 ))){
$output .= MakeSiteMap($funcModx,$child['id'],$listLevel+1,$description,$titleOfLinks,$maxLevels,$su,$selfAsLink,$shm);
}
$output .= '</li>'.$ie;
}
$output .= '</ul>'.$ie;
return $output;
}
}
return MakeSiteMap($modx, $siteMapRoot, 0, $showDescription, $titleOfLinks,$maxLevels,$showUnpubs,$selfAsLink,$showHideMenu);
Pretty simple check to put in place.
James