为蝉知CMS添加产品属性字段

这几天有点时间,为了不让自己闲着,就寻思这折腾一些简单的东西。所以我就为蝉知CMS的产品模块添加了一个应用属性字段。写下本文,以锻炼一下自己的思路。

需求分析

每种产品都要满足特定的应用。我们当然可以将应用写在正文里,但我更将其放在单独的字段里,以便归类和筛选。

这里我以蝉知7.3为例,进行说明。

我们先看看最终效果。

后台产品添加及产品编辑页面,效果如下图。

前台产品展示页面,效果如下图。

增加数据库字段

首先,我们在数据库中为产品表eps_product添加一个application字段。

进入MySQL,执行以下语句。

ALTER TABLE `cz`.`eps_product` ADD COLUMN `application` VARCHAR(500);

以上假设网站对应的数据库名称为cz

修改前台产品展示页面

假设我们要将应用信息放到品牌之前,则打开cz\system\template\default\product\view.html.php,找到下图的位置。

插入以下PHP代码。

{if($product->application)}
	{$attributeHtml .= "
<li id='applicationItem'><span class='meta-name'>" . $lang->product->application . "</span>"}
	{$attributeHtml .= "<span class='meta-value'>" . $product->application . "</small></span></li>

"}
{/if}

修改后台产品管理页面

先处理产品添加页面,打开cz\system\module\product\view\create.html.php,找到以下代码。

将其替换为下面的代码。

<tr>
  <th rowspan='5'><?php echo $lang->product->attribute?></th>
  <td colspan='4'>
	<div class="row form-group">
	  <div class='col-sm-12 col-md-12'>
		<div class='input-group'>
		  <span class='input-group-addon'><?php echo $lang->product->application;?></span>
		  <?php echo html::input('application', '', "class='form-control'");?>
		</div>
	  </div>
	</div>
  </td>
</tr>
<tr>
  <td colspan='2'>
	<div class="row form-group">
	  <div class='col-sm-6 col-md-6'>
		<div class='input-group'>
		  <span class='input-group-addon'><?php echo $lang->product->brand;?></span>
		  <?php echo html::input('brand', '', "class='form-control'");?>
		</div>
	  </div>
	  <div class='col-sm-6 col-md-6'>
		<div class='input-group'>
		  <span class='input-group-addon'><?php echo $lang->product->model;?></span>
		  <?php echo html::input('model', '', "class='form-control'");?>
		</div>
	  </div>
	</div>
  </td>
</tr>

接着处理产品编辑页面。打开cz\system\module\product\view\edit.html.php,找到以下代码。

将其替换为下面的代码。

<tr>
  <th rowspan='5'><?php echo $lang->product->attribute?></th>
  <td colspan='2'>
	<div class="row form-group">
	  <div class='col-sm-12 col-md-12'>
		<div class='input-group'>
		  <span class='input-group-addon'><?php echo $lang->product->application;?></span>
		  <?php echo html::input('application', $product->application, "class='form-control'");?>
		</div>
	  </div>
	</div>
  </td>
</tr>
<tr>
  <td colspan='2'>
	<div class="row form-group">
	  <div class='col-sm-6 col-md-6'>
		<div class='input-group'>
		  <span class='input-group-addon'><?php echo $lang->product->brand;?></span>
		  <?php echo html::input('brand', $product->brand, "class='form-control'");?>
		</div>
	  </div>
	  <div class='col-sm-6 col-md-6'>
		<div class='input-group'>
		  <span class='input-group-addon'><?php echo $lang->product->model;?></span>
		  <?php echo html::input('model', $product->model, "class='form-control'");?>
		</div>
	  </div>
	</div>
  </td>
</tr>

可以看出,修改产品添加及产品编辑页面的代码,几乎是相同的。

还要注意,表头“产品属性”rowspan=’4′被改为rowspan=’5‘,因为我们在其右侧增加了一行属性。但是,这个修改并不会生效,原因是cz\system\module\product\js\common.js里有一处会修改此值,如下图。

按上图中修改标记的两个数值即可。

接着处理语言标记。打开cz\system\module\product\lang\zh-cn.php,找到以下代码。

“品牌”一行上方添加如下一行。

$lang->product->application      = '应用';

这一行的位置当然是无所谓的,但为了与页面顺序一致,就放到“品牌”上方了。

如法炮制,也可以为繁体中文及英文的配置文件添加相应的标记。这里不再赘述。

更多的话

为了写作本文,我用了差不多2个小时,其中有大约一般时间用于截图。

上面一些截图的标注用了红色,似乎不好与代码的着色进行区分,但我也不想花时间去修改了。