Так вы вызывайте так, чтобы передаваемый id был id

Так вы вызывайте так, чтобы передаваемый id был id документа нужного уровня. Если у вас этот скрипт возвращает Категорию (что по логике должно быть родителем для подкатегории), соответственно в сниппете надо возвращать pagetitle не родителя, а самого документа, модифицируйте скрипт, включайте мозги.

$q = $modx->newQuery('modResource', $id);
$q->select(array(
    "modResource.pagetitle",
));
return $modx->getValue($q->prepare());