glowpointzero/typo3-site-operator

此包已被弃用且不再维护。未建议替代包。

安装: 24

依赖项: 0

建议者: 0

安全: 0

星标: 1

关注者: 1

分支: 0

开放问题: 2

类型:typo3-cms-extension

1.0.0.1 2022-05-26 13:50 UTC

This package is auto-updated.

Last update: 2022-05-26 13:55:24 UTC


README

“站点操作员”是一个实用扩展,它帮助您配置和运行您的TYPO3实例。它使得一些繁琐的任务更加容易和有趣。

! 此包不再维护 !

由于缺乏投资于其开发和公众兴趣的宝贵时间,此包将不再接收更新。

功能

(详见以下详细信息)

  • 常见值分布和静态资源生成:
    • 将值(如id、颜色、路径等)分布到它们所需的任何应用层,只在单一位置定义它们!您可能需要在'manifest.json'文件中定义颜色定义,但当然,这些值同样需要在您的(s)css中。
    • 通常生成“静态资源”,如图像或任何基于文本的文件(见上文)。因此,可以预先渲染favicon,也可以是SVG或TypoScript文件。
  • 定时任务自动设置将预配置的调度任务确保在部署/安装时安装。
  • 符号链接器将符号链接到任何配置的文件/目录。可能存在多个源路径,用户将交互式选择。
  • TCA构建器提供了一种基于对象/链式的方法来以非常舒适、透明和链式的方式创建您模型的TCAs。
  • 使用易于维护和透明声明的配置进行“站点检查”的简单方式。
  • 以最简单的方式设置HTML电子邮件消息。通过Fluid渲染,包括任何资产,如图像和css。
  • 自动TypoScript模板设置消除了在您的站点根页面上创建TypoScript模板记录的需求。它会自动包含来自您的站点包中的那些。如果您愿意,它甚至尊重当前的应用程序上下文。

查看文档目录中的示例。这些示例将立即使集成者/开发者受益。

设置

  1. 要求包 composer require glowpointzero/typo3-site-operator

  2. 在您的 AdditionalConfiguration.php 中,通过调用 \Glowpointzero\SiteOperator\ProjectInstance::initialize('my_site_package'); 初始化您的TYPO3项目实例。这将

    • 由TypoScript数据提供程序钩子使用(见下文)
    • 使您能够通过检索当前站点包(ProjectInstance::getSitePackageKey())从设置中删除静态值
  3. 当提到“站点运营商配置”(config.json)时,它指的是一个json文件,该文件应位于'./config/typo3-site-operator/config.json'下。如果在此路径下未找到配置,还会检查以下路径

    • ./config/typo3-site-operator.json
    • ./typo3-site-operator.json
    • ./web/typo3conf/typo3-site-operator.json

    (假设当前目录是您的项目目录,而web是您的公开目录)

    运行站点运营商命令后,您将被告知是否希望创建此文件。

    您可以按任何您喜欢的样子分割配置,然后在主'config.json'的'includes'部分中引用所有单独的配置文件。

功能

公共值的分布/生成静态资源

  • 将基于文本的值在整个实例中分布到任意应用层(例如,将颜色值分配给XML或TS常量作为PWA主题的参数,以及分配到SCSS文件)。您甚至可以预先生成SVG的变体。
  • 预先生成静态图像(例如,favicon)。请参阅文档目录中的示例

