Automatic article meta handling for Textpattern CMS
Switch branches/tags
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
.gitignore
LICENSE
README.textile
manifest.xml
rah_metas.php

README.textile

rah_metas

A tiny meta-generator plugin for Textpattern CMS. Rah_metas auto-generates meta data from article content, including descriptions and keywords.

List of features

  • 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.

Requirements

Minimum requirements:

  • PHP 5+
  • Textpattern 4.0.4+

Recommended:

  • PHP 5.1.2+
  • Textpattern 4.4.1+

Installation and usage

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.

Attributes

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 &copy; 2007 John Doe" Default: ""

Description related attributes

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: "&hellip;"

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: ""

Keyword related attributes

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"

Redirect related attributes

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"

Rel link related attributes

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: ""

Examples

Basic usage

<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.

How to not output description at all, but keep all other features intact?

<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).

Changelog

Version 1.5 – 2011/10/29

  • 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.

Version 1.4 – 2010/10/19

  • Now automatically converts values supplied in keywords_from and description_from to lowercase. Thank you for reporting, pompilos.
  • Now uses lAtts() just once.
  • Removed dublicated trim() from rah_metas_strip().
  • Removed rah_metas_atts().

Version 1.3 – 2010/05/23

  • Now description_from and keywords_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.

Version 1.2 – 2010/05/15

  • 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 and keywords_from attributes. Even title, authorid, override_form or status.
  • Now dublicate keyword “uniqueing” is done with array_unique().
  • Fixed keywords code escaping.

Version 1.1 – 2009/10/09

  • 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.

Version 1.0.5 – 2008/12/25

  • 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 &#8230; from end of the description if trails are used and description is cut from context and shortened.

Version 1.0.4 – 2008/11/12

  • Added attribute: relnext.
  • Added attribute: relprev.
  • Minified amount of used globals by one.

Version 1.0.3 – 2008/08/03

  • Fixed last words truncate bug.

Version 1.0.2 – 2008/06/17

  • Fixed some typos in documention.
  • Now prefercontent also works with custom_fields.

Version 1.0.1 – 2008/06/17

  • Debugged version 1.0: status now stable.
  • Fixed a bug: now whitespace is stripped from beginning and end of the description content.

Version 1.0 – 2008/06/17

  • 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 with description_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.

Version minor 0.9.2 – 2008/01/07

  • One bug fix, created by little one chars typo in the code.

Version minor 0.9.1 – 2007/12

  • Removed a debugging error, caused by undefined variable if there were no description.

Version 0.9 – 2007/12/05

  • Added attribute: copyright.
  • Added attribute: useauthor.
  • Added attribute: customfieldkeywords.
  • Added attribute: customfieldexcerpt.

Version 0.8 – 2007/11/02

  • Added Textile remover: removes Textile completely from description
  • Cleaned up the code

Version 0.7 – 2007/09/08

  • Fixed bug that appears if single article has no body or excerpt. Only shown in debugging.

Version 0.6 – 2007/08/26

  • Fixed a code-removing bug
  • Now removes all code from automatic metadescription

Version 0.5 – 2007/08

  • Finished bug-testing

Version 0.4 – 2007/08

  • Add missing variable

Version 0.3 – 2007/08

  • Compined two separated functions
  • Improved the code by fixing globals

Version 0.2 – 2007/08

  • Replaced automatic-medescription’s ending points &#8230; with &hellip;
  • Added new attribute: imagetoolbar

Version 0.1 – 2007/07/27

  • Initial release.

Thanks to

  • 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.