我想将oembed标签放入TYPO3的ckeditor RTE中.这样我想把Instagram,facebook或twitter等社交帖子放到一些新闻文章中(在某些文本的中间).
为此,我已经激活了ckeditor的嵌入插件并将oembed标签processing放入allowedTags.我还在常量中定义了oembed标签styles.content.allowTags.
在这里我的yaml:
imports:
- { resource: "EXT:rte_ckeditor/Configuration/RTE/Processing.yaml" }
- { resource: "EXT:rte_ckeditor/Configuration/RTE/Editor/Base.yaml" }
- { resource: "EXT:rte_ckeditor/Configuration/RTE/Editor/Plugins.yaml" }
editor:
config:
contentsCss: "EXT:mysitepackage/Resources/Public/Css/rte.css"
stylesSet:
- { name: "Lead", element: "p", attributes: { 'class': 'lead' } }
toolbarGroups:
- { name: styles, groups: [ format, styles ] }
- { name: basicstyles, groups: [ basicstyles ] }
- { name: paragraph, groups: [ list, indent, blocks, align ] }
- "/"
- …Run Code Online (Sandbox Code Playgroud) 我是TYPO3中的新手(我来自Joomla和WordPress),我很难理解TYPO3中模板的处理方式(在我看来,TYPO3中的情况比Joomla和WordPress中的情况更复杂).
我安装了,我正在测试这个版本的TYPO3 introductionpackage-6.1.3.zip
在Joomla和WordPress中,模板只是一个HTML结构(在页面的各个区域中标记将放置CMS模块)和相关的CSS设置.
在TYPO3中,在我看来情况非常不同或者我错了吗?
目前我正在阅读引用TYPO3简介包的默认模板的官方文档的这一部分:http://docs.typo3.org/typo3cms/GettingStartedTutorial/Templates/Index.html
使用CMS创建的网站的静态内容和动态内容之间的区别对我来说非常清楚(这与其他任何CMS如Joomla或WP没有什么不同)
动态内容:由CMS(执行一些查询)动态创建的菜单(它查看数据库表,然后脚本呈现页面上的菜单)
静态内容:固定为网站标题或背景图像
到目前为止,我认为这对我来说非常清楚,但是当文档将模板记录作为实现先前原则的一种方式时,我有很多疑问.
这里:http://docs.typo3.org/typo3cms/GettingStartedTutorial/Templates/%28%28generated%29%29/Index.html
它说:
这是一个控制元素,它指示TYPO3如何处理页面树的某个分支.
特别是对于此图像,它显示了如何修改介绍包模板的这些模板记录(介绍包也是随此包提供的模板的名称或什么?):

