Why don´t you also try getResources plugin? You can push from your custom resources a tv created by you and shown in a specifi template created bty you... well this is just an idea!!!! But i think you have your problem solved!!!!
http://rtfm.modx.com/display/ADDON/getResources
$text = str_replace('"', '', $text);
$text = str_replace('"', '"', $text);
[[!getResourcesTag? &parents=`1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20` &elementClass=`modSnippet` &element=`getResources` &tagKey=`CLOUDkeywords` &tpl=`mytplseo` &tagRequsetParam=`tag` &toPlaceholder=`results`]]
[[DynamicDescription? &maxWordCount=`50`]]
If the descriptionTv TV is empty, the code uses the resource content, but I think your resource has no content at that that point since the DynaDescription tag is above the getResourcesTag tag. There’s nothing there but the getResourcesTag tag, which is removed.
I think your only option is to put something in the dectriptionTV TV.
[[If? &subject=`[[DynamicDescription? &maxWordCount=`80`]]` &operator=`EQ` &operand=`` &then=`[[*introtext]]` &else=`[[DynamicDescription? &maxWordCount=`80`]]`]]
The only alternative I can think of is to put the DynamicDescription code in a plugin connected to OnWebPagePrerender and have it inject the description into the header with $modx->regClientStartupHTMLBlock().
<?php $resource =& $modx->resource; $pid = $resource->get('id'); $mwc = $scriptProperties['maxWordCount']; $maxWordCount = (!empty($mwc) && is_numeric($mwc)) ? $mwc : 25; /** * Function: getdynadescription() * Returns: A string of text ready to be placed in a meta description tag */ if (!function_exists(getDynaDescription)) { function getDynaDescription($text='',$excerpt_length=25) { global $modx; $text = str_replace(']]>', ']]>', $text); /* remove line breaks */ $text = str_replace("\n",' ',$text); $text = str_replace("\r",' ',$text); /* entify chars */ $text = htmlEntities($text); /* remove special MODx tags - chunks, snippets, etc. * If we don't do this they'll end up expanded in the description. */ $text = $modx->stripTags($text); $words = preg_split ("/\s+/", $text,$excerpt_length+1); if (count($words) > $excerpt_length) { array_pop($words); array_push($words, '...'); $text = implode(' ', $words); } return trim(stripslashes($text)); } } $output = ''; if ($scriptProperties['useResourceDescription']) { /* If &useRessourceDescription is set, use that */ $output = $modx->resource->get('description'); } else if (!empty($descriptionTv)) { /* Try the TV */ if (!empty ($scriptProperties['descriptionTv'])) { $tv = $modx->getObject('modTemplateVar',array('name'=>$scriptProperties['descriptionTv'])); $output = $tv? $tv->getValue($pid) : ''; } } if (empty($output)) { /* still empty, use the content field */ $content = $resource->getContent(); $output = getDynaDescription($content,$maxWordCount); } /* Create the full tag if &fullTag is set */ if ($fullTag == true) { $output = '<meta name="description" content="' . $output . '">' . "\n"; } $modx->regClientStartupHTMLBlock($output);