"What Links Here" in right hand column
Similar to Wikipedia, it'd be nice to have a list of all the wiki pages that link to the wiki page currently being viewed. For example, it could look like the following:
- Start page
- Index by title
- Index by date
What Links Here¶
- Wiki Page 1
- Wiki Page 2
- Wiki Page N
Without this, it's hard to tell where to go for related information.
#2 Updated by Ben Oakes almost 10 years ago
I thought about this with a colleague the other day. Here's a sketch of how it might work, if anyone wants to implement it.
page_linksjoin table (two columns, something like:
- An observer on the wiki page model
- A method on the wiki page parser that gives an array of links
On save, the source page would delete all its rows in
page_links, parse the new page content for links, and update the join table with which pages are now linked.
To display "what links here", all that would be needed is a query to give all
page_links rows with a
linked_page of the currently viewed page. The pages that link to that page are the
source_page values in the result of that query.
page_links has no rows.
I create a page called "foo" with this content:
This is a page about foo. Related topics: [[bar]], [[baz]].
page_links then has:
Then, I create a page named "bar":
This is a page about bar.
To find the pages that link to "bar", I query for
page_links with a
linked_page of "bar". Result:
So, "foo" is the only page that links to "bar".