1

我正在一个对 SEO 不友好的网站上工作。具体来说,header.tpl 会自动插入到每个页面中,无法根据页面内容更改它。即,类别 = 浴室还是类别 = 厨房等。

所以我需要一个 if/else 命令,但在这种情况下很难弄清楚,加上随之而来的变化。

在portfolio_category.php页面上的代码如下,需要根据vf_category改变的是parts/header.tpl(我可以创建Bathroomheader.tpl、Kitchensheader.tpl等让相关的tpl有相关的Title和Description标签页面)。

<?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_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。但这让我发疯。

在此先感谢,加里

4

1 回答 1

1

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

//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}
于 2012-12-17T08:04:28.060 回答