如何操作

  • config.json中扩展generatedResources部分(对于基于文本的资源生成,也扩展constants
    (...)
    
    "constants": {
      "foo": {
          "bar": "baz"
      }
    },
    "generatedResources": {
        "web/typo3conf/(...)/pregenerated-constants.typoscript": {
          "generator": "text",
          "configuration": {
            "source": "web/typo3conf/(...)/pregenerated-constants.typoscript.dist"
          }
        },
        "web/(...)/prerendered.png": {
          "generator": "image",
            "configuration": {
              "source": "web/(...)/source-image.jpg",
              "parameters": {
                "colorspace": "sRGB",
                "resize": "250x250"
              }
            }
        }
    }
    
    (...)
    example-constants.typoscript.dist
      site.shared.barValue = [[typo3-site-operator:constants/foo/bar]]
    

运行./vendor/bin/typo3cms operator:generateStaticResources以处理generatedResources配置。

计划任务自动设置

定义任意数量的计划任务,这些任务应在安装您的站点时执行(需要typo3/cms-scheduler)。

如何操作

  • 创建一个简单的PHP文件,返回任务对象的数组(请参阅文档目录中的示例)。
  • config.jsonscheduledTasks部分下引用您的文件
    "scheduledTasksSourcePaths": [
      "config/ScheduledTasks.php"
    ],
  • 运行./vendor/bin/typo3cms operator:installScheduledTasks。您可以自动执行此操作(例如,通过composer),因为任务注册过程将始终检查是否已注册具有相同类的任务,以防止重复。

符号链接器

symlink命令将接受站点运营商配置中symlinks的任何目标路径,并将其尝试链接到其源。如果定义了多个源,用户将被提示选择一个要链接的源。例如配置(来自“文档”目录)

{
  "symlinks": {
    "web/typo3conf/AdditionalConfiguration.php": {
      "source": "config/my/externalized/AdditionalConfiguration.php"
    },
    "web/fileadmin/linked_directory_selectable_by_user": {
      "sources": [
        "some/directory",
        "/another/path/on/your-system",
        "/yet-another/path/on/your-system"
      ]
    }
  }
}

具有发声链式方法的TCA构建器

TCA构建器使用简单的方法提供舒适的TCA规范体验,允许链式操作,使用易于理解的语言。此外,所有属性标签的路径都自动生成,只需在正确的位置提供即可。

请注意,目前,这个功能是为满足新模型的需求而设计的,但还不是(尚未)用于扩展现有的TCA定义。

如何操作

Configuration/TCA/MyModel.php

$tca = TcaBuilder::create(
    'my_extension',
    'MyModel',
    '[optional table name override]',
    '[optional xlf path override]'
);
$tca
  ->setDeletedColumnName('deleted')
  ->setDisabledColumnName('hidden')
  ->addDefaultSorting('start_date_time', 'DESC')
  
  ->addDateTimeColumn('mydatetime')
      ->andOverruleConfigurationWith([
            (your overrides here)
      ])
    ->toPalette('datesAndTimes')
    ->toTab('advanced')
  
  ->addSingleLineInputColumn('title')
    ->toPalette('title')
    ->toTab('general')

$myTca = $tca->toArray();
// You can still customize the TCA here, if needed
// $myTca['columns'] ....

return $myTca;
  • 如果在TcaBuilder::create调用中未覆盖,则将尝试从EXT:my_extension/Resources/Private/Language/Model/MyModel.xlf:[小驼峰式列名]检索标签。
  • 如果在TcaBuilder::create调用中未覆盖,则将尝试从EXT:my_extension/Resources/Private/Language/Model/MyModel.xlf:propertyGroup.[画布或标签ID]检索分组标签(标签页和画布)。

烟雾测试

烟雾测试通过operator:siteCheckup命令执行,该命令从您的站点操作员配置中的相应配置键('siteCheckup')获取任务。此包包含一些内置的测试类(称为“处理器”)。

  • HTTP响应处理器(检查返回头内容)
  • 计划任务处理器(基本上检查cron作业是否正在运行)
  • XML站点地图处理器(解析所有可用站点的给定站点地图)
  • 变量处理器(简单的变量匹配测试以验证实例的配置等)。

配置这些测试非常简单,甚至引入您自己的处理器也非常简单!查看现有的处理器和配置。

  • 请注意,每个标准(例如,{"statusCode": "404"})都必须通过测试,才能使整个测试通过。
  • 以正斜杠('/')开头的比较值将被视为正则表达式模式。

示例

{
  siteCheckup: {
    "404-page returns 404 status and 'noindex, nofollow'": {
      "processor": "\\Glowpointzero\\SiteOperator\\SiteCheckup\\Processors\\HttpResponseProcessor",
      "arguments": {
        "location": "foo/bar/shouldnt-exist",
        "successCriteria": [
          {"statusCode": "404"},
          {"content": "/<meta name=\"robots\" content=\"noindex(,nofollow)?\" \\/>/i"}
        ]
      }
    }
  }
}

HTML & 纯文本电子邮件

用3-4行代码设置HTML电子邮件。通过常规TYPO3 FluidEmail 核心类发送的任何电子邮件都将扩展,使其超级简单地将图像和CSS嵌入其中。所提到的示例甚至显示了这有多简单:

传递的HTML内容(setBody(...))将自动转换为文本,重新格式化常用的HTML结构(例如,<tr>元素变成单独的行)。

两点重要说明

  1. 安装此扩展将扩展核心的'MailMessage'类,允许将任何内容渲染为混合(纯文本/HTML)内容。如果没有提供模板路径,则使用核心的默认行为!
  2. Georg Ringer提出的更彻底的方法来提供多部分电子邮件消息的倡议目前正在路上,并且很可能会随TYPO3 10 LTS(作为扩展提供TYPO3 9 LTS)一起发布: https://github.com/georgringer/templatedMail 因此,站点操作员的此功能可能在某个时候变得过时。但是,如果您仍然暂时使用它,您不会丢失很多代码,对吧?

如何做

有关参考和可用变量的信息,请参阅文档目录中的Fluid示例

  1. 扩展AdditionalConfiguration.php

    \Glowpointzero\SiteOperator\Configuration::enableAdvancedFluidEmails();
    
    EmailMessage::setDefaultCssFilePath('EXT:my_site_package/Resources/Public/Css/email.css');
    EmailMessage::addDefaultEmbeddable('logo', 'EXT:my_site_package/Resources/Public/Images/email-logo.png');

    可以使用第三个参数将嵌入式和CSS可选地限制在特定站点(在多站点设置中)

    EmailMessage::addDefaultEmbeddable('logo', 'EXT:my_site_package/Resources/Public/Images/email-logo-site-x.png', 'site-foo');
    EmailMessage::setDefaultCssFilePath('EXT:.../styles-site-foo.css', 'site-foo');
  2. 嵌入式和CSS如下包含在Fluid模板中

    (...)
    <style type="text/css">{css}</style>
    (...)
       <img src="{embeddables.logo}" />
    (...)
       <strong>{subject}</strong><br />
       {content}
    (...)

模板化

此包包含一个非常简单的模板、布局和部分设置,包括CSS的渲染/包含。它替换了“默认”消息以及用于警报等的“系统”消息模板。当然可以覆盖模板化。查看“Resources/Public/”。

覆盖默认

使用API方法可以在EmailMessage实例上覆盖或扩展任何默认设置/资产。

  • setCssFilePath
  • addEmbeddable

示例

// We're automatically getting an instance of 'EmailMessage'
// here, as the core's 'FluidEmail' class has been xclassed
// by our 'enableAdvancedFluidEmails' call in configuration.
$mailMessage = GeneralUtility::makeInstance(FluidEmail::class);
$mailMessage->setCssFilePath('path-that-overrides/default-styles.css');

自动TypoScript模板设置

自动包含您的网站包中的setup.typoscript以及constants.typoscript,无需数据库TS模板记录。这些资源是上下文相关的,允许根据当前环境进行不同的设置(见下文)。

如何操作

AdditionalConfiguration.php

\Glowpointzero\SiteOperator\DataProvider\TemplateDataProviderHook::registerHook();

完成!

假设我们处于应用程序上下文“Development/Foo”并且您之前调用过ProjectInstance::initialize('my_site_package');,这将找到并包含这些路径列表中找到的第一个文件

  • EXT:my_site_package/Configuration/TypoScript/setup.development.foo.typoscript
  • EXT:my_site_package/Configuration/TypoScript/setup.development.typoscript
  • EXT:my_site_package/Configuration/TypoScript/setup.typoscript

在相同路径中找到的常量也将相应地包含。