Recent Changes - Search:

Cookbook

PmWiki

pmwiki.org

RandomQuote

Summary: Insert random quotes or markup into a page
Version: 2007-02-15
Prerequisites: pmwiki-2.1.beta15
Status: Stable
Maintainer: Pm
Categories: Includes

Questions addressed by this recipe

  • How can I implement a "quote of the day"?
  • How can I have a rotating image or markup?
  • How can I set up a "Did you know" feature similar to MediaWiki?
  • How can I create random banners?

Description

The randomsection.phpΔ script makes it possible to insert a random quote from another page into the current one. It does this by defining a {$RandomSection} page variable, which combined with the (:include:) markup makes it possible to grab random sections from other wiki pages.

Note: A previous version of this page used a different approach, see RandomQuote-OldVersion for that recipe.

To use this feature, install the randomsection.phpΔ script into the cookbook/ directory, then add an include_once("$FarmD/cookbook/randomsection.php"); line to a local customization file.

Next, create a page containing quotations to be included. Each quotation should be preceded by a unique anchor -- i.e., using the [[#name]] markup. The Cookbook.Quotes page on this site shows an example set of quotations.

Then, to dynamically insert a random quote from a page, use (:include {PageName$RandomSection}:) in the markup. For example, to grab a quote at random from the Cookbook.Quotes page, one can do:


Quote of the day:

(:include {Quotes$RandomSection}:)

Quote of the day:

Education is an admirable thing, but it is well to remember from time to time that nothing that is worth knowing can be taught.

Oscar Wilde (1854 – 1900)

Reload this page to see the quotes change.

Note that the quotations can contain arbitrary markup, such as wikistyles, links to other pages or sites, and the like.

The {$RandomSection} page variable also remembers the section names it has already used, so it can appear multiple times in a page without duplicating quotes.


Two more quotes:

(:include {Quotes$RandomSection}:)

(:include {Quotes$RandomSection}:)

Two more quotes:

Don't talk to me about naval tradition. It's nothing but rum, sodomy and the lash.

Winston Churchill (1874-1965)

640K ought to be enough for anybody.

Microsoft Chairman Bill Gates, 1981

Comments

Kinda pointing out the obvious but this plugin is also perfect for setting up a "did you know" function, similar to mediawiki's. I set it up for mine and it works like a charm, thanks :D - Com

You can use this feature to display random banners throughout a wiki. Create a banners page and instead of a quotes, put [[<URL> | <URL of the banner picture>]] . Each banner is seperated by [[#anchors]] . One can use group headers and/or footers for sitewide banners, or just specific pages with (:include {banners$RandomSection}:) . Drfredc

Because of some strange quirk in the include make sure the anchor [[#anchor]] is on a separate line to the quote or image.

See Also

Contributors

Sandbox


I changed this script slightly to allow for including only between two specific anchors instead of using only one anchor to delineate. This lets you keep quotes and other content on a nicely formatted page and pull only your anchored contents out (rather than everything between the anchors).

On line 43, change
&& preg_match_all("/\\[\\[(#$npat)\\]\\]/", $page['text'], $alist)) {
to
&& preg_match_all("/\\[\\[(#$npat)end\\]\\]/", $page['text'], $alist)) {

That's it! Just add the word 'end' into the anchor format string. I'm not a coder but this solution seems to be working perfectly fine so far. After you've modified the script, simply wrap the sections you want to be pulled in [[#anchor]] ... [[#anchorend]] tags. --jibegod

Questions

How is this a 'quote of the day' script if there's no option to set the randomness interval? I want a banner to rotate on a daily basis, not on every reload... --jibegod

Quote of the day

I think I'll write my tombstone - Here lies Edmund Blackadder, and he's bloody annoyed.

Blackadder

User notes +3: If you use, used or reviewed this recipe, you can add your name. These statistics appear in the Cookbook listings and will help newcomers browsing through the wiki.

Edit - History - Print - Recent Changes - Search
Page last modified on July 25, 2012, at 06:26 PM