Konstrukt::Doc::Tutorial::Plugin::Randomline - Create a really simple plugin putting out a random line
This tutorial will teach you how to create a very simple plugin, that you can use in your web pages.
Note: For the general setup of a new website see "SETUP" in Konstrukt::Doc::Tutorial::Usage::Blog.
For your plugin to be loaded, Perl must find it in its @INC paths. To create a plugin for a local website only, you can easily create a new directory for it and add this directory to Perl's @INC:
For example /path/to/your/site/lib. Inside that directory create the directories Konstrukt/Plugin, where you will put your plugin module. So the whole path to the directory for your custom plugin modules will be
/path/to/your/site/lib
Konstrukt/Plugin
/path/to/your/site/lib/Konstrukt/Plugin
Add this line to your konstrukt.settings:
konstrukt.settings
lib /path/to/your/site/lib
See also "Installation of custom plugins" in Konstrukt::Doc::Installation.
We will create a very simple plugin, that will print a random line out of the embedded content.
Create a file (e.g. random.html) with this content:
random.html
<& randomline &> some of these lines will be put out randomly <& / &>
Create a file randomline.pm in your custom plugin directory with this skeleton:
randomline.pm
package Konstrukt::Plugin::randomline; use strict; use warnings; use base 'Konstrukt::SimplePlugin'; #the default action for your plugin sub default : Action { my ($self, $tag, $content, $params) = @_; print 'hi!'; } 1;
You can now point your web browser to the web page (e.g. random.html) and you will see the text:
hi!
We want to pick a random line of the embedded text and print it out. Replace the print statement in the default action with this code:
print
#split the content into lines my @lines = split /[ \t]*\r?\n[ \t]*/, $content; #remove empty lines @lines = grep { !/^\s*$/ } @lines; #print a random line print $lines[int rand @lines];
That's it!
You need to restart/reload your Apache, if you're using mod_perl, so that it loads your plugin module again.
package Konstrukt::Plugin::randomline; use strict; use warnings; use base 'Konstrukt::SimplePlugin'; #the default action for your plugin sub default : Action { my ($self, $tag, $content, $params) = @_; #split the content into lines my @lines = split /[ \t]*\r?\n[ \t]*/, $content; #remove empty lines @lines = grep { !/^\s*$/ } @lines; #print a random line print $lines[int rand @lines]; } 1;
Copyright 2006 Thomas Wittek (mail at gedankenkonstrukt dot de). All rights reserved.
This document is free software. It is distributed under the same terms as Perl itself.
Next: Konstrukt::Doc::Tutorial::Plugin::Note::Actions
Previous: Konstrukt::Doc::Tutorial::Usage::Blog
Parent: Konstrukt::Doc
See also: Konstrukt::SimplePlugin, Konstrukt::Doc::CreatingPlugins
To install Konstrukt, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Konstrukt
CPAN shell
perl -MCPAN -e shell install Konstrukt
For more information on module installation, please visit the detailed CPAN module installation guide.