Dropmenu uses getActiveChildren API call to retrieve the menu items. It seems that all of the MODx api functions are checking the access rights when retrieving documents, so don’t know if this is possible without doing an own function for this. But you could achieve this by putting a new function to your MODx document.parser.class.inc.php (or straight to the snippet and replace $this with $modx) like:
(same as getActiveChildren but access permission checking removed)
<?php
function getAllActiveChildren($id=0, $sort='menuindex', $dir='ASC', $fields='id, pagetitle, description, parent, alias, menutitle') {
$tblsc = $this->getFullTableName("site_content");
$tbldg = $this->getFullTableName("document_groups");
// modify field names to use sc. table reference
$fields = 'sc.'.implode(',sc.',preg_replace("/^\s/i","",explode(',',$fields)));
$sort = 'sc.'.implode(',sc.',preg_replace("/^\s/i","",explode(',',$sort)));
// get document groups for current user
if($docgrp = $this->getUserDocGroups()) $docgrp = implode(",",$docgrp);
// build query
$sql = "SELECT DISTINCT $fields FROM $tblsc sc
LEFT JOIN $tbldg dg on dg.document = sc.id
WHERE sc.parent = '$id' AND sc.published=1 AND sc.deleted=0
ORDER BY $sort $dir;";
$result = $this->dbQuery($sql);
$resourceArray = array();
for($i=0;$i<@$this->recordCount($result);$i++) {
array_push($resourceArray,@$this->fetchRow($result));
}
return $resourceArray;
}
?>
And then replace getActiveChildren calls in DropMenu with getAllActiveChildren. But I don’t know that is this the best/correct way to do it or could this produce some security issues. So you better wait until someone with more knowledge on security can comment this. And I’m not totally sure what happens when user clicks to the page links that he don’t have rights to, I’m sure they won’t be displayed, but don’t know that will it show access denied error or redirect to so some page or what..