NAME
Konstrukt::Doc::Tutorial::Plugin::Randomline - Create a really simple plugin putting out a random line
DESCRIPTION
This tutorial will teach you how to create a very simple plugin, that you can use in your web pages.
SETUP
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:
- 1. Create a new directory for your custom plugins
-
For example
/path/to/your/site/lib
. Inside that directory create the directoriesKonstrukt/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
- 2. Let Perl know to look for additional modules in this directory.
-
Add this line to your
konstrukt.settings
:lib /path/to/your/site/lib
See also "Installation of custom plugins" in Konstrukt::Doc::Installation.
CREATE THE PLUGIN
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:
<& randomline &>
some of
these lines
will be
put out
randomly
<& / &>
Create a file randomline.pm
in your custom plugin directory with this skeleton:
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!
ADD THE LOGIC
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:
#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.
APPENDIX: THE COMPLETE PLUGIN
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;
AUTHOR
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.
SEE ALSO
Next: Konstrukt::Doc::Tutorial::Plugin::Note::Actions
Previous: Konstrukt::Doc::Tutorial::Usage::Blog
Parent: Konstrukt::Doc
See also: Konstrukt::SimplePlugin, Konstrukt::Doc::CreatingPlugins