Prestashop中类似制造商的功能的代码结构选择

时间:2012-08-04 17:52:40

标签: php prestashop

我目前正在为一家在线销售艺术品的艺术画廊开发一个网站。我需要开发一些代码来收集和显示有关艺术家的信息(生物,邮件,电子邮件,展览日期......)。我首先尝试使用制造商的功能,只调整翻译,用“艺术家”取代“制造商”,但我很快意识到我是有限的。我不需要将艺术家与其地址联系起来,我需要其他信息。问题是我不知道实现这个的最佳方法是什么,同时保持我的代码干净并使prestashop升级变得容易。

我想我需要制作新的数据库表,如下(展览日期,尚未实施):

CREATE TABLE `artist` (
  `id_artist` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(64) NOT NULL,
  `date_add` datetime NOT NULL,
  `date_upd` datetime NOT NULL,
  `active` tinyint(4) NOT NULL DEFAULT '0',
  `email` varchar(255) DEFAULT NULL,
  `phone` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id_artist`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;


CREATE TABLE `artist_lang` (
  `id_artist` int(11) NOT NULL,
  `id_lang` int(11) NOT NULL,
  `name` varchar(255) NOT NULL,
  `description` text NOT NULL,
  `short_description` text NOT NULL,
  `meta_title` varchar(128) NOT NULL,
  `meta_keywords` varchar(255) NOT NULL,
  `meta_description` varchar(255) NOT NULL,
  PRIMARY KEY (`id_artist`,`id_lang`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

我应该将其作为模块,还是直接在核心类中添加艺术家模块和控制器?如果我这样做,我将不得不覆盖产品类。由于我不需要制造商,我应该覆盖制造商类吗?

1 个答案:

答案 0 :(得分:0)

我在Prestashop forum上问了同样的问题并得到了很好的建议,如果有人遇到同样的问题,我会在这里总结一下。

无法修改核心类,但应尽可能使用覆盖。


后台职能

  • 创建数据库表,如问题中所述。
  • Artist中创建一个overrides/classes课程,方法是复制粘贴ManufacturerCore课程,并用manufacturer替换artist的提及,并指定其他内容字段作为实例变量。
  • ArtistController中创建overrides/controllers课程,并用manufacturer
  • 替换artist的提及
  • 覆盖Product类,并添加id_artistartist_name作为实例变量。修改以下功能,以便将产品与其艺术家相关联:__constructgetFieldsgetProducts
  • ArtistsAdmin中创建AdminTab admin/tabs的子类,以便后台可用于添加新/编辑艺术家
  • 启用后台办公室中的选项卡(员工 - >标签 - >添加新)
  • 修改admin/ajax.php,以便艺术家可以成为后台的查询
  • 修改ProductsAdmin中的admin/tabs,以便用户在添加/修改产品时可以选择艺术家
  • 为艺术家标签创建徽标,并将其复制到img/admin/artist.gifimg/admin/artists.gif
  • 处理config/defines.inc.php中的图像文件夹:

    定义(' _ARTI_DIR _',_PS_IMG _。' ar /'); 定义(' _PS_ARTI_IMG_DIR _',_PS_IMG_DIR _。' ar /');

  • ar中创建img文件夹并为所有人设置写入权限

前台办公室功能(尚未测试,可能缺少一些信息):

  • 使用名为getDistributorLink的函数覆盖链接,该函数为getSupplierLink
  • 建模
  • 覆盖工具以更新generateHtaccess函数,以包含为供应商重定向建模的艺术家的重定向。我使用了3个下划线(___),其中制造商使用1个下划线(_),供应商使用2个下划线(__)。
  • 支持新核心文件的主题文件(模板,css)。
  • 如果要在产品页面上显示艺术家,您还可以创建一个挂钩extraRight或一个或多个产品页面挂钩的模块。