然后在文档的这一部分上说:
如果您编辑模板"简介包",您将看到大多数字段为空.对于每个网站,您需要在ROOT级别上使用TypoScript模板,在本例中为"简介包"模板.网站的TypoScript配置可能很长,因此可以制作许多包含在主模板中的小型TypoScript模板.为了更好的维护,简介包的所有TypoScript都已放入"Typoscript模板"文件夹中."简介包"模板唯一做的就是包含"ROOT"模板,该模板又包含其他模板.
对我来说这完全是模糊的:我已经明白TypoScript是一种可用于配置前端的配置语言(所以我认为我可以使用它来配置我的页面将如何显示)但我无法理解以下内容声明:
这意味着什么:对于每个网站,您需要ROOT级别的TypoScript模板,在这种情况下,这是"简介包"模板?我已经安装了TYPO3简介包,我只有一个网站!什么是网站的ROOT级别?是列表部分树中的欢迎使用TYPO3节点吗?所以在实践中我将一个特定的模板分配给一个网站的根目录,这是用在所有子节点(所有页面如Home,关于TYPO3,功能等)?
当它说: 为了更好的维护,简介包的所有TypoScript都被放入文件夹'Typoscript Templates'中.这个文件夹在哪里?我没有.
它说的意思是什么:"简介包"模板唯一能做的就是包含"ROOT"模板,而模板又包含其他模板.?
Tnx这么多
安德里亚
TYPO3 中有 2 个函数似乎或多或少具有相同的功能:
扩展管理实用程序::addModule
/**
* Adds a module (main or sub) to the backend interface
* FOR USE IN ext_tables.php FILES
Run Code Online (Sandbox Code Playgroud)扩展实用程序::registerModule
/**
* Registers an Extbase module (main or sub) to the backend interface.
* FOR USE IN ext_tables.php FILES
Run Code Online (Sandbox Code Playgroud)因此,根据评论,它们基本上做同样的事情,但一个注册,一个添加,其中一个是Extbase模块。我已经在网上看到过示例,并且看到 TYPO3 扩展使用了其中一种或另一种方法。
应使用以下哪种方法来创建 TYPO3 后端模块?有什么区别?
我可以只使用一种或其他方法,但我想获得有关这些一般事物的更多指导以及未来的最佳实践是什么。
显而易见的答案可能是,如果您使用 Extbase,则使用 registerModule,如果没有,则使用 addModule。好的,但是为什么核心在某些情况下这样做,而在其他情况下又这样做呢?
另一个明显的答案是 registerModule 调用 addModule。
另请参阅此评论。
如果我想在 Fluid 模板中使用 TypoScript 之类的菜单生成,我有两种可能的方法:
使用 TypoScript 填充模板的变量。这样做:
page.10 = FLUIDTEMPLATE
page.10 {
templateName = index.html
// ... define pathes ...
variables {
contentMain < styles.content.get
mainMenu < temp.mainMenu
:
}
}
Run Code Online (Sandbox Code Playgroud)
在模板中只使用变量:
<div class="header">
<div class="logo">{logo->f:format.raw()}</div>
<div class="main-menu">{mainMenu->f:format.raw()}</div>
</div>
Run Code Online (Sandbox Code Playgroud)另一种方式是使用 f:cObject ViewHelper 来调用 TypoScript 的一部分。
打字稿:
page.10 = FLUIDTEMPLATE
page.10 {
templateName = index.html
// ... define pathes ...
variables {
contentMain < styles.content.get
:
}
}
lib.mainMenu < temp.mainMenu
Run Code Online (Sandbox Code Playgroud)
而 Fluid 模板如下所示:
<div class="header">
<div class="logo">{logo->f:format.raw()}</div>
<div class="main-menu"> …Run Code Online (Sandbox Code Playgroud)如果通过后端保存对象,我想操作一些值并执行自定义函数。我通过谷歌搜索发现我必须在ext_localconfphp中指定这一点:
$GLOBALS ['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['processDatamapClass']['extkey'] = 'Vendor\\Extension\\Hook\\TCEmainHook';
$GLOBALS ['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['processCmdmapClass']['extkey'] = 'Vendor\\Extension\\Hook\\TCEmainHook';
Run Code Online (Sandbox Code Playgroud)
此外,我在扩展/Classes/Hook/TCEmainHook.php中创建了以下类
<?php
namespace Vendor\Extension\Hook;
class TCEmainHook {
public function processCmdmap_postProcess(
$command, $table, $id, $value,
TYPO3\CMS\Core\DataHandling\DataHandler &$pObj) {
echo '<pre>';
var_dump($command);
echo '<pre>';
die();
}
}
Run Code Online (Sandbox Code Playgroud)
但无论我尝试以下哪个选项,在保存对象后我都会得到一个空的后端框架:
$GLOBALS ['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['processCmdmapClass']['NXS\\NxsReferenzen\\Hook\\TCEmainHook'] = 'EXT:nxs_referenzen/Classes/Hook/TCEmainHook.php';
$GLOBALS ['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['processCmdmapClass'][''] = 'NXS\\NxsReferenzen\\Hook\\TCEmainHook';
$GLOBALS ['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['processCmdmapClass'][''] = 'EXT:nxs_referenzen/Classes/Hook/TCEmainHook.php:\NXS\\NxsReferenzen\\Hook\\TCEmainHook';
Run Code Online (Sandbox Code Playgroud)
我不明白我做错了什么。有人有什么建议吗?
参考解决方案: 感谢 Jokumer 的建议,我查找了 BE 模块“配置”中加载了哪些以及如何加载其他钩子。我发现我的钩子看起来与其他钩子不同,所以我检查了 powermail 钩子的定义方式(这是我正在使用的另一个扩展),并通过以下更改,钩子终于可以工作了:
$GLOBALS ['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['processDatamapClass'][] = 'EXT:nxs_referenzen/Classes/Hook/TCEmainHook.php:NXS\\NxsReferenzen\\Hook\\TCEmainHook';
$GLOBALS ['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['processCmdmapClass'][] = 'EXT:nxs_referenzen/Classes/Hook/TCEmainHook.php:NXS\\NxsReferenzen\\Hook\\TCEmainHook';
Run Code Online (Sandbox Code Playgroud) 我阅读了有关 type=input 的 eval 属性的文档,并尝试了自己的评估。
它应该使用以下逻辑评估三个字段的组合:start_date 和 end_date 必需(非空)或 date_on_request 必需。
类已加载,函数评估字段值()可以工作,但我错过了表单中的反馈。
<?php
namespace Vendor\Extension\Evaluation;
class StartDateAndEndDateOrDateOnRequestEvaluation {
/**
* JavaScript code for client side validation/evaluation
*
* @return string JavaScript code for client side validation/evaluation
*/
public function returnFieldJS() {
return 'return value;';
}
/**
* Server-side validation/evaluation on saving the record
*
* @param string $value The field value to be evaluated
* @param string $is_in The "is_in" value of the field configuration from TCA
* …Run Code Online (Sandbox Code Playgroud) 我有一个看起来像这样的 URL:
https://www.example.com/about-us?stage=Stage&utm_source=abc&utm_medium=xyz
Run Code Online (Sandbox Code Playgroud)
我想删除 stage=Stage 部分。
我尝试了下面的代码:
RewriteCond %{QUERY_STRING} ^stage=Stage$
RewriteRule (.*) $Stage? [R=permanent]
Run Code Online (Sandbox Code Playgroud)
但它似乎只有在 URL 为以下情况时才有效:
https://www.example.com/about-us?stage=Stage
Run Code Online (Sandbox Code Playgroud)
没有其余参数。
如何让除了 stage=Stage 参数之外的其他参数传递?
我多次遇到这个词。通常,资源会直接解释如何做某事,但不会提及这是什么或它的用途。另外,一堆资源是德语还是不太清楚。
所以,
示例资源:
要么构建一个可以放在站点上的插件,要么构建一个不需要站点即可运行的 eID。
这个资源实际上解释了它(虽然是德语),但代码看起来非常过时。
https://www.webmasterpro.de/coding/article/cms-typo3-eid-mechanismus.html
顺便说一句,Stack Overflow 上有一个标签 eID,但它用于电子身份证 :(
使用基于 Composer 的 TYPO3 安装,何时需要刷新缓存,以及如何执行?
使用扩展管理器,在安装或更新扩展时会自动刷新缓存。
是否建议在某些情况下进行(硬)缓存刷新,例如
另外,从命令行在维护模式(“安装工具”)下执行刷新缓存操作的等价物是什么?
typo3 ×8
php ×2
typo3-7.6.x ×2
.htaccess ×1
apache ×1
ckeditor ×1
extbase ×1
fluid ×1
hook ×1
parameters ×1
redirect ×1
stage ×1
typo3-8.x ×1
typoscript ×1
url ×1