Since you&#39;re already writing custom code to handle it, I think it would be easier to define the token entirely in your own custom module and add a small admin interface that saves this price to a variable, rather than abusing the node system to fit your purpose.<div>

<br></div><div>funciton custommodule_token_list($type = &#39;all&#39;) {</div><div>  if ($type == &#39;all&#39; || $type == &#39;global&#39;) {</div><div>    $tokens[&#39;price-foo&#39;] = t(&#39;The price of foo.&#39;);</div>

<div>    return $tokens;</div><div>  }</div><div>}</div><div><br></div><div><meta charset="utf-8">function custommodule_token_values($type, $object = NULL, $options = array()) {</div><div>  if ($type == &#39;global&#39;) {</div>

<div>    $tokens[&#39;price-foo&#39;] = check_plain(variable_get(&#39;price_foo&#39;, &#39;$10.00&#39;));</div><div>    return $tokens;</div><div>  }<br>}</div><div><div><br clear="all">Dave Reid<br><a href="mailto:dave@davereid.net">dave@davereid.net</a><br>


<br><br><div class="gmail_quote">On Tue, Feb 15, 2011 at 4:28 AM, DTH <span dir="ltr">&lt;<a href="mailto:david@hartster.org">david@hartster.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

Quick question: my original intention was to set it up so that people<br>
could use something like, for example, {{PRICE_OF_FOO}} in node<br>
content, so that when the price of foo changes, it only has to be<br>
changed in one place rather than in lots of different places.<br>
<br>
Rather than reinvent the wheel, I&#39;ve used Token + Token Filter, so<br>
that people can use [token custom price-foo]. Everything works fine<br>
with:<br>
<br>
function custommodule_token_values($type, $object = NULL, $options = array()) {<br>
  if ($type == &#39;custom&#39;) {<br>
    $tokens[&#39;price-foo&#39;]      = &quot;$19.99&quot;;<br>
    return $tokens;<br>
  }<br>
}<br>
<br>
The next step was to stick a UI on this so anybody can update the<br>
price. To do so I created a new content type &quot;tokens&quot;, and added CCK<br>
fields for foo_price, foo_version_number etc. The code now looks like:<br>
<br>
function custommodule_get_tokens(){<br>
        $node = new stdClass();<br>
        $node-&gt;nid =12;<br>
        $node-&gt;vid = db_result(db_query(&quot;SELECT vid FROM {node} WHERE nid =<br>
%d&quot;,$node-&gt;nid));<br>
        $node-&gt;type = &#39;tokens&#39;;<br>
        $content = content_storage(&#39;load&#39;, $node);<br>
        return array(&quot;price-foo&quot;=&gt;$content[&#39;field_foo_price&#39;][0][&#39;value&#39;],&quot;version-foo&quot;=&gt;$content[&#39;field_foo_version_number&#39;][0][&#39;value&#39;]);<br>
}<br>
<br>
function custommodule_token_values($type, $object = NULL, $options = array()) {<br>
  if ($type == &#39;custom&#39;) {<br>
    $tokens = custommodule_get_tokens();<br>
    return $tokens;<br>
  }<br>
}<br>
<br>
Basically: is this the best way to do this, or is there a simpler/more<br>
native to giving users node tokens they can edit themselves. I wanted<br>
to check before I embarked on a round of clearing up the UI so that<br>
the &quot;tokens&quot; content type doesn&#39;t have all the menu/published/language<br>
stuff on etc, making sure people can&#39;t hit node/12 etc.<br>
</blockquote></div><br></div></div>