IF / ELSE用于header.tpl

时间:2012-12-17 01:44:39

标签: php if-statement smarty

我正在开发一个不适合SEO的网站。具体来说,header.tpl会自动插入到每个页面中,没有选项可以根据页面内容进行更改。即,类别=浴室或类别=厨房等

所以我需要一个if / else命令,但在这个实例中无法搞清楚,加上随之而来的变化。

portfolio_category.php页面上的代码如下,基于vf_category需要更改的是parts / header.tpl(我可以创建Bathroomheader.tpl,Kitchensheader.tpl等,以便相关的tpl具有相关的标题和页面的描述标签)。

<?php
$vc_root_friendly = '.'; 
$vc_root_site = '.'; 
include_once("$vc_root_site/config.php");

include_once("$vc_includes_folder/IT.php");
$template_body = new HTML_Template_IT();
$template_body->loadTemplateFile("tpl_portfolio_category.html");

include_once("$vc_includes_folder/images.php");

if(!isset($_REQUEST['vf_category'])){
header("location:portfolio.php");
die();
}

//Show header
$template_header = new HTML_Template_IT();
$template_header->loadTemplateFile("parts/header.tpl",true,false);
$template_body->setVariable('header', $template_header->get());

//Show footer
$template_footer = new HTML_Template_IT();
$template_footer->loadTemplateFile("parts/footer.tpl",true,false);
$template_body->setVariable('footer', $template_footer->get());


$template_body->setVariable("image_category", $_REQUEST['vf_category']);

//Select photos for this category
etc.

使事情变得复杂,上面的代码中引用了另一个页面:

tpl_portfolio_category.html

此页面也有自己的header.tpl include:

<? include_once 'parts/header.tpl'; ?>
{header} 
<table width="100%" cellspacing="0" cellpadding="0" border="0">
<tr> 
<td  class="main"><h1><span class="firstLetter">{image_category}</span></h1>
  <p>
  </p>
  <table height="89" border="0" align="center" cellpadding="0" cellspacing="0">
    <tr> 
      <td colspan="7">&nbsp;</td>
    </tr>
    <!-- BEGIN block_thumb -->
    <tr> 
      <td width='180' height="120" background="./images/thumb-bg.gif"> <div             

align="center">{thumb1}</div></td>
      <td width="10">&nbsp;</td>
      <td width='180' background="./images/thumb-bg.gif"> <div align="center">{thumb2}    

</div></td>
      <td width="10">&nbsp;</td>
      <td width='180' background="./images/thumb-bg.gif"> <div align="center">{thumb3}

</div></td>
      <td width="10">&nbsp;</td>

    <td width='180' background="./images/thumb-bg.gif"> <div align="center">{thumb4}  
  </div></td>
    </tr>
    <tr valign="bottom"> 
      <td height="3"></td>
      <td height="3"></td>
      <td height="3"></td>
      <td height="3"></td>
      <td height="3"></td>
      <td height="3"></td>
      <td height="3"></td>
    </tr>
    <!-- END block_thumb -->
  </table>
  <br> 
  <img src="images/spacer.gif"></td>
  </tr>
  </table>
  {footer}

任何指导将不胜感激!我只是想根据从数据库中提取的vf_category将parts / header.tpl更改为parts / Bathroomheader.tpl或parts / Kitchenheader.tpl。但它让我疯狂。

提前致谢, 加里

1 个答案:

答案 0 :(得分:1)

有几种方法可以做到这一点,但为了尽量减少您要更改的文件数量,我建议您: a)从数据库中提取变量并将其分配给第一个php文件中的smarty,用于标题和正文:

//Assuming you have retrieved $vf_category from your database;
$template_header->setVariable('vf_category', $vf_category);
$template_body->setVariable('vf_category', $vf_category);

b)编辑文件header.tpl并在顶部附加以下代码:

{if 'vf_category' == 'some_value'}
    {include file="parts/Kitchenheader.tpl"};
{elseif 'vf_category' == 'other_value'}
    {include file="parts/Bathroomheader.tpl"};
{else}
    //the rest of the header.tpl code goes here
{/if}