Я использую 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;
}
}
Спасибо за ваш ответ. Смотрите мой код выше. Нет параметра @lazy.






Вы иногда очищаете typo3temp, что также вызывает это?
Нет, очистка typo3temp не дает никакого эффекта. Мне нужно очистить весь кеш, чтобы снова отобразить содержимое. Но через какое-то время снова исчезает.
да, я знаю, но очистка typo3temp может привести к этому недопустимому состоянию, так как в typo3temp 2 класса (один из ext:news и один от вас) объединены. или вы используете другую конфигурацию фреймворка кэширования?
Большое спасибо за ваш ответ. Я не уверен. Я думаю, что у меня нет фреймворка кеширования. Я использовал учебник, подобный этому keinerweiss.de/…. Как я могу активировать кеширование, включая расширение новостей, в сочетании с моим пользовательским расширением?
Нет идей или решений для моей проблемы? Буду признателен, если есть решение.
пожалуйста, используйте этот docs.typo3.org/typo3cms/extensions/news/DeveloperManual/…
Спасибо! Сделайте вот так кешируйте контент, чтобы он не пропал через какое-то время. Большое спасибо за вашу помощь.
Я столкнулся с той же проблемой. Я использовал реализацию из связанной записи документации «Генератор ProxyClass», и когда я возвращаюсь на страницу через несколько часов или около того, субтитры больше не отображаются. Только очистка системного кэша возвращает его.
Немного поздно, но моя проблема заключалась в настройке 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
);
ТСА - 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;
}
}
Найдите и используйте новые поля в шаблоне, чтобы отметить <f:debug>{newsItem}</f:debug> в typo3conf/ext/yourext/Resources/Private/Extensions/News/Partials/List/Item.html
Бэкенд с ним работает, а во фронтенде новое поле отсутствует. После долгих поисков нашел причину. Вы должны добавить следующее в ext_localconf.php: «Выследующий»; Не забудьте изменить 'yourext'.
Проверьте модель своего домена. Есть ли параметр @lazy? Не могли бы вы также поделиться своим кодом?