[英]Drupal: If statement for page.tpl.php (Depending on page section)
我想使用if語句選擇具有<body class="section-category">
特定頁面,並僅輸出那些頁面的自定義內容。
我的PHP不太好,我希望這是一個非常簡單的任務。 誰能給我小費?
我不會檢查是否存在某種身體類別。 這些類僅是其他if-else邏輯的結果,可以輕松地覆蓋或更改它們,從而破壞您的頁面模板。 最好檢查這些類所基於的值。 如果您是我,我將嘗試弄清楚如何生成此主體類並重新使用該代碼。
例如,如果您主題的template.php執行以下操作:
$body_classes[] = 'section-' . form_clean_id(arg(0));
然后,將其放在我的template.php中:
<?php if (form_clean_id(arg(0)) == 'category'): ?>
// Do fancy stuff!
<?php endif; ?>
我將研究諸如Context或Panels之類的模塊來執行此操作-從長遠來看,它將比為它編寫代碼更好。
聽起來好像您想要某些頁面可用的標志; 您可以閱讀並根據主題采取行動的一種。
在template.php中:
function YOURTHEME_preprocess_page(&$vars) { //Many themes already have this function implemented
if (stripos($vars['foo-bar'], 'section')) {
$vars['is_section'] = TRUE;
}
else {
$vars['is_section'] = FALSE;
}
}
然后在您的page.tpl.php中
<?php if ($is_section): ?>
<p>I am in a section</p>
<?php endif; ?>
這樣,您可以將邏輯所屬的位置保留在預處理器中。 而且您將邏輯排除在模板之外,而模板肯定不屬於邏輯! if (stripos($vars['foo-bar'], 'section')) {
最有可能變得更聰明,如果在那里執行var_dump($vars)
,所有可用變量都會在屏幕上轉儲(瀏覽器)。 我敢肯定,您會找到一個可以檢查的變量,它比body類的“模糊性”要小。 畢竟:該類僅用於一件事:在正文標簽中用作類。 而不是用於檢查您是否在某個部分中。 您也可以在那里找到完整的Drupal,因此您甚至可以使用模塊(例如,本節)提供的任何功能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.