2

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

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

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

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

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

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

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

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

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

无法识别日期“2014-02-01”(对于格式“Ymd\TH:i:sP”)

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

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

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

4

1 回答 1

9

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

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

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

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

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

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

控制器将处理数据流:这意味着如果你问他,控制器会给你所有的新闻稿,并将它发送到你的视图(模板)它会在一个对象中给你这个信息。例如,如果您的控制器发送: $pressreleases (将通过 for ex: $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} ... 会给你一个下载链接。

4the:它准确地说明了它所说的内容:您给出了一个格式为 yyyy-mm-dd 的日期,但它需要采用 Ymd\TH:i:sP 格式。可能是因为您的属性“发布日期”是 DateTime 类型,而不是 Date 这是一个常见问题,请在 stackOverflow 中查找答案

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

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

于 2014-03-21T19:48:34.377 回答