diff --git a/docs/getting_started.rst b/docs/getting_started.rst
index 6d9a8c41..bad9bbda 100644
--- a/docs/getting_started.rst
+++ b/docs/getting_started.rst
@@ -459,6 +459,10 @@ following to ``pelicanconf.py``::
And then the ``pdfs`` directory would also be copied to ``output/static/``.
+You can also link to categories or tags, using the `|tag|tagname` and
+`|category|foobar` syntax.
+
+
Importing an existing blog
--------------------------
diff --git a/pelican/contents.py b/pelican/contents.py
index ed213c31..900049a2 100644
--- a/pelican/contents.py
+++ b/pelican/contents.py
@@ -216,6 +216,10 @@ class Content(object):
else:
logger.warning("Unable to find {fn}, skipping url"
" replacement".format(fn=value))
+ elif what == 'category':
+ origin = Category(value, self.settings).url
+ elif what == 'tag':
+ origin = Tag(value, self.settings).url
return ''.join((m.group('markup'), m.group('quote'), origin,
m.group('quote')))
diff --git a/pelican/tests/test_contents.py b/pelican/tests/test_contents.py
index af97db3f..936903c1 100644
--- a/pelican/tests/test_contents.py
+++ b/pelican/tests/test_contents.py
@@ -180,6 +180,30 @@ class TestPage(unittest.TestCase):
Page(**self.page_kwargs)
self.assertTrue(content_object_init.has_receivers_for(Page))
+ def test_get_content(self):
+ # Test that the content is updated with the relative links to
+ # filenames, tags and categories.
+ settings = get_settings()
+ args = self.page_kwargs.copy()
+ args['settings'] = settings
+
+ # Tag
+ args['content'] = ('A simple test, with a '
+ 'link')
+ page = Page(**args)
+ content = page.get_content('http://notmyidea.org')
+ self.assertEquals(content, ('A simple test, with a '
+ 'link'))
+
+ # Category
+ args['content'] = ('A simple test, with a '
+ 'link')
+ page = Page(**args)
+ content = page.get_content('http://notmyidea.org')
+ self.assertEquals(content,
+ ('A simple test, with a '
+ 'link'))
+
class TestArticle(TestPage):
def test_template(self):