簡體   English   中英

Drupal:如果是針對page.tpl.php的語句(取決於頁面部分)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM