【问题标题】:How to work with Extension Builder in TYPO3?如何在 TYPO3 中使用 Extension Builder?
【发布时间】:2014-04-28 19:53:03
【问题描述】:

所以,我需要在 CMS 中做一个扩展,叫做 TYPO3。这里有一些关于这个扩展的信息:

“对于一个新的 TYPO3 6.1 网站,我们需要一个用于新闻稿的扩展(基于 ExtBase / Fluid),其中应包含:

  • 标题/说明
  • 文字
  • 最多 3 张图片(需要 1 张)
  • 列表视图的缩略图
  • 1 个 PDF 文件
  • 发布日期

目前实际上没有详细视图的设计,因此没有指向详细视图的链接。 所以,现在,请专注于前端列表视图。”

我以前从未使用过这个 CMS,所以我阅读了它并发现,我需要使用 Extension Builder 来创建这个扩展。所以,我已经下载并安装了它,并在 TYPO3 上为我的扩展注册了扩展密钥网站。但是当我尝试创建这个扩展时,我发现了很多问题和疑问。其中一些我已经解决了,但有些仍然没有解决。我在docs.typo3.org 中阅读了大量有关此扩展的信息仍然没有找到答案。所以,这里有这个问题:

  1. 我可以在一个模块中添加所有这些字段,还是应该为每个字段创建自己的模块?

  2. 我知道,我需要添加前端插件以在站点上显示此扩展程序,并添加后端模块以在管理面板中显示此扩展程序以提供编辑机会。但我不明白我应该使用什么确切的插件和确切的模块添加以及在哪里可以找到它?我需要使我的扩展程序完全可编辑,当然,在后端和前端我只需要我在后端添加的结果,没有任何编辑机会(在我的情况下,它应该是标题、文本、图像、PDF 文件和日期,正如我在这个问题的顶部所写的那样)。因此,在结果中,我应该能够在管理面板和站点 I 和所有站点上添加、编辑、删除等这些主题客人应该可以看到它。

  3. 在扩展生成器中仍然没有实现下载文件的功能,所以,据我了解,我需要自己将这个机会添加到我的扩展中,但我不知道我应该添加什么确切的代码以及在什么确切的文件。

  4. 我也遇到了一些日期格式问题。当我尝试在日期字段中添加一些日期时,我收到以下消息:

无法识别日期“2014-02-01”(格式为“Y-m-d\TH:i:sP”)

我试图在扩展文件中找到一些日期格式,但没有成功。

我是初级 php 开发人员,有 2 个月的开发经验(我几乎所有时间都在使用 HTML、CSS 和 Wordpress),所以对我来说,自己解决这个问题真的很难。我已经花了创建这个小扩展的一周并没有成功,所以你的帮助、建议和对我的问题的回答将对我非常有用:)

在此先感谢,并为我的英语不好感到抱歉。

【问题讨论】:

    标签: php typo3 extbase typo3-extensions


    【解决方案1】:

    第一次看到你的帖子我很惊讶,第二次我感到抱歉,第三次我想:“这家伙真勇敢!”于是我决定帮助你。

    正如您已经发现的那样:分机。 builder 只创建一个“框架”,您可以使用它来为您的分机添加额外的功能。 分机。 builder 使用 extbase 和流体创建扩展。因此,首先要了解 extabse 和 Fluid 的工作原理。重要的是要知道 extbase 是代码的“框架”,fluid 是模板引擎。

    Extbase 使用 oop 方法工作,因此请阅读面向对象编程的内容。 Extbase 还使用模型/视图/控制器(google it)和 CRUD(创建读取更新删除) 知道了这一点,然后回头看看你的分机,你会发现确实有一些类是由那里定义的: - 类/控制器 - 分类/领域/模型 - 资源/私有/模板(视图)

    您的模型将定义您的“数据”。分机中的每个对象。会有自己的模型。

    您的第一个问题: " 我可以在一个模块中添加所有这些字段,还是应该为每个字段创建自己的模块?" 是的,所有这些“领域”都属于同一个模型:新闻稿。

    您还需要 1 个控制器来处理模型的所有请求: 创建一个新的新闻稿,阅读(或列出/显示)它,更新它或删除它。 控制器如何从数据库中获取数据?使用所谓的存储库,可以在这里阅读: http://blog.typoplanet.de/2010/01/27/the-repository-and-query-object-of-extbase/

    控制器将处理数据流:这意味着如果你问他,控制器会给你所有的新闻稿,并将它发送到你的视图(模板) 它会在一个对象中为您提供此信息。 例如,如果您的控制器发出: $pressreleases (将通过例如:$this->view->assign('pressreleases', $pressreleases); 尝试在您的列表模板中添加 {pressreleases},您将获得一份不错的新闻稿对象列表和属性。

    一旦您理解了这一点,您就可以从您的对象中获取所有信息,并使用流体在您的视图中使用它。 http://wiki.typo3.org/Fluid

    有了这个,您通常可以了解一些关于 extabse 的工作原理,它如何获取数据(模型)如何从数据库(控制器和存储库)中检索数据以及它如何在前端(模板)中显示它带流体)

    你的第三个问题: 如果您知道 PDF 的存储位置(通常在 uploads/tx_yourextname/ 中),并且如果您从模板中的模型中获取属性(记住调试),您将看到 pdf 名称存储在数据库中并作为属性提供。 例如(如果您的对象在显示视图中称为新闻稿),您可以通过在流体中使用 {pressrelease.pdf} 来检索 PDF 名称。 将其放在 atag 中:src='uploads/tx_yourext/{pressrelease.pdf} ...将为您提供下载链接。

    4: 它准确地说明了它所说的内容:您给出的日期格式为 yyyy-mm-dd,但它的格式必须为 Y-m-d\TH:i:sP。 可能是因为您的财产“发布日期”是 DateTime 类型,而不是 Date 这是一个常见的问题,请在 stackOverflow 中寻找答案

    最后: 您的(前端)插件在您的 ext_localconf.php 和 ext_tables.php 文件中定义 基本上你可以在每个 TYPO3 插件中添加多个字体结尾插件。但在你的情况下,只有 1 就足够了: 1 将处理列表和显示请求。

    所以,改变一下我勇敢的朋友吧。我确实希望你能理解我写的东西,并且你会在使用 TYPO3 中找到乐趣(给它一个月或 452,这是一个陡峭但有益的学习曲​​线)

    【讨论】:

    • 我没有在这里找到我的答案,但是干得好......真的很有趣的答案,有很多值得学习的地方。谢谢;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-01
    • 1970-01-01
    • 2021-10-07
    • 2022-07-11
    相关资源
    最近更新 更多