Forums / Developer / Creating custom template (operators of functions)

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

eZ debug

Timing: Jan 31 2025 14:16:30
Script start
Timing: Jan 31 2025 14:16:30
Module start 'content'
Timing: Jan 31 2025 14:16:30
Module end 'content'
Timing: Jan 31 2025 14:16:30
Script end

Main resources:

Total runtime0.1799 sec
Peak memory usage2,048.0000 KB
Database Queries141

Timing points:

CheckpointStart (sec)Duration (sec)Memory at start (KB)Memory used (KB)
Script start 0.00000.0053 588.0625180.8125
Module start 'content' 0.00530.0067 768.875093.9297
Module end 'content' 0.01210.1677 862.8047523.8750
Script end 0.1798  1,386.6797 

Time accumulators:

 Accumulator Duration (sec) Duration (%) Count Average (sec)
Ini load
Load cache0.00331.8087200.0002
Check MTime0.00140.7694200.0001
Mysql Total
Database connection0.00080.443610.0008
Mysqli_queries0.134174.52671410.0010
Looping result0.00110.59621390.0000
Template Total0.167493.010.1674
Template load0.00090.495810.0009
Template processing0.166592.540210.1665
Override
Cache load0.00060.359210.0006
Sytem overhead
Fetch class attribute can translate value0.00090.515310.0009
XML
Image XML parsing0.00030.178410.0003
General
dbfile0.00854.7366200.0004
String conversion0.00000.002330.0000
Note: percentages do not add up to 100% because some accumulators overlap

CSS/JS files loaded with "ezjscPacker" during request:

CacheTypePacklevelSourceFiles
CSS0extension/community/design/community/stylesheets/ext/jquery.autocomplete.css
extension/community_design/design/suncana/stylesheets/scrollbars.css
extension/community_design/design/suncana/stylesheets/tabs.css
extension/community_design/design/suncana/stylesheets/roadmap.css
extension/community_design/design/suncana/stylesheets/content.css
extension/community_design/design/suncana/stylesheets/star-rating.css
extension/community_design/design/suncana/stylesheets/syntax_and_custom_tags.css
extension/community_design/design/suncana/stylesheets/buttons.css
extension/community_design/design/suncana/stylesheets/tweetbox.css
extension/community_design/design/suncana/stylesheets/jquery.fancybox-1.3.4.css
extension/bcsmoothgallery/design/standard/stylesheets/magnific-popup.css
extension/sevenx/design/simple/stylesheets/star_rating.css
extension/sevenx/design/simple/stylesheets/libs/fontawesome/css/all.min.css
extension/sevenx/design/simple/stylesheets/main.v02.css
extension/sevenx/design/simple/stylesheets/main.v02.res.css
JS0extension/ezjscore/design/standard/lib/yui/3.17.2/build/yui/yui-min.js
extension/ezjscore/design/standard/javascript/jquery-3.7.0.min.js
extension/community_design/design/suncana/javascript/jquery.ui.core.min.js
extension/community_design/design/suncana/javascript/jquery.ui.widget.min.js
extension/community_design/design/suncana/javascript/jquery.easing.1.3.js
extension/community_design/design/suncana/javascript/jquery.ui.tabs.js
extension/community_design/design/suncana/javascript/jquery.hoverIntent.min.js
extension/community_design/design/suncana/javascript/jquery.popmenu.js
extension/community_design/design/suncana/javascript/jScrollPane.js
extension/community_design/design/suncana/javascript/jquery.mousewheel.js
extension/community_design/design/suncana/javascript/jquery.cycle.all.js
extension/sevenx/design/simple/javascript/jquery.scrollTo.js
extension/community_design/design/suncana/javascript/jquery.cookie.js
extension/community_design/design/suncana/javascript/ezstarrating_jquery.js
extension/community_design/design/suncana/javascript/jquery.initboxes.js
extension/community_design/design/suncana/javascript/app.js
extension/community_design/design/suncana/javascript/twitterwidget.js
extension/community_design/design/suncana/javascript/community.js
extension/community_design/design/suncana/javascript/roadmap.js
extension/community_design/design/suncana/javascript/ez.js
extension/community_design/design/suncana/javascript/ezshareevents.js
extension/sevenx/design/simple/javascript/main.js

Templates used to render the page:

UsageRequested templateTemplateTemplate loadedEditOverride
1pagelayout.tpl<No override>extension/sevenx/design/simple/templates/pagelayout.tplEdit templateOverride template
 Number of times templates used: 1
 Number of unique templates used: 1

Time used to render debug report: 0.0001 secs