A tiny meta-generator plugin for Textpattern CMS. Rah_metas auto-generates meta data from article content, including descriptions and keywords.
- Generates automatic metadescriptions from article’s body, excerpt or custom field.
- Limit and customize the automatic descriptions and keywords by word or character limits.
- Takes care of content validation. Strips all HTML, invalid characters and extra whitespace.
Minimum requirements:
- PHP 5+
- Textpattern 4.0.4+
Recommended:
- PHP 5.1.2+
- Textpattern 4.4.1+
The general behavior stands: paste plugin code to the plugin installer textarea and run the automatic setup. Then just activate the plugin and you are ready to use new tags that plugin includes like others.
For usage, basically just put <txp:rah_metas />
-tag with wanted attributes to inside your site’s <head>
-tags. As the plugin’s tag outputs metainformation, and meta-tags, it shouldn’t be used outside <head>
-tags.
The tag is <txp:rah_metas />
and attributes for it follow. Default value ""
means that the attribute is unset and by default not used.
imagetoolbar
To block an browser’s image toolbar. Allowed attributes are true
and false
. By default not used.
Example: imagetoolbar="false"
Default: ""
language
The language used by the site. Value should be a language code, for example en
, de
, it
or se
.
Example: language="en"
Default: ""
robots
Directs how robots should navigate on the page. Valid values include index
, noindex
, follow
, nofollow
. The values can be combined.
Example: robots="index, follow"
Default: ""
author
Author name that you want to show as the page’s author. Usually you, company or the website’s name. This value is used as the fallback when useauthor
is used, but no author is available.
Example: author="John Doe"
Default: ""
useauthor
If set to 1
, <txp:author />
is used to populate author metadata when possible. The value set with author
attribute will be used as a fallback in list context and such.
Example: useauthor="1"
Default: "0"
copyright
Outputs copyright meta. Value is used as the content.
Example: copyright="Copyrihts © 2007 John Doe"
Default: ""
description
A default meta description that will be shown in list context, or when there isn’t an article description to show and description_replacement
is set on.
Example: description="Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Fusce at dui eget est congue aliquet. Quisque sed nunc"
Default: ""
description_from
Which artile field is used for the automatic meta description. The attribute takes comma separated list of fields. The first field in the list that isn’t empty is used as the meta description. Available values: body
, excerpt
or custom field’s name. If set empty, the automatic description isn’t used.
Example: description_from="body,excerpt,metadescription"
Default: "body,excerpt"
words
Limits the amount of words shown in the automatic meta description.
Example: words="15"
Default: "25"
maxchars
The maximum number of characters used in the generated automatic meta description.
Example: maxchars="170"
Default: "250"
description_trail
Ending trail used in the end of the automatic metadescription. Trail is only shown if the description is longer than the limit set by maxchars
and/or words
.
Example: description_trail=""
Default: "…"
description_replacement
If set on (1
) and there isn’t automatic description available, description
attribute is used as the description instead. By default this feature is not used.
Example: description_replacement="1"
Default: ""
escape
If set to 1
, will remove raw Textile markup from the description. By default the attribute is unset, and the feature is not used. Usually this feature isn’t required, but it might be good if you are supplying the description in a custom field and you are using Textile there. Textile in custom fields isn’t, by default, parsed by Textpattern.
Example: escape="1"
Default: ""
keywords
Default keywords that will be used as keyword meta in a list context, or when there isn’t any keywords set for an article and keywords_replacement
attribute is set on.
Example: keywords="life, Doe, cat, dog"
Default: ""
keywords_from
Which field is used for the keyword meta. The attribute takes comma separated list of fields. The first field in the list that isn’t empty is used as the keywords. Available values, any article field: keywords
, body
, excerpt
or custom field’s name. If empty, the feature isn’t used.
Example: keywords_from="keywords,excerpt"
Default: "keywords"
keywords_replacement
If there isn’t keywords available for an article, use default defined in keywords
attribute instead.
Example: keywords_replacement="1"
Default: ""
keywords_limit
Limits the words used in the keywords. Takes a number.
Example: keywords_limit="5"
Default: "25"
messy_to_clean_redirect
Use messy to clean redirect. Redirects messy requrests to clean urls. Use this only if you use clean urls. With messy urls this only causes eternal loop.
Example: messy_to_clean_redirect="1"
Default: ""
redirect_code
The code of redirection, value should be three numeric stannard status code protocol.
Example: redirect_code="302"
Default: "301"
relnext
Use rel link to point next page’s location to the browser. relnext
attribute’s value is used as <link rel="next" />
tag’s title
. Ideal values are Next
, Go to next
and so on. The attribute, relnext
, adds a next rel link meta that points to the next section page or article by posting date. If attribute is used (filled) then used, if unset (empty) then not.
Example: relnext="Next"
Default: ""
relprev
Use rel link to point previous page’s location to the browser. relprev
attribute’s value is used as <link rel="prev" />
tag’s title
. Ideal values are Previous
, Go to prev
and so on. The attribute, relprev
, adds a next rel link meta that points to the previous section page or article by posting date. If attribute is used (filled) then used, if unset (empty) then not.
Example: relprev="Previous"
Default: ""
prev_url
Manually defines relative prev url. Value should be a URL address. The URL is only used if automatic URL isn’t found.
Example: prev_url="http://www.example.com/path/to/id"
Default: ""
next_url
Manually defines relative next url. Value should be a URL address. The URL is only used if automatic URL isn’t found.
Example: prev_url="http://www.example.com/path/to/id"
Default: ""
<txp:rah_metas keywords="dog, cat, house" description="Lorem lipsum" maxchars="170" words="15" />
Using content preferring.* First look at the custom field, then main article (excerpt, body) fields.
<txp:rah_metas description_from="MyCustomFieldName,excerpt,body" />
Using rah_metas tag inside article_custom block
If rah_metas is placed directly inside article_custom (or article) tag, it can be used to pull the meta data from that specific article.
<txp:article_custom id="5">
<txp:rah_metas />
</txp:article_custom>
In the code above, we took the meta data from the article where the ID is 5.
<txp:rah_metas description="" description_from="" />
If description
and description_from
are set empty, no description will be generated. Same applies to keywords (see keywords
and keywords_from
attributes).
- Wrapped set of extra functions into a class, and removed the prefixing from the new methods.
- Added comments, cleaned up some code.
- Removed
rah_metas_textile()
function.
- Now automatically converts values supplied in
keywords_from
anddescription_from
to lowercase. Thank you for reporting, pompilos. - Now uses
lAtts()
just once. - Removed dublicated
trim()
fromrah_metas_strip()
. - Removed
rah_metas_atts()
.
- Now
description_from
andkeywords_from
take comma separated list of fields. The first field in the list that isn’t empty is used as keywords or description. - Removed attribute
prefercontent
. Using the attribute will throw notice in testing or debugging mode.
- Now the
<txp:rah_metas/>
tag can be also used directly inside<txp:article_custom/>
and<txp:article/>
blocks. That means that the tag now works in article lists. You just have to point it to the article. See example number 3. - Now any article field can be used in
description_from
andkeywords_from
attributes. Even title, authorid, override_form or status. - Now dublicate keyword “uniqueing” is done with
array_unique()
. - Fixed keywords code escaping.
- Added: attribute
keywords_limit
. - Added: removes doublicated words from keywords.
- Added: list view’s description is effected by word and character limits.
- Fixed double
"="
define bug. - Now
escape
attribute effects also body and expert, not only custom fields. - Now keywords are escaped, striped for tags and parsed.
- Counts white space into chars.
- Removed imagetoolbar attribute validation.
- Added attribute:
escape
. - Rebuild description’s word and chars counting: now always counts correctly: doesn’t ever cut words.
- Optimized parsing and speed: plugin is around 20% faster than before.
- Removes
…
from end of the description if trails are used and description is cut from context and shortened.
- Added attribute:
relnext
. - Added attribute:
relprev
. - Minified amount of used globals by one.
- Fixed last words truncate bug.
- Fixed some typos in documention.
- Now
prefercontent
also works with custom_fields.
- Debugged version 1.0: status now stable.
- Fixed a bug: now whitespace is stripped from beginning and end of the description content.
- Improved documentation.
- Little speed improvement.
- Removed
charset
-attribute, it ain’t needed as Textpattern sends charset via headers – and it must not differ. - Merged
customfieldexcerpt
-attribute withdescription_from
. - Included redirecting functions that prevent double content when using clean urls.
- Validates
imagetoolbar
-attribute to false or true. - Added attribute:
description_replacement
. - Added attribute:
keywords_replacement
. - Added attribute:
description_from
- Added attribute:
messy_to_clean_redirect
. - Added attribute:
redirect_code
. - Added attribute:
description_trail
. - Added invalid charasters removing for custom fields.
- Removed Textile removing from body and excerpt, that was meant to remove Textile + XHTML bugs caused by user’s invalid article code, and used instead body_html, and just stripped HTML: it’s faster.
- Some users wanted to be able input invalid characters to description: now it is possible, if you turn Textile off: why should we validate meta description, if article’s body itself is invalid, because writer doesn’t use valid HTML special characters.
- One bug fix, created by little one chars typo in the code.
- Removed a debugging error, caused by undefined variable if there were no description.
- Added attribute:
copyright
. - Added attribute:
useauthor
. - Added attribute:
customfieldkeywords
. - Added attribute:
customfieldexcerpt
.
- Added Textile remover: removes Textile completely from description
- Cleaned up the code
- Fixed bug that appears if single article has no body or excerpt. Only shown in debugging.
- Fixed a code-removing bug
- Now removes all code from automatic metadescription
- Finished bug-testing
- Add missing variable
- Compined two separated functions
- Improved the code by fixing globals
- Replaced automatic-medescription’s ending points
…
with…
- Added new attribute:
imagetoolbar
- Initial release.
- All folks that thanked me by making this plugin available.
- rolograaf and pat64 for great ideas of keywords.
- fuls, strawberryfusion, jim_01, pompilos and ian_ep for reporting me some bugs.
- maniqui for the ideas.
- And all the other great Textpatternists.