我目前正在为一家艺术画廊开发一个在线销售艺术品的网站。我需要开发一些代码来收集和显示有关艺术家的信息(传记,邮件,电子邮件,展览日期,...)。我首先尝试使用制造商功能,只修改翻译,将“制造商”替换为“艺术家”,但我很快意识到我是有限的。我不需要将艺术家与其地址相关联,我需要额外的信息。问题是,我不知道什么是最好的方式来实现这一点,同时保持我的代码干净,并使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;
我应该让它成为一个模块,还是直接在核心类中添加艺术家模块和控制器?如果我这样做,我将不得不覆盖产品类。既然我不需要制造商,我应该重写制造商类吗?
发布于 2012-08-06 01:02:48
我在Prestashop forum上问了同样的问题,得到了很好的建议,如果有人有同样的问题,我会在这里总结。
没有办法修改核心类,但应该尽可能多地使用override。
后台功能
如< question.
Artist
class in overrides/classes
中所述,创建数据库表,方法是复制-粘贴ManufacturerCore
类,并使用manufacturer
替换提及的artist
,以及将附加字段指定为instance an overrides/controllers
类,并通过artist
overrides/controllers
>D18类替换提及manufacturer
,并添加id_artist
和artist_name
作为实例变量。修改以下函数,使产品与其艺术家链接:__construct
,在getProducts
getFields
的ArtistsAdmin
子类,以便后台可用于在后台添加/编辑选项卡(employees AdminTab
admin/tabs
-> -> admin/ajax.php
)admin/ajax.php
以便可以从back-officeProductsAdmin
in admin/tabs
中查询艺术家,以便用户可以在为artists选项卡添加/编辑徽标时选择艺术家,并将其复制到D40<中/code>并img/admin/artists.gif
Handle config/defines.inc.php中的图像文件夹:
define('_ARTI_DIR_',_PS_IMG_.'ar/');define('_PS_ARTI_IMG_DIR_',在img中_PS_IMG_DIR_.'ar/');
Crate ar文件夹并为everyone
设置写权限
前台功能(尚未测试,可能缺少一些信息):
使用一个名为getDistributorLink的函数进行
Override链接,该函数对getSupplierLink
Override工具进行建模,以更新generateHtaccess函数,以包括对供应商重定向进行建模的艺术家的重定向。我使用了3个下划线(___),其中制造商使用1个下划线(_),供应商使用2个下划线(__).
Theme文件(模板、css)来支持新的核心文件。
如果您想要在产品页面上显示艺术家,您还可以创建一个挂接extraRight或一个或多个产品页面挂接的模块。
https://stackoverflow.com/questions/11810760
复制相似问题