This question has been answered by multiple community members. See the first response.
SELECT * FROM modx_site_tmplvar_contentvalues WHERE contentid=<id-of-current-page>
if ($TVs = $modx->getCollection('modTemplateVarResource', array('contentid' => $modx->resource->get('id'))) {
$out = 'Values:<br/>'; // init
foreach ($TVs as $t) {
$out .= $t->get('value') .'<br/>';
}
return $out;
}
else {
return 'Sorry, no TVs were found.';
}if ($TVs = $modx->getCollection('modTemplateVarResource', array('contentid' => $modx->resource->get('id'))) {
$out = 'Values:<br/>'; // init
foreach ($TVs as $t) {
$out .= $modx->getTVValue($t->get('tmplvarid')) .'<br/>';
}
return $out;
}
else {
return 'Sorry, no TVs were found.';
}if ($TVs = $modx->getCollectionGraph('modTemplateVarResource', '{"TemplateVar":{}}'array('contentid' => $modx->resource->get('id'))) {
$out = ''; // init
foreach ($TVs as $t) {
$out .= $t->TemplateVar->get('name') . ' :' .$modx->getTVValue($t->get('tmplvarid')) .'<br/>';
}
return $out;
}
else {
return 'Sorry, no TVs were found.';
}
$docid = $modx->getOption('docid',$scriptProperties,$modx->resource->get('id'));
$outputSeparator = $modx->getOption('outputSeparator',$scriptProperties,'');
$tpl = $modx->getOption('tpl',$scriptProperties,'');
$output = array();
if ($resource = $modx->getObject('modResource',$docid) && $tvs = $resource->getTemplateVars()){
foreach ($tvs as $tv){
if (empty($tpl)){
$output[] = $tv->toArray();
}else{
$output[] = $modx->getChunk($tpl,$tv->toArray());
}
}
}
if (empty($tpl)){
$output = '<pre>' . print_r($output,1) . '</pre>';
}
else{
$output = implode($outputSeparator,$output);
}
return $output;
$docid = $modx->getOption('docid',$scriptProperties,$modx->resource->get('id'));
$outputSeparator = $modx->getOption('outputSeparator',$scriptProperties,'');
$categories = $modx->getOption('categories', $scriptProperties, '');
$tpl = $modx->getParser()->getElement('modChunk', $modx->getOption('tpl', $scriptProperties, 'catalogItemPropsBrief'));
$tpl->setCacheable(false);
$outerTpl = $modx->getParser()->getElement('modChunk', $modx->getOption('outerTpl', $scriptProperties, 'catalogItemPropsBriefOuter'));
$outerTpl->setCacheable(false);
$classnames = $modx->getOption('classnames', $scriptProperties, '');
$criteria = $modx->newQuery('modTemplateVar');
$criteria->innerJoin(
'modTemplateVarResource',
'TVi',
array('`modTemplateVar`.id = TVi.tmplvarid')
);
if($categories){
$criteria->innerJoin(
'modCategoryClosure',
'CATs',
array('CATs.descendant = modTemplateVar.category')
);
}
$criteria->select(array(
'modTemplateVar.id',
'TVi.id',
'modTemplateVar.caption',
'TVi.value',
'TVi.tmplvarid'
));
$criteria->where(
array(
'TVi.contentid'=>$docid,
)
);
if($categories){
$criteria->where(
array(
'CATs.ancestor:IN'=>array_map('trim',explode(',',$categories))
)
);
}
$criteria->sortby('rank', 'ASC');
$tvs = $modx->getCollection('modTemplateVar',$criteria);
$output = '';
foreach($tvs as $tv){
$processed = $tv->toArray();
$tpl->_processed = false;
$output .= $tpl->process($processed).$outputSeparator;
}
$outerTpl->_processed = false;
$output = $outerTpl->process(array("inner"=>$output, "classnames" => $classnames));
return $output;what about using $resource->getTemplateVars()?It does. Actually, if I had found this API method a before I researched on xPDO, I would definetely choose it. It's much simpler, but slower (depending on the conditions and the number of the TVs - up to 10 times!), consdering the category filtering requirement.
Does not something like this work?