<?php
/* getField - stripped down version of getField for Revolution
USAGE:
1. [[!getField]] -> current resource pagetitle
2. [[!getField? &field=`TestTv`]] -> current resource TestTv
3. [[!getField? &field=`longtitle`]] -> current resource longtitle
4. [[!getField? &field=`InvalidField`]] -> No Result!
5. [[!getField? &id=`16`]] -> id 16 resource pagetitle
6. [[!getField? &id=`16` &field=`longtitle`]] -> id 16 resource longtitle
7. [[!getField? &id=`16` &field=`TestTv`]] -> id 16 resource TestTv
8. [[!getField? &id=`16` &field=`InvalidField`]] -> No Result!
*/
$output = "No result!";
$tempOutput = "";
if($id){
if($field){
//look for document field
$resource = $modx->getObject('modResource',$id);
$tempOutput = $resource->get($field);
if(!$tempOutput){
//look for TV value
$aField = $modx->getObject('modTemplateVar', array('name' =>$field));
if($aField){
$output = $aField->getValue($id);
}else{
//default output value
}
}else{
$output = $tempOutput;
}
}else{
// id but no field -> return pagetitle
$resource = $modx->getObject('modResource',$id);
$output = $resource->get("pagetitle");
}
}else{
if($field){
//look for documnet field
$resource = $modx->getObject('modResource',$modx->resource->get('id'));
$tempOutput = $resource->get($field);
if(!$tempOutput){
//look for TV
$aField = $modx->resource->get($field);
if ($aField){
$output = $aField[1];
}else{
//default output value
}
}else{
$output = $tempOutput;
}
}else{
//no id, no field -> return current doc pagetitle
$output = $modx->resource->get('pagetitle');
}
}
echo $output;
?>
<?php
/**
* getResourceField
*/
$output = $modx->getOption('default',$scriptProperties,'');
$field = $modx->getOption('field',$scriptProperties,'pagetitle');
if (empty($scriptProperties['id']) || $scriptProperties['id'] == $modx->resource->get('id')) {
/* use the already loaded resource */
$resource =& $modx->resource;
} else {
/* grab only the fields we need, not the whole object */
$c = $modx->newQuery('modResource');
$c->select($modx->getSelectColumns('modResource','modResource','','',array('id',$field)));
$c->where(array(
'id' => $scriptProperties['id'],
));
$resource = $modx->getObject('modResource',$c);
if (empty($resource)) return $output;
}
if ($resource->getFieldName($field) === null) {
/* if field isnt defined, look for TV value */
$tvValue = $resource->getTVValue($field);
if ($tvValue !== null) {
$output = $tvValue;
}
} else {
/* otherwise get field value */
$output = $resource->get($field);
}
return $output;
<?php
/*
* GetFieldValue
*
* Example [[GetFieldValue? &id=`1` &field=`pagetitle`]]
*
*/
$resource = $modx->getObject('modResource', $id);
if ($resource) {
$value = $resource->get($field);
return $value;
}
?><?php
/*
* GetTvValue
*
* Example: [[GetTvValue? &id=`1` &tv=`MyTv`]]
*
*/
$resource = $modx->getObject('modResource', $id);
if ($resource) {
$value = $resource->getTvValue($tv);
return $value;
}
?> $c->select($modx->getSelectColumns('modResource','modResource','','',array('id',$field)));
$c->select($modx->getSelectColumns('modResource','modResource','',array('id',$field)));
<?php
/**
*
* getResourceField
*
* A snippet to grab a value from a field or a TV
*
* @ author Paul Merchant
* @ author Shaun McCormick
* @ version 1.0.0 - April 30, 2010
*
* OPTIONS
* id - The resource ID
* field - (Opt) The field or template variable name, defaults to pagetitle
* isTV - (Opt) Set as true to return a raw template variable
* processTV - (Opt) Set as true to return a rendered template variable
* default - (Opt) The value returned if no field is found
*
* Exmaple1: [[getResourceField? &id=`123`]]
* Example2: [[getResourceField? &id=`[[UltimateParent?]]` &field=`myTV` &isTV=`1`]]
* Example3: [[getResourceField? &id=`[[*parent]]` &field=`myTV` &processTV=`1`]]
*
**/
// set defaults
$id = $modx->getOption('id',$scriptProperties,$modx->resource->get('id'));
$field = $modx->getOption('field',$scriptProperties,'pagetitle');
$isTV = $modx->getOption('isTV',$scriptProperties,false);
$processTV = $modx->getOption('processTV',$scriptProperties,false);
$output = $modx->getOption('default',$scriptProperties,'');
if ($isTV || $processTV) {
// get the tv object
$tv = $modx->getObject('modTemplateVar',array('name'=>$field));
if (empty($tv)) return $output;
if ($processTV) {
// get rendered tv value
$tvValue = $tv->renderOutput($id);
} else {
// get raw tv value
$tvValue = $tv->getValue($id);
}
if ($tvValue !== null) {
$output = $tvValue;
}
} else {
if ($id == $modx->resource->get('id')) {
// use the current resource
$resource =& $modx->resource;
} else {
// grab only the columns we need
$criteria = $modx->newQuery('modResource');
$criteria->select($modx->getSelectColumns('modResource','modResource','',array('id',$field)));
$criteria->where(array('id'=>$id));
$resource = $modx->getObject('modResource',$criteria);
if (empty($resource)) return $output;
}
$fieldValue = $resource->get($field);
if ($fieldValue !== null) {
$output = $fieldValue;
}
}
return $output;
?>