2012-10-15 42 views
0

我正在爲Liferay創建自定義主題,我希望在每個頁面佈局中單獨包含頁腳。不幸的是,我似乎沒有訪問頁面佈局文件中的$ full_templates_path變量。我沒有手動將值存儲在#set中,然後在包含的模板中訪問該值。如何#設置變量以使其在包含的速度模板中可用

在香草主題,文件的處理是這樣的:

portal_normal.vm: 
    1) some init, doctype, etc. 
    2) #parse("$full_templates_path/header.vm") 
    3) $theme.include($content_include) 
    a) custom_layout_1.tpl 
    b) chat portlet 
    4) #parse("$full_templates_path/footer.vm") 

佈局的目的,我需要要摒棄這種模式,就像這樣:

portal_normal.vm 
    1) some init, doctype, etc. 
    2) #parse("$full_templates_path/header.vm") 
    3) $theme.include($content_include) 
    a) custom_layout_1.tpl 
     i) #parse("$full_templates_path/footer.vm") 
    b) chat portlet 

當我嘗試這,tomcat出錯,因爲$ custom_templates_path沒有在custom_layout_1.tpl中定義。我試着用以下方法portal_normal.vm內

#set($full_footer_path = "$full_templates_path/footer.vm") 
$theme.include($content_include) 

,然後custom_layout_1.tpl內,我這樣做是爲了解決這個問題,我想發出的頁腳標記:

#parse("$full_footer_path") 

然而,tomcat仍然出錯,說$ full_footer_path沒有定義。

當我將$ full_templates_path的值硬編碼到custom_layout_1.tpl中的#parse語句中時,一切正常,但對我來說這似乎是一種破解。

理想情況下,這應該是正確的理由,而不僅僅是因爲我使用了很多膠帶。

對於從自定義頁面佈局中實現包含模板文件的方式的任何建議?

回答

1

該問題可能是由於您的速度配置。

以下屬性應該是假的velocimacro.permissions.allow.inline.local.scope,如果你想訪問一個模板設置爲在另一個

+0

有沒有其他方法可以實現這一點?我不確定我想要對環境進行全球變革來解決這個單一問題。我想限制意想不到的後果。 – Tom

+1

這個[回覆](http://stackoverflow.com/a/5014956/669645)給一個類似的問題看起來像是你在做什麼之後 – Edd

0

您可能有誤輸入了你的問題,但不應該#set($full_footer_path = "$full_templates_path/footer.vm"有末閉括號...

#set($full_footer_path = "$full_templates_path/footer.vm") 

這也可能有助於包裹在大括號$full_templates_path從休息區分開來的文本,即${full_templates_path}

+0

是啊,感謝訪問的變量。錯字更正。 – Tom

+0

另外:大括號不是問題。相同的代碼在portal_normal.vm中可以很好地工作 – Tom

相關問題