Forums / Setup & design / namespace / scope and the persistent_variable

namespace / scope and the persistent_variable

Author Message

Wei Dai

Wednesday 22 April 2009 4:23:45 am

This is the eZ Publish 4.1 now. And these concept in the documents are still a mess.

Could you someone write a clear tutorial on template variable namespace and scope with easy under standing in eZ Publish 4.x context? And when the persistent_variable should comes in as a better approach?

I never use "$#" and "$:", and seldom use the name attribute in a template function due to lack a very good understanding on these topic.

Thanks

Certified eZ Publish 4 developer looking for develop information & collaboration.

Gaetano Giunta

Wednesday 22 April 2009 10:14:51 am

The persistent var has nothing to do with scope and namespace.
It is a mechanism that can be used to pass some data from the node to the pagelayout.
A common case is adding to a class an attribute to be used for the "description" meta tag in the html header.
Since the html header is usually part of the pagelayout template, and the current node object is not available any more in there, the easy way to get the value of the attribute is to fetch the current node in the pagelayout. But this means unnecessary fetches (queries to the db), and so cache blocks have to be introduced, and things get complex.
A better way to achieve the same result is to set the persistent variable with the desired value in the node_view_full template, and use it to echo the meta-tag in the pagelayout.

Principal Consultant International Business
Member of the Community Project Board

André R.

Wednesday 22 April 2009 2:07:10 pm

> And when the persistent_variable should comes in as a better approach?

Last month in eZ Publish 4.1. In ezwebin 1.4 (also included with ezflow 1.1 installations) there is two functions to set / append persistent_variable that also works on system templates (like user/login):
http://ez.no/developer/forum/general/pass_variable_from_pagelayout/re_pass_variable_from_pagelayout
http://ez.no/developer/forum/developer/smart_loading_of_javascript

> The persistent var has nothing to do with scope and namespace.

That is not entirely true, if you try to set persistent_variable from sub template (or line view) and don't set it for global scope, then it won't work.

> I never use "$#" and "$:", and seldom use the name attribute in a template function due to lack a very good understanding on these topic.

The reason why it is not good documented is probably because they are to complex and with 3.6 there was a consensus to simplify the template language and hide away namespace and scope. But it won't be completely gone before we switch to the ezc Template system though.

Ref:
$# read global scope value
$: read root scope value

eZ Online Editor 5: http://projects.ez.no/ezoe || eZJSCore (Ajax): http://projects.ez.no/ezjscore || eZ Publish EE http://ez.no/eZPublish/eZ-Publish-Enterprise-Subscription
@: http://twitter.com/andrerom

eZ debug

Timing: Jan 18 2025 15:18:06
Script start
Timing: Jan 18 2025 15:18:06
Module start 'content'
Timing: Jan 18 2025 15:18:06
Module end 'content'
Timing: Jan 18 2025 15:18:06
Script end

Main resources:

Total runtime0.2015 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.0073 588.9609180.8125
Module start 'content' 0.00730.0044 769.773497.9297
Module end 'content' 0.01170.1897 867.7031526.2500
Script end 0.2014  1,393.9531 

Time accumulators:

 Accumulator Duration (sec) Duration (%) Count Average (sec)
Ini load
Load cache0.00351.7386200.0002
Check MTime0.00140.7080200.0001
Mysql Total
Database connection0.00070.370210.0007
Mysqli_queries0.156077.40861410.0011
Looping result0.00140.71401390.0000
Template Total0.189393.910.1893
Template load0.00080.412010.0008
Template processing0.188593.533510.1885
Override
Cache load0.00060.286310.0006
Sytem overhead
Fetch class attribute can translate value0.00110.544410.0011
XML
Image XML parsing0.00020.113110.0002
General
dbfile0.00211.0305200.0001
String conversion0.00000.003430.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