Typo3 tx_news расширяется с помощью настраиваемых полей — содержимое иногда исчезает, проблема с кэшированием?

Я использую 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? Не могли бы вы также поделиться своим кодом?

Aristeidis Karavas 30.04.2019 10:53

Спасибо за ваш ответ. Смотрите мой код выше. Нет параметра @lazy.

WimDiesel 30.04.2019 12:15
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
2
1 034
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий

Вы иногда очищаете typo3temp, что также вызывает это?

Нет, очистка typo3temp не дает никакого эффекта. Мне нужно очистить весь кеш, чтобы снова отобразить содержимое. Но через какое-то время снова исчезает.

WimDiesel 30.04.2019 16:08

да, я знаю, но очистка typo3temp может привести к этому недопустимому состоянию, так как в typo3temp 2 класса (один из ext:news и один от вас) объединены. или вы используете другую конфигурацию фреймворка кэширования?

Georg Ringer 30.04.2019 20:22

Большое спасибо за ваш ответ. Я не уверен. Я думаю, что у меня нет фреймворка кеширования. Я использовал учебник, подобный этому keinerweiss.de/…. Как я могу активировать кеширование, включая расширение новостей, в сочетании с моим пользовательским расширением?

WimDiesel 01.05.2019 22:11

Нет идей или решений для моей проблемы? Буду признателен, если есть решение.

WimDiesel 03.05.2019 09:11

пожалуйста, используйте этот docs.typo3.org/typo3cms/extensions/news/DeveloperManual/…

Georg Ringer 03.05.2019 23:53

Спасибо! Сделайте вот так кешируйте контент, чтобы он не пропал через какое-то время. Большое спасибо за вашу помощь.

WimDiesel 10.05.2019 10:22

Я столкнулся с той же проблемой. Я использовал реализацию из связанной записи документации «Генератор 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'.

Lehtis 14.09.2021 16:59

Другие вопросы по теме