imarc/craft-sheetsync

允许您将CSV、XLSX和其他电子表格文件导入Craft部分作为条目。

安装: 573

依赖项: 0

建议者: 0

安全性: 0

星级: 0

关注者: 20

分支: 0

开放问题: 0

类型:craft-plugin

0.13.13 2021-05-26 15:42 UTC

README

允许您将电子表格文件导入/同步到Craft部分作为条目。

配置

应在craft/config/sheet-sync.php中配置设置。默认设置组合在一起,其他设置按同步名称分组

return [
    'default' => [
        // default sync settings
    ],
    'name-of-a-sync' => [
        // sync specific settings
    ],
];

有效设置

  • section - 您希望同步到的CMS部分的句柄。
  • filename - 您希望同步的文件名称(如果同步调用时未指定。)
  • entry_type_id(可选)- 如果部分内有多个条目类型,这将允许您指定用于新条目的类型。如果部分内只有一个条目类型,则不需要指定此参数。
  • find - 这是一个闭包(或可调用的)函数,它接受两个参数,$criteria$row,它修改 $criteria 以检索对应于 $row 的相应条目(如果存在的话)。
  • slug - 这是一个字符串(字段的句柄)或闭包(或可调用的)。如果它是一个字符串,那么插件将使用该字段来生成条目的slug。如果它是一个闭包,则将当前条目传递给它,并期望返回一个有效的slug。
  • fields - 请参阅下一节。
  • authorId(默认:1)- 将创建条目归因于的ID。
  • delimiterenclosureescape(默认:',' '"' 和 '\') - 这些将直接传递给 fgetcsv()
  • reader(可选)- 允许您覆盖用于读取文件的类。例如,您可能希望将其设置为 \imarc\sheetsync\services\PlainCsv,以使用仅使用 fgetcsv() 而不是 phpoffice/phpspreadsheet 的性能更好的读取器。
  • headers(可选)- 允许您覆盖如何确定工作表的标题。默认情况下,插件将使用第一行,但您也可以返回标题的静态数组,或者可以编写一个函数,该函数接受 $reader 作为参数并读取(和/或跳过)多行。
  • cleanUpOnKey(可选)- 当设置时,将删除当前工作表中不存在的具有此键的任何条目。
  • minImport(默认:0)- 只有在更新或创建的条目数量超过此数值时才会运行清理。

字段

字段配置为关联数组。键应该是Craft字段句柄的名称。值可以是字符串(CSV文件列标题之一),或闭包(或可调用的)函数,该函数接受当前行(作为关联数组)和同步实例,并应返回该字段的值。这些闭包在填充其他内容之后调用,因此如果需要进行交叉引用,可以这样做。例如,这将根据当前行的 'Assistant Name' 值在当前部分中搜索用户并创建Craft关系。

    // ...
    'fields' => [
        // ...
        'someUsers' => function($row, $sync) {
            $criteria = craft()->elements->getCriteria(ElementType::Entry);
            $criteria->sectionId = $sync->section->id;
            $criteria->type = $sync->entry_type_id;
            $criteria->name = $row['Assistant Name'];
            $entries = $criteria->find();

            if (count($entries)) {
                return [(int) (current($entries)->id)];

            } else {
                return null;
            }
        },
    ],
    // ...
内置字段

您还可以覆盖以下所有内置字段。在大多数情况下,您只需要设置 idtitle。重要的是要注意,对于日期字段,Craft期望一个 DateTime 实例,而不仅仅是数值时间戳或字符串。

  • authorId - 整数
  • dateCreated - DateTime
  • dateUpdated - DateTime
  • enabled - 布尔型
  • enabledForSite - 布尔型 - 通常当您提供 siteId 值时,此选项会自动设置
  • expiryDate - DateTime
  • id - 整数
  • postDate - DateTime
  • revisionNotes - 字符串
  • slug - 字符串
  • title - 字符串

以下是在 config/sheet-sync.php 文件中处理日期字段的示例

    'expiryDate' => function($row) {
        return new DateTime($row['expiration']);
    },

记住,DateTime 构造函数也可以处理各种字符串,例如 '下个月'、'+90 天' 等。

用法

最常见的方法是通过 Craft 控制面板中的工具,选择“表格导入”来访问它。从那里,您可以选择要运行同步的同步名称,并且(可选)上传一个 CSV 文件。

通过命令行

要运行同步,首先导航到包含 craft 的 /var/www/ 文件夹。然后

$ php craft sheet-sync/default/sync --name='name-of-a-sync'

您可以(可选)指定要使用特定文件

$ php craft sheet-sync/default/sync --name='name-of-a-sync' --file=path/to/file