我只想知道如何从其他数据库中添加或链接类别和产品。新的数据库表字段都与现有的prestashop表非常相同。有什么帮助,暗示或任何有用的文章吗?
发布于 2015-08-22 08:41:41
如果将外部数据库“添加或链接”到Prestashop意味着让Prestashop直接连接到外部数据库,我建议不要这样做,因为需要更改Prestashop核心文件,使其与Prestashop的未来升级不兼容,从而失去了开源的主要优势之一。
相反,我的建议是外部数据库“同步”到Prestashop数据库。从外部数据库是否位于另一个系统的问题上看不清楚,您只是希望能够在预存储(目录模式)中看到相同的类别和产品,或者相反,您希望停止使用连接到外部数据库的应用程序,并开始使用Prestashop中的数据。
在第一个场景(活动外部数据库)中,最好的选择是编写一个脚本,将数据从外部数据库输入Prestashop数据库。如果两个数据库都类似,那么脚本应该非常简单。连接到两个数据库,查询外部数据库并插入Prestashop数据库,并进行任何必要的修改。该脚本可以由cron作业以所需的频率执行(例如,每天一次)。Prestashop必须处于目录模式,因此不能下订单(两个系统都不能修改数据,否则您将得到两组不同的数据)。
在第二种情况下,外部数据库不再活动,最好的方法是将数据迁移到Prestashop数据库。对于迁移,有两种方法:
1)将外部数据库导出为CSV文件,并使用prestashop管理中默认包含的导入工具(Advanced -> import )将其导入预Prestashop。这个导入工具允许您将来自外部数据库的字段分配到Prestashop数据库中的正确字段中,并且它处理Prestashop中其他表的所有依赖项。如果您不需要以任何方式转换您的外部数据,那么我将推荐这种方法。
2)创建一个读取外部数据库的脚本,执行可能需要的任何数据转换,然后将转换后的数据插入Prestashop数据库。这种方法更复杂,但它为您提供了在需要时转换数据的灵活性。您必须了解Prestashop中的所有表依赖项,以维护正确的DB完整性。这是我在将商店迁移到Prestashop时实现的方法,因为我们必须进行大量的数据转换,以充分利用Prestashop的功能,如分层导航、产品比较等。
答案是基于我将数据迁移到Prestashop的真实现场体验。希望能帮上忙。
发布于 2015-08-27 11:25:39
可以使用预prestashop站点中的脚本从外部db添加类别。为此,使用frontcontroller创建一个模块(用于cron作业或运行脚本),并在脚本中从外部db中选择类别,然后在类别和循环中循环创建预prestashop类别对象,并将类别字段放置到类别对象并调用类别保存方法。
public function initContent()
{
parent::initContent();
$temp_categs = array(); //
//fetch data into $temp_catgs from the external db with the help mysqli_connect or whatever the driver - never modify presta db settings - write php code for db connection to external db and fetch
//loop through the fetched categories
foreach($temp_categs as $categ){
$new_categ = new Category();
//set all the field values
$new_categ->name = $categ['name'];
$new_categ->id_parent = $categ['id_parent'];
$new_categ->active = true;
$new_categ->field2 = $categ['field2'];
$new_categ->field3 = $categ['field3'];
//save the category - a category with new id will be created in prestashop
$new_categ->save();
}
}
}
https://stackoverflow.com/questions/32093349
复制相似问题