Jump to main content Jump to doc navigation

Accessing Template Variable Values via the API

Like just about everything in the MODX GUI, you can access Template Variables and their values via the MODX API. This relies on the xPDO method getObject and related functions, but we demonstrate some examples here because it relates directly to Template Variables.

getTVValue

string|null getTVValue (str|integer $tv_name OR ID of TV)

See core/model/modx/modresource.class.php

getTVValue Usage

Let's say we have a TV named 'bio', and we're going to retrieve page id 123 that uses this TV. Here's what our Snippet might look like:

$page = $modx->getObject('modResource', 123);
return $page->getTVValue('bio');

getTVValue fetches values from the resource cache when available. These caches are normally cleared when saving a resource, however if you are updating TV values using the setTVValue method below, these values will not be reflected directly because of the cache. If you absolutely need the latest data, you could bypass the cache by going straight for the data and using getObject to get the TV value record.

$tvr = $modx->getObject('modTemplateVarResource', array(
 'tmplvarid' => $tvId,
 'contentid' => $resourceId
));
if ($tvr) {
 return $tvr->get('value');
}
else {
 $tv = $modx->getObject('modTemplateVar', $tvId);
 if ($tv) return $tv->get('default_text');
}
return '';

setTVValue

Use setTVValue to save a new value to a TV. Unlike some other xPDO API methods, this method stores values to the database immediately, so you do not need to invoke a separate call to a save() method. This method does not clear the resource cache.

boolean setTVValue (str|integer $tv_name OR ID of TV, string $value)

Note that when using setTVValue, it is possible for an immediate getTVValue to return a cached value.

setTVValue Usage

$page = $modx->getObject('modResource', 123);
if (!$page->setTVValue('bio', 'This is my new bio...')) {
   $modx->log(xPDO::LOG_LEVEL_ERROR, 'There was a problem saving your TV...');
}

See Also

  1. Creating a Template Variable
  2. Bindings
  3. CHUNK Binding
  4. DIRECTORY Binding
  5. EVAL Binding
  6. FILE Binding
  7. INHERIT Binding
  8. RESOURCE Binding
  9. SELECT Binding
  10. Template Variable Input Types
  11. Template Variable Output Types
  12. Date TV Output Type
  13. Delimiter TV Output Type
  14. HTML Tag TV Output Type
  15. Image TV Output Type
  16. URL TV Output Type
  17. Adding a Custom TV Type - MODX 2.2
  18. Adding a Custom TV Input Type
  19. Adding a Custom TV Output Type
  20. Creating a multi-select box for related pages in your template
  21. Accessing Template Variable Values via the API