NOTE: This is a
DistributionDocument.
- Please help maintain high quality documentation:
This is a wiki, please
fix the documentation if you find errors or incomplete content.
Put questions and suggestions concerning the documentation of this topic in the comments section below.
Use the Support web for problems you are having using TWiki.
Use the Sandbox web to evaluate & test TWiki.
TWiki Meta Data
Additional topic data, program-generated or from TWikiForms, is stored embedded in the topic text using META: tags
Overview
By default, TWiki stores topics in files on disk, in a really simple and obvious directory structure. The big advantage of this approach is that it makes it really easy to manipulate topics from outside TWiki, and is also very safe; there are no complex binary indexes to maintain, and moving a topic from one TWiki to another is as simple as copying a couple of text files.
To keep everything together in one place, TWiki uses a simple method for embedding additional data (program-generated or from
TWikiForms) in topics. It does this using
META: tags.
META: data includes program-generated info like
FileAttachment and topic movement data, and user-defined
TWikiForms info.
Meta Data Syntax
- Format is the same as in TWikiVariables, except all fields have a key.
-
%META:<type>{key1="value1" key2="value2" ...}%
- Order of fields within the meta variables is not defined, except that if there is a field with key
name, this appears first for easier searching (note the order of the variables themselves is defined).
- Each meta variable is on one line.
- Values in meta-data are URL encoded so that characters such as \n can be stored.
Example of Format
%META:TOPICINFO{version="1.6" date="976762663" author="LastEditorWikiName" format="1.0"}%
text of the topic
%META:TOPICMOVED{from="Codev.OldName" to="Codev.NewName"
by="TopicMoverWikiName" date="976762680"}%
%META:TOPICPARENT{name="NavigationByTopicContext"}%
%META:FILEATTACHMENT{name="Sample.txt" version="1.3" ... }%
%META:FILEATTACHMENT{name="Smile.gif" version="1.1" ... }%
%META:FORM{name="WebFormTemplate"}%
%META:FIELD{name="OperatingSystem" value="OsWin"}%
%META:FIELD{name="TopicClassification" value="PublicFAQ"}%
Meta Data Specifications
The current version of Meta Data is 1.0, with support for the following variables.
META:TOPICINFO
| Key |
Comment |
| version |
Same as RCS version |
| date |
integer, unix time, seconds since start 1970 |
| author |
last to change topic, is the REMOTE_USER |
| format |
Format of this topic, will be used for automatic format conversion |
META:TOPICMOVED
This is optional, exists if topic has ever been moved. If a topic is moved more than once, only the most recent META:TOPICMOVED meta variable exists in the topic, older ones are to be found in the rcs history.
%META:TOPICMOVED{from="Codev.OldName" to="Codev.NewName" by="talintj" date="976762680"}%
| Key |
Comment |
| from |
Full name, i.e., web.topic |
| to |
Full name, i.e., web.topic |
| by |
Who did it, is the REMOTE_USER, not WikiName |
| date |
integer, unix time, seconds since start 1970 |
Notes:
- at present version number is not supported directly, it can be inferred from the RCS history.
- there is only one META:TOPICMOVED in a topic, older move information can be found in the RCS history.
META:TOPICPARENT
| Key |
Comment |
| name |
The topic from which this was created, typically when clicking on a red-link, or by filling out a form. Normally just TopicName, but it can be a full Web.TopicName format if the parent is in a different Web. |
META:FILEATTACHMENT
| Key |
Comment |
| name |
Name of file, no path. Must be unique within topic |
| version |
Same as RCS revision |
| path |
Full path file was loaded from |
| size |
In bytes |
| date |
integer, unix time, seconds since start 1970 |
| user |
the REMOTE_USER, not WikiName |
| comment |
As supplied when file uploaded |
| attr |
h if hidden, optional |
Extra fields that are added if an attachment is moved:
| Key |
Comment |
| movedfrom |
full topic name - web.topic |
| movedby |
the REMOTE_USER, not WikiName |
| movedto |
full topic name - web.topic |
| moveddate |
integer, unix time, seconds since start 1970 |
META:FORM
| Key |
Comment |
| name |
A topic name - the topic represents one of the TWikiForms. Can optionally include the web name (i.e., web.topic), but doesn't normally |
META:FIELD
Should only be present if there is a META:FORM entry. Note that this data is used when viewing a topic, the form template definition is not read.
| Key |
Name |
| name |
Ties to entry in TWikiForms template, is title with all bar alphanumerics and . removed |
| title |
Full text from TWikiForms template |
| value |
Value user has supplied via form |
Recommended Sequence
There is no absolute need for Meta Data variables to be listed in a specific order within a topic, but it makes sense to do so a couple of good reasons:
- form fields remain in the order they are defined
- the
diff function output appears in a logical order
The recommended sequence is:
-
META:TOPICINFO
-
META:TOPICPARENT (optional)
- text of topic
-
META:TOPICMOVED (optional)
-
META:FILEATTACHMENT (0 or more entries)
-
META:FORM (optional)
-
META:FIELD (0 or more entries; FORM required)
Viewing Meta Data in Page Source
When viewing a topic the
Raw Text link can be clicked to show the text of a topic (i.e., as seen when editing). This is done by adding
raw=on to URL.
raw=debug shows the meta data as well as the topic data, ex:
debug view for this topic
Rendering Meta Data
Meta Data is rendered with the %META% variable. This is mostly used in the
view,
preview and
edit scripts.
You can render form fields in topic text by using the FORMFIELD variable. Example:
%FORMFIELD{"TopicClassification"}%
For details, see
VarFORMFIELD.
Current support covers:
| Variable usage: |
Comment: |
%META{"form"}% |
Show form data, see TWikiForms. |
%META{"formfield"}% |
Show form field value. Parameter: name="field_name". Example: %META{ "formfield" name="TopicClassification" }% |
%META{"attachments"}% |
Show attachments, except for hidden ones. Options: all="on": Show all attachments, including hidden ones. |
%META{"moved"}% |
Details of any topic moves. |
%META{"parent"}% |
Show topic parent. Options: dontrecurse="on": By default recurses up tree, at some cost. nowebhome="on": Suppress WebHome. prefix="...": Prefix for parents, only if there are parents, default "". suffix="...": Suffix, only appears if there are parents, default "". separator="...": Separator between parents, default is " > ". |
Note: SEARCH can also be used to render meta data, see examples in
FormattedSearch and
SearchPatternCookbook.
Related Topics: DeveloperDocumentationCategory,
UserDocumentationCategory
Comments & Questions about this Distribution Document Topic
DennisDaniels (18 Mar 2002) suggestion/diagram for "TwikiMetaData 'pure xml'" moved to
XMLAndForms.
--
MikeMannix - 12 May 2002
Is there a way to display the META data for a different topic than the one you are currently in? Eg: I am editing Main.SomeTopic and I want to show the value of the WebForm "Synopsis" field for Main.SomeOtherTopic. It seems the syntax Main.SomeOtherTopic%META:name="WebForm" field="Synopsis"% ought to do it, but it doesn't. Is this even possible?
--
DrewKime - 17 Jul 2002
Suggestion:
Make a timeout for the display of the topicmoved comment displayed at the bottom of a moved page.
"Someweb.SomePage moved from Someweb.SomeOtherPage on 16 Jul 2003 - 13:30 by HolgieBob - put it back"
If the page is intentionaly and correctly moved (and maybe a looong time ago) then the comment generated will just be a slight annoyance on an otherwise perfect page.
--
HolgieBob - 14 Aug 2003
I find the definition of name and title (and/or their Key names) from META:FIELD (above), confusing.
| Key |
Name |
| name |
Ties to entry in TWikiForms template, is title with all bar alphanumerics and . removed |
| title |
Full text from TWikiForms template |
| value |
Value user has supplied via form |
Does "name" refer to the name of the TWiki page containing the
TWikiForms template?
Does "title" refer to the name of a specific field in the template?
If so, can we make clearer definitions? Maybe:
- name (or "form name")
- name of the TWiki page containing the TWikiForms template [being used on | applied to] this page
- title (or "field name")
- name of the (specific) field in the TWikiForms template [being used on | applied to] this page
The square brackets and so forth are intended to indicate options.
If I'm wrong, that may add emphasis to the request for better definitions.
If I'm right, "form name" and "field name" seem much clearer than "name" and "title". (And then, in some sense, the fully qualified name for a form field would be form name plus field name.)
Oh, and what are "bar alphanumerics"--is this intended to refer to the underbar and/or dash? (And, if so, isn't that an oxymoron--the underbar and dash are not alphanumeric.)
--
RandyKramer - 06 Jun 2005
Update: Ok, after some thought I'm more certain that the above is correct, and now I see where the keyname comes from (iiuc, the data is stored in a hash, and the keyname is the "key" for the hash) so I can imagine that not everyone is anxious to change the keyname. Still, it would be possible, and would seem to make it a lot clearer.
Or, add another field to the above table, and have a "common name" (formname, fieldname) in addition to the keyname (name).
--
RandyKramer - 06 Jun 2005
This section here is about documentation. Please ask support questions in the
Support web.
--
PeterThoeny - 01 Nov 2005
Q: what do I do if I want to query the metadata of a page other than the current page?
Suggestion:
%META{"parent",topic="SomeOtherPage",...}%
--
AndyGlew - 25 Mar 2006
In profil, META:FORM do not support MAKETEXT.
Do you have solution for support i18n translation for user's profil ?
example :
%META:FIELD{name="FirstName" attributes="" title="%MAKETEXT{"FirstName"}%" value="Yannick"}%
--
YannickPavard - 24 Mar 2007
Is it possible to update META data that is attached at the bottom of topic? I'm looking to have it done within a loaded page through an IF conditional statement.
--
Joe Rose - 2014-09-09
Please ask support questions in the
Support web.
You can update form meta data by adding certain parameters to the save script.
Details in
TWikiScripts, example at
Support.SID-00250.
--
Peter Thoeny - 2014-09-09