<div class="gmail_quote">On Sat, May 12, 2012 at 9:20 AM,  <span dir="ltr"><<a href="mailto:a.sonderhoff@gassi-tv.de" target="_blank">a.sonderhoff@gassi-tv.de</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

why does (:var: {=$:var}:) produce an epic fail, while (:title {=$:var}:) just works fine?</blockquote></div><br>Maybe if you're this close maybe you can do it with the pagelist solution you've got.<br><br>But PTV's cannot be set dynamically via markup.  The pmwiki functions that read PTVs do not make use of the text as modified by markup rules but rather read the original text from the page.  (See below my signature for the code)<br>

<br>Thus no matter what PTV definitions you may create *via markup* they will never be recognized, because PageTextVar() never looks at the marked-up text.<br><br>You could theoretically mess with the $PCache and set it manually, but usually when I've tried to sneak in changes to a cache by some method other than the standard functions I end up pulling my hair out because of all the unexpected things that happen with the cache.<br>

<br>Probably what I would do would be to set up your own markup with a set and a read markup so that in your pagelist template you could have<br><br>(:setmyval {=$:foo}:)<br><br>(which would set either a static or a global value) and then this markup when you need the value:<br>

<br>(:readmyval:)<br><br>which would simply return that static or global value.  <br><br>-Peter<br><br>===(snip pmwiki.php)===<br>
function PageTextVar($pagename, $var) {<br>
  global $PCache, $PageTextVarPatterns, $MaxPageTextVars;<br>
  SDV($MaxPageTextVars, 500);<br>
  static $status;<br>
  if(@$status["$pagename:$var"]++ > $MaxPageTextVars) return '';<br>
  if (!@$PCache[$pagename]['=pagetextvars']) {<br>
    $pc = &$PCache[$pagename];<br>
    $pc['=pagetextvars'] = 1;<br>
#####<br>
## NOTICE how the page is read from scratch here<br>
#####<br>
    $page = RetrieveAuthPage($pagename, 'read', false, READPAGE_CURRENT);<br>
    if ($page) {<br>
      foreach((array)$PageTextVarPatterns as $pat) <br>
#####<br>
## AND then here we search for PTV patterns on the $page['text'] below<br>
#####<br>
        if (preg_match_all($pat, IsEnabled($PCache[$pagename]['=preview'],@$page['text']), <br>
          $match, PREG_SET_ORDER))<br>
          foreach($match as $m) {<br>
            $t = preg_replace("/\\{\\$:{$m[2]}\\}/", '', $m[3]);<br>
            $pc["=p_{$m[2]}"] = Qualify($pagename, $t);<br>
          }<br>
    }<br>
  }<br>
  return @$PCache[$pagename]["=p_$var"];<br>
}<br>
===(snip)===<br>
<br>