Typo3 tx_news 使用自定义字段扩展 - 内容有时会消失,缓存问题?
Typo3 tx_news extend with custom Fields - Content disappears sometimes, caching Issue?
我使用的是 Typo3 9.5.5,我用一些自定义字段扩展了扩展 tx_news。
前端和后端一切正常,但有时自定义内容会在前端消失并且不显示。调试也没有显示内容。我认为这可能是缓存问题,因为在清除完整缓存后,自定义内容再次显示。
我该如何解决这个问题?
我尝试将需要的模板放入我的自定义扩展中,但结果是一样的。
<?php
namespace myName\NewsExtend\Domain\Model;
/**
* News model for default news
*
* @package TYPO3
* @subpackage tx_news
*/
class NewsExtend extends \GeorgRinger\News\Domain\Model\News {
/**
* @var string
*/
protected $categoryHeader;
/**
* @var string
*/
protected $issue;
/**
* Get categoryHeader
*
* @return string
*/
public function getCategoryHeader()
{
return $this->categoryHeader;
}
/**
* Set categoryHeader
*
* @param string $categoryHeader categoryHeader
*/
public function setCategoryHeader($categoryHeader)
{
$this->categoryHeader = $categoryHeader;
}
/**
* Get issue
*
* @return string
*/
public function getIssue()
{
return $this->issue;
}
/**
* Set issue
*
* @param string $issue issue
*/
public function setIssue($issue)
{
$this->issue = $issue;
}
}
你有时会清除 typo3temp 这也会触发它
我 运行 遇到了同样的问题。我使用了链接文档条目 "ProxyClass generator" 中的实现,当我 return 几个小时后进入页面时,字幕不再呈现。只有清除系统缓存才能将其恢复。
有点晚了,但我的问题出在 Typoscript 设置中。一个教程描述它必须是:
config.tx_extbase {
persistence {
classes {
GeorgRinger\News\Domain\Model\News {
....
}
}
}
但必须是“plugin.tx_news”而不是“config.tx_extbase”:
plugin.tx_news {
...
}
完成使用新字段扩展 TYPO3 tx_news
的教程:
TypoScript 设置
plugin.tx_news {
persistence {
classes {
GeorgRinger\News\Domain\Model\News {
subclasses {
0 = Yourvendor\Yourext\Domain\Model\NewsDefault
}
}
Yourvendor\Domain\Model\NewsDefault {
mapping {
tableName = tx_news_domain_model_news
recordType = 0
}
}
}
}
}
ext_tables.sql
CREATE TABLE tx_news_domain_model_news (
new_field varchar(255) DEFAULT '' NOT NULL
);
TCA - typo3conf/ext/yourext/Configuration/TCA/Overrides/tx_news_domain_model_news.php
defined('TYPO3_MODE') or die();
/**
* Add new fields to news table
*/
$tmpNewsColumns = [
'new_field' => [
'exclude' => 1,
'label' => 'label or use localang file',
'config' => [
'type' => 'input',
'size' => 30,
'eval' => 'trim'
],
],
];
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns('tx_news_domain_model_news', $tmpNewsColumns, true);
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes('tx_news_domain_model_news', 'new_field', '', 'after:teaser');
添加模型 - typo3conf/ext/yourext/Classes/Domain/Model/NewsDefault.php
namespace Yourvendor\Yourext\Domain\Model;
use GeorgRinger\News\Domain\Model\NewsDefault as NewsFields;
class NewsDefault extends NewsFields {
/**
* the new_field
* @var string
*/
protected $newField;
/**
* Returns an array of orderings created from a given demand object.
*
* @param string $newField
* @return void
*/
public function setNewField($newField) {
$this->newField = $newField;
}
/**
* Get newField
*
* @return string
*/
public function getNewField() {
return $this->newField;
}
}
在模板中找到并使用新字段,以检查 typo3conf/ext/yourext/Resources/Private/Extensions/News/Partials/List/Item.html
中的 <f:debug>{newsItem}</f:debug>
我使用的是 Typo3 9.5.5,我用一些自定义字段扩展了扩展 tx_news。 前端和后端一切正常,但有时自定义内容会在前端消失并且不显示。调试也没有显示内容。我认为这可能是缓存问题,因为在清除完整缓存后,自定义内容再次显示。 我该如何解决这个问题?
我尝试将需要的模板放入我的自定义扩展中,但结果是一样的。
<?php
namespace myName\NewsExtend\Domain\Model;
/**
* News model for default news
*
* @package TYPO3
* @subpackage tx_news
*/
class NewsExtend extends \GeorgRinger\News\Domain\Model\News {
/**
* @var string
*/
protected $categoryHeader;
/**
* @var string
*/
protected $issue;
/**
* Get categoryHeader
*
* @return string
*/
public function getCategoryHeader()
{
return $this->categoryHeader;
}
/**
* Set categoryHeader
*
* @param string $categoryHeader categoryHeader
*/
public function setCategoryHeader($categoryHeader)
{
$this->categoryHeader = $categoryHeader;
}
/**
* Get issue
*
* @return string
*/
public function getIssue()
{
return $this->issue;
}
/**
* Set issue
*
* @param string $issue issue
*/
public function setIssue($issue)
{
$this->issue = $issue;
}
}
你有时会清除 typo3temp 这也会触发它
我 运行 遇到了同样的问题。我使用了链接文档条目 "ProxyClass generator" 中的实现,当我 return 几个小时后进入页面时,字幕不再呈现。只有清除系统缓存才能将其恢复。
有点晚了,但我的问题出在 Typoscript 设置中。一个教程描述它必须是:
config.tx_extbase {
persistence {
classes {
GeorgRinger\News\Domain\Model\News {
....
}
}
}
但必须是“plugin.tx_news”而不是“config.tx_extbase”:
plugin.tx_news {
...
}
完成使用新字段扩展 TYPO3 tx_news
的教程:
TypoScript 设置
plugin.tx_news {
persistence {
classes {
GeorgRinger\News\Domain\Model\News {
subclasses {
0 = Yourvendor\Yourext\Domain\Model\NewsDefault
}
}
Yourvendor\Domain\Model\NewsDefault {
mapping {
tableName = tx_news_domain_model_news
recordType = 0
}
}
}
}
}
ext_tables.sql
CREATE TABLE tx_news_domain_model_news (
new_field varchar(255) DEFAULT '' NOT NULL
);
TCA - typo3conf/ext/yourext/Configuration/TCA/Overrides/tx_news_domain_model_news.php
defined('TYPO3_MODE') or die();
/**
* Add new fields to news table
*/
$tmpNewsColumns = [
'new_field' => [
'exclude' => 1,
'label' => 'label or use localang file',
'config' => [
'type' => 'input',
'size' => 30,
'eval' => 'trim'
],
],
];
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns('tx_news_domain_model_news', $tmpNewsColumns, true);
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes('tx_news_domain_model_news', 'new_field', '', 'after:teaser');
添加模型 - typo3conf/ext/yourext/Classes/Domain/Model/NewsDefault.php
namespace Yourvendor\Yourext\Domain\Model;
use GeorgRinger\News\Domain\Model\NewsDefault as NewsFields;
class NewsDefault extends NewsFields {
/**
* the new_field
* @var string
*/
protected $newField;
/**
* Returns an array of orderings created from a given demand object.
*
* @param string $newField
* @return void
*/
public function setNewField($newField) {
$this->newField = $newField;
}
/**
* Get newField
*
* @return string
*/
public function getNewField() {
return $this->newField;
}
}
在模板中找到并使用新字段,以检查 typo3conf/ext/yourext/Resources/Private/Extensions/News/Partials/List/Item.html
<f:debug>{newsItem}</f:debug>