Php 是否可以使用Drupal编写数据输入脚本?

Php 是否可以使用Drupal编写数据输入脚本?,php,python,drupal,data-entry,Php,Python,Drupal,Data Entry,我正计划在Drupal站点上放置一个商店的库存,我想知道是否有可能创建一个脚本(可能是python/php?)来使用CCK将数据自动输入Drupal?提前谢谢 CCK或其他,这只是一个格式良好的POST查询(大概),所以一定要这样做。 无论如何,你需要的与mac的答案非常相似: 在这种情况下,您不需要所有特殊的file_字段,但仍然需要插入可能具有的不同cck字段以及节点正文和标题的值。设置可以直接从数据库获取的值后,可以保存节点 如果直接连接到db,则需要使用与drupal相同的类型,或者在d

我正计划在Drupal站点上放置一个商店的库存,我想知道是否有可能创建一个脚本(可能是python/php?)来使用CCK将数据自动输入Drupal?提前谢谢

CCK或其他,这只是一个格式良好的POST查询(大概),所以一定要这样做。

无论如何,你需要的与mac的答案非常相似:

在这种情况下,您不需要所有特殊的file_字段,但仍然需要插入可能具有的不同cck字段以及节点正文和标题的值。设置可以直接从数据库获取的值后,可以保存节点


如果直接连接到db,则需要使用与drupal相同的类型,或者在drupal api之外进行连接。如果您确实使用了drupal API,请看一看,有两个drupal模块专门用于不同的外部(大规模)导入场景-检查选项/比较


如果您有非常特殊的需求,您可以编写自己的模块,使用现有模块和(+1)作为指导,指导如何在忽略概括的情况下进行实际插入。

Henrik和Googletorp已经提出了很多很好的建议

<> P>设计中考虑的几个附加因素:

  • 你是要做一个全面的电子商店(大概是通过实现的),还是仅仅设置一个节点视图,只是为了向站点访问者展示库存
  • 你们打算进口多少产品
  • 你打算多久重新进口一次
  • 我肯定会排除的解决方案:

    • 帖子:正如Google Torp评论的那样,这将过于复杂
    • 外部脚本:您无法真正避免使用drupal API(除非您喜欢危险地生活和/或浪费时间),无论它们是核心API还是ubercart API。数据分散在几个表中,插入节点时会触发大量挂钩。唯一的例外是,如果您想先编写一个执行引导的PHP脚本(请参阅index.PHP或xmlrpc.PHP的结构以了解其工作原理),但在这种情况下,我宁愿选择一个模块:更加优雅、可移植、可维护
    我支持的解决方案:

    • 完成您自己的模块正如Google Torp所指出的,我给出了一些关于如何在中添加CCK字段的示例代码
    • 是的,就是。。。是我唯一相信的
    然而,我学到的同样重要的是,为导入选择合适的数据源。以下是我的看法:

    • 直接从数据库读取:只有当您必须一次性导入内容,并且导出应用程序的数据库模式足够简单,可以构建合理的查询时,才是好的。软件的变化和发展,数据库模式也随之变化。如果您发现自己需要在两个月后重新导入,而您的其他应用程序的架构已更改,则必须更改代码、更改测试等
    • 使用XML文件:如果您的原始应用程序可以以这种格式导出,那么使用PHP的SimpleXML和Xpath+PHP类型转换,在几分钟内以您想要的格式获取数据真是轻而易举。这种方法唯一的缺点是依赖于。。。文件夹。因此,如果您需要定期进行无人和自动导入,那么预见可能发生的所有问题(文件系统上的错误权限、损坏的文件、错误的编码…)并采取相应的对策会有点困难。反之亦然,我非常喜欢这种方法,因为当我知道有人会一直监督进口过程,并且可以在出现问题时进行干预
    • Webservice:如果我必须以自动和周期性的方式导入,这是我最喜欢的。最大的优势是两个应用程序相互“对话”,并公开它们的一些业务逻辑,这样您就可以实际进行这样的会话:“嘿,我需要所有上周以来价格发生变化的产品”-“给您,它们应该是127,分为三类,您复制了吗?”-“哦,是的。。。所有这些都清晰明了:127个项目和3个类别!“。这简化了许多捕获错误和异常的过程。当Drupal作为Web服务使用者和提供者来设计框时,您还必须在另一个应用程序上实现Web服务,这可能很难,也可能不难:这完全取决于导出应用程序

    HTH!

    如果您的源数据在MySQL中,我将查看模块以创建内容。以下是其项目页面的摘录:

    …提供了一个灵活的框架,用于将内容从其他来源迁移到Drupal(例如,将网站从另一个CMS转换为Drupal时)。开箱即用,包括对创建核心Drupal对象(如节点、用户、文件、术语和注释)的支持—它可以轻松扩展以迁移其他类型的内容。使用捆绑的web界面(迁移UI模块)或包含的Drush命令(强烈推荐)导入和回滚内容


    POST在这里不是一种方式,使用drupal表单标记等,也不会那么容易。如果您的代码实际将表单加载到内存中,我不明白为什么表单标记会带来任何问题。对于Mechanize、Nokogiri等工具,这应该不会太难(如果您不喜欢Ruby,您可以自己寻找PHP等价物)+1在drupal.org上进行一次访问总是值得的