About this document
This document is based on the original written by Mark Olson. Changes made in this version include:
- Formatting for this wiki
- Spelling corrections
- Some of the code examples rewritten
- Notes added for clarification
You can view the original at:
http://corantodemo.net/doc/MyGuideStyleCodes.htm
Dale Ray
The plethora of standard variables
- Subject
- Text
- User
- Date
- Category
- UserField_Email
- Year
- Month_Name
- Month_Number
- Weekday
- Day
- Hour
- Minute
- Second
- AMPM
- Time_Zone
- TwoDigitYear
- TwoDigitMonth
- TwoDigitHour
- TwoDigitDay
↑ Contents
Using If
The code that follows will print the date at the top of the day's worth of posts.
<If: Sub: isNewDate>
<b><Field: Month_Name> <Field: Day> '<Field: TwoDigitYear></b>
</If>
Using else
<If: Field: UserField_Email>
<a href="<Field: UserField_Email>"><Field: User></a>
<If: Else>
<Field: User>
</If>
↑ Contents
Compare text with eq (equal) and ne (not equal)
<If: Field: Subject eq "w00t, Coranto">
Don't we all love Coranto?
<If: Else>
Grr..
</If>
Compare numbers with == and !=
<If: Field: Day == 32>
Something isn't right here...
</If>
PerlCode
<PerlCode>
if( $Day > 3 && $Day < 21 ) {
$Day = $Day.'th';
}elsif( $Day % 10 == 1 ) {
$Day = $Day.'st';
}elsif( $Day % 10 == 2 ) {
$Day = $Day.'nd';
}elsif( $Day % 10 == 3 ) {
$Day = $Day.'rd';
}else {
$Day = $Day.'th';
}
</PerlCode>
The above example gives you dates like 1st, 2nd, 3rd, etc.
↑ Contents
PerlCode in cruser.pl
Put the following in the style:
And the stuff below this, in cruser.pl (it tell you where).
sub fixthedate {
if( $Day > 3 && $Day < 21 ) {
$Day = $Day.'th';
}elsif( $Day % 10 == 1 ) {
$Day = $Day.'st';
}elsif( $Day % 10 == 2 ) {
$Day = $Day.'nd';
}elsif( $Day % 10 == 3 ) {
$Day = $Day.'rd';
}else {
$Day = $Day.'th';
}
}
Open cruser.pl in a text editor and look for the section that says:
- ** INSERT CUSTOM SUBROUTINES HERE **
# Below is the place to put in any custom subroutines you have. (If you don't
# know what this means, just ignore this section.)
Insert sub-routines that you use often into this section. You can then call the subroutine as outlined in the example given above.
When upgrading Coranto make sure you backup your cruser.pl file so you don't lose the custom routines you have placed in it.
↑ Contents
Basic Example 1 - Using isNewDate
<If: Sub: isNewDate>
<b><Field: Month_Number>/<Field: Day>/<Field: Year></b>
<hr>
<b><Field: Subject></b><br>
<Field: Text><br>
<Field: Hour>:<Field: Minute> {<Field: User>}
Would print something like...
3/13/06
Your Subject
The stuff you entered into the text field.
3:15 {User Name Here}
Wow.... - Look at how much you've learned. Obviously I have no idea if you, or anyone is learning anything at all from this, but I can hope.
10|27 {mark}
↑ Contents
Basic Example 2 - Link to viewnews.cgi
<Field: Date> - <Field: User><br>
<a class="nav" href="/cgi-bin/viewnews.cgi?id=<Field: newsid>" title="the link that never dies"><b><Field: Subject></b></a><br>
Would print html something like...
2:27 AM</a> » - User Name Here
<a href="/cgi-bin/viewnews.cgi?id=AAuVZZkyZFyEXXwWq>Subject Here</a>
That looks like:
2:27 AM</a> » - User Name Here
Subject Here
Look, this one has a link to viewnews (nonfunctional) in it that is generated by the PerlCode.
↑ Contents
Advanced Example - Trim the Text Field and add Read More Link
Put the following code right ABOVE <Field: Text> in your style.
<PerlCode>
my $yourlength = 150;
if (length($Text) > $yourlength){
$yourlength--;
my $Backup = $Text;
$Text =~ s/<br>/>br</g;
$Text =~ s/<br \/>/>br \/</g;
$text =~ s/<[^>]+>//g;
$Text =~ s/>br \/</<br \/>/g;
$Text =~ s/>br</<br>/g;
if (length($Text) > $yourlength){
$Text = substr($Text,0,index($Text,' ',$yourlength));
$Text .= qq~<br><a href="/cgi-bin/viewnews.cgi?id=$newsid" title="more">more...</a>~;
}else{
$Text = $Backup;
}
}</PerlCode>
This one is, more or less the fullnews feature. Once it finishes checks the length, it strips all the HTML out (except <br />), and checks the length again. If it was shortened too much, it restores the original $Text variable, and stops. However, if it still is longer than the minimum length, it will shorten it, and then link it to the viewnews.
You can create the same result, with the exception of the linebreaks staying, simply by using:
<PerlCode>
if(length($Text) > 150) {
$Text = SnipText($Text, 150);
$Text .= qq~<br><a href="/cgi-bin/viewnews.cgi?id=$newsid" title="more">more...</a>~;
}
</PerlCode>
where you want the snip.
Other methods of snipping or trimming a field use the Snipper Addon by Parahead and the built in snip function in Coranto.
↑ Contents
You can leave comments using this form.