Creating custom template (operators of functions)

Author Message

Glenn MacGregor

Friday 14 November 2003 8:45:38 am

Hello,

I am trying to create a random template operator (or function not sure which) that mimics the PHP rand function. I am using ezp3.2-3, looking at the code and the example Custom template operators they don't match. So I found in the code that template.ini can define the mapping to PHP functions to template functions (or operators). So I added this line to the template.ini file:

PHPOperatorList[random_number]=rand

turned on debug, added the following line to a template file:

{let var=23}
{$var}
{$var|random_number}
{/let}

The debug gives me the following message:

Warning: PHP Nov 14 2003 15:52:22 rand() expects exactly 2 parameters, 1 given in /var/www/html/ezpublish-3.2-3/lib/eztemplate/classes/eztemplatephpoperator.php on line 86

So I tried the following line in my template file:

{let var=45}
{$var}
{random_number(0,$var}
{/let}

This produces the exact same debug output.

So it seems that functions which can be mapped in the template.ini file are PHP functions that take only 1 parameter.

How do I map a function that takes more than 1 parameter?

Thanks

Nicklas Lundgren

Friday 14 November 2003 9:12:24 am

Hi,
Im not sure that you can make a template operator that takes more than one param.
However I used the php function shuffle(array) instead of rand. Since it only takes one param its easy to make the template operator.

Shuffle is good for instance if you want to select a random article. Then you can fetch articles to an array and run your template operator shuffle on it, like:

$myArticle=$arrMyArticles|shuffle

This will give you one of the articles (randomly selected).

Of course, this only replaces the need for random numbers in certain cases.

Anyhow, hope this helps.

Regards,
Nicklas

Paul Borgermans

Friday 14 November 2003 11:22:28 am

Indeed, the template.ini operators can only map to functions that take 1 argument. If you need more, you will have to write a new template operator as an extension. It is not so difficult: take a look at the contributions and the RAD tool in the admin interface.

-paul

eZ Publish, eZ Find, Solr expert consulting and training
http://twitter.com/paulborgermans

Powered by eZ Publish™ CMS Open Source Web Content Management. Copyright © 1999-2014 eZ Systems AS (except where otherwise noted). All rights reserved.

eZ debug

Timing: Jan 19 2025 01:21:38
Script start
Timing: Jan 19 2025 01:21:38
Module start 'layout'
Timing: Jan 19 2025 01:21:38
Module start 'content'
Timing: Jan 19 2025 01:21:39
Module end 'content'
Timing: Jan 19 2025 01:21:39
Script end

Main resources:

Total runtime0.5802 sec
Peak memory usage4,096.0000 KB
Database Queries59

Timing points:

CheckpointStart (sec)Duration (sec)Memory at start (KB)Memory used (KB)
Script start 0.00000.0048 589.2891152.6406
Module start 'layout' 0.00480.0038 741.929739.4766
Module start 'content' 0.00850.5705 781.4063571.6875
Module end 'content' 0.57900.0012 1,353.093812.1250
Script end 0.5802  1,365.2188 

Time accumulators:

 Accumulator Duration (sec) Duration (%) Count Average (sec)
Ini load
Load cache0.00320.5592160.0002
Check MTime0.00130.2285160.0001
Mysql Total
Database connection0.00060.107210.0006
Mysqli_queries0.530491.4098590.0090
Looping result0.00050.0797570.0000
Template Total0.552995.320.2765
Template load0.00220.383120.0011
Template processing0.550794.908020.2753
Template load and register function0.00020.039010.0002
states
state_id_array0.00100.170110.0010
state_identifier_array0.00080.132620.0004
Override
Cache load0.00180.3102370.0000
Sytem overhead
Fetch class attribute can translate value0.00040.076730.0001
Fetch class attribute name0.00090.150040.0002
XML
Image XML parsing0.00070.121730.0002
class_abstraction
Instantiating content class attribute0.00000.001640.0000
General
dbfile0.00070.1251170.0000
String conversion0.00000.001740.0000
Note: percentages do not add up to 100% because some accumulators overlap

Templates used to render the page:

UsageRequested templateTemplateTemplate loadedEditOverride
1node/view/full.tplfull/forum_topic.tplextension/sevenx/design/simple/override/templates/full/forum_topic.tplEdit templateOverride template
3content/datatype/view/ezxmltext.tpl<No override>extension/community_design/design/suncana/templates/content/datatype/view/ezxmltext.tplEdit templateOverride template
6content/datatype/view/ezxmltags/paragraph.tpl<No override>extension/ezwebin/design/ezwebin/templates/content/datatype/view/ezxmltags/paragraph.tplEdit templateOverride template
4content/datatype/view/ezxmltags/line.tpl<No override>design/standard/templates/content/datatype/view/ezxmltags/line.tplEdit templateOverride template
1content/datatype/view/ezimage.tpl<No override>extension/sevenx/design/simple/templates/content/datatype/view/ezimage.tplEdit templateOverride template
1print_pagelayout.tpl<No override>extension/community/design/community/templates/print_pagelayout.tplEdit templateOverride template
 Number of times templates used: 16
 Number of unique templates used: 6

Time used to render debug report: 0.0001 secs