tx_news:使用第二个容器$ contentElements进行扩展

时间:2017-07-29 07:32:45

标签: typo3 tx-news

TYPO3 8.7.4 新闻6.0.0

是否可以使用第二个容器在news_extend扩展中扩展新闻? (比如contentElements) 目标是将第二个容器放在详细信息页面的相关内容中。

有例子吗?

2 个答案:

答案 0 :(得分:3)

是的,这很容易。您需要向数据库添加字段,在TCA中配置它,扩展新闻模型并调整详细模板。

  1. 在news_extend / ext_tables.sql中添加:
  2. 
        CREATE TABLE tx_news_domain_model_news (
            tx_newsextend_content_elements_second text
        );
    
    
    1. in news_extend / Configuration / TCA / Overrides / tx_news_domain_model_news.php:
    2. 
          $newNewsColumns = [
              'tx_newsextend_content_elements_second' => [
              //      .... here copy the original 'content_elements' field's config from ext news' TCA. update the label to yours.
          ];
      
          \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns('tx_news_domain_model_news', $newNewsColumns);
          \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes('tx_news_domain_model_news', 'tx_newsextend_content_elements_second', '', 'after:content_elements');
      
      
      1. 在news_extend / Resources / Private / Language / locallang_db.xlf中添加:
      2. 
            ...
            <trans-unit id="tx_news_domain_model_news.tx_newsextend_content_elements_second">
                    <source>Additional content elements</source>
            </trans-unit>
        
        
        1. news_extend /类别/域/型号/ News.php:
        2. 
              namespace [my vendor]\NewsExtend\Domain\Model;
          
              class News extends \GeorgRinger\News\Domain\Model\News {
          
                  // here copy all uses of contentElement field from original model, only name it txNewsextendContentElementsSecond.
                  // watch whether it's only declared property and getter/setter (simple fields), or something more is done in the model and do it the same way as there.
                  // tip: see getContentElementIdList() method
          
              }
          
          
          1. 注册您的扩展程序作为新闻模型扩展类的提供者: 在news_extend / ext_localconf.php中添加:
          2.     $GLOBALS['TYPO3_CONF_VARS']['EXT']['news']['classes']['Domain/Model/News'][] = 'news_extend';
            
            1. 现在您可以在模板中使用它:
            2. 
                  <f:if condition="{newsItem.txNewsExtendContentElementsSecond}">
                      <!-- content elements second -->
                      <f:cObject typoscriptObjectPath="lib.tx_news.contentElementRendering">{newsItem.txNewsExtendContentElementsSecondIdList}</f:cObject>
                  </f:if>
              
              

              如果您复制粘贴它,上面可能不会正常工作,我是从笔记中写的。但它会帮助你理解这个想法。祝你好运

答案 1 :(得分:0)

这应该有效。只需按照文档

中的说明扩展新闻标签和模型