Transcript
Page 1: TCA Änderungen in TYPO3 6.2 am Beispiel einer Erweiterung der News Extension

TCA Änderungenin TYPO3 6.2

am Beispiel einer Erweiterung der News Extension

Page 2: TCA Änderungen in TYPO3 6.2 am Beispiel einer Erweiterung der News Extension

bisherige Situation• Erweiterungen in ext_tables.php

• Kein Code Cache

• ext_tables.php wird zur Laufzeit mehrfach eingelesen

• Unübersichtlich. Änderungen können sich leicht gegenseitig überschreiben.

Page 3: TCA Änderungen in TYPO3 6.2 am Beispiel einer Erweiterung der News Extension

Configuration/TCA/Overrides

• Eingeführt mit TYPO3 6.2

• Beliebiger Dateiname

• Beliebig viele Dateien möglich

• Best practice:<extkey>/Configuration/TCA/Overrides/<tablename>.php

Page 4: TCA Änderungen in TYPO3 6.2 am Beispiel einer Erweiterung der News Extension

Vorteile

• klar definierte Stelle, wo Änderungen passieren

• TCA Änderungen landen im Code Cache

• ext_tables.php wird entschlackt

• Performance Gewinn im Backend wenn alle Extensions das Feature nutzen

Page 5: TCA Änderungen in TYPO3 6.2 am Beispiel einer Erweiterung der News Extension

Beispiele• Systemextensions

• css_styled_content

• saltedpasswords

• felogin

• news_exampleextension

Page 6: TCA Änderungen in TYPO3 6.2 am Beispiel einer Erweiterung der News Extension

News erweitern

Page 7: TCA Änderungen in TYPO3 6.2 am Beispiel einer Erweiterung der News Extension

Neue News Typen und ein neues Feld

Page 8: TCA Änderungen in TYPO3 6.2 am Beispiel einer Erweiterung der News Extension

Struktur• Extbase Verzeichnisstruktur

• Resources/Private/extend-news.txt

• enthält Pfade zu den Dateien, die erweitert werden sollen

• Ohne Dateiendung .php

• Beispiel: Domain/Model/News

Page 9: TCA Änderungen in TYPO3 6.2 am Beispiel einer Erweiterung der News Extension

Configuration/TCA/Overrides/ tx_news_domain_model_news.php

<?php defined('TYPO3_MODE') or die();

use \TYPO3\CMS\Core\Utility\ExtensionManagementUtility;

$tempColumns = Array ( 'authorprofile' => Array ( 'exclude' => 1, 'label' => 'LLL:EXT:news_exampleextension/Resources/Private/Language/

locallang_db.xlf:tx_newsexampleextension_domain_model_news. authorprofile',

'config' => array( 'type' => 'group', 'internal_type' => 'db', 'allowed' => 'pages', 'foreign_table' => 'pages', 'size' => 1, 'minitems' => 0, 'maxitems' => 1, 'wizards' => array( 'suggest' => array( 'type' => 'suggest', ), ), ), ), );

Page 10: TCA Änderungen in TYPO3 6.2 am Beispiel einer Erweiterung der News Extension

if (ExtensionManagementUtility::isLoaded('news')) {

// register new news types $GLOBALS['TCA']['tx_news_domain_model_news']['types']['blogText'] =

$GLOBALS['TCA']['tx_news_domain_model_news']['types']['0'];

$GLOBALS['TCA']['tx_news_domain_model_news']['types']['blogImage'] = $GLOBALS['TCA']['tx_news_domain_model_news']['types']['0'];

// add individual type icons $GLOBALS['TCA']['tx_news_domain_model_news']['ctrl']['typeicons']['blogText'] =

ExtensionManagementUtility::extRelPath('news_exampleextension') . 'Resources/Public/Icons/news_domain_model_news_blogText.png';

$GLOBALS['TCA']['tx_news_domain_model_news']['ctrl']['typeicons']['blogImage'] = ExtensionManagementUtility::extRelPath('news_exampleextension') . 'Resources/Public/Icons/news_domain_model_news_blogImage.png';

// add author profile only to above registered news types ExtensionManagementUtility::addTCAcolumns(

'tx_news_domain_model_news', $tempColumns

);

ExtensionManagementUtility::addToAllTCAtypes( 'tx_news_domain_model_news', 'authorprofile;;;;1-1-1', 'blogText,blogImage', 'after:related_from'

); }

Page 11: TCA Änderungen in TYPO3 6.2 am Beispiel einer Erweiterung der News Extension

Configuration/TSconfig/Page/mod.tx_news_domain_model_news.txt

TCEFORM.tx_news_domain_model_news.type.addItems {

blogText = LLL:EXT:news_exampleextension/Resources/Private/Language/ locallang_db.xlf:tx_newsexampleextension_domain_model_news.type.blogText

blogImage = LLL:EXT:news_exampleextension/Resources/Private/Language/ locallang_db.xlf:tx_newsexampleextension_domain_model_news.type.blogImage

}

Page 12: TCA Änderungen in TYPO3 6.2 am Beispiel einer Erweiterung der News Extension

ext_localconf.php<?php if (!defined ('TYPO3_MODE')) { die ('Access denied.'); }

if (\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::isLoaded('news')) { // add page TSConfig which extends the news types \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPageTSConfig(

'<INCLUDE_TYPOSCRIPT: source="FILE:EXT:' . $_EXTKEY . ‚/Configuration/TSconfig/Page/mod.tx_news_domain_model_news.txt">'

); }

Page 13: TCA Änderungen in TYPO3 6.2 am Beispiel einer Erweiterung der News Extension

Classes/Domain/Model/AbstractNewsBlogItem.php<?php namespace KWS\NewsExampleextension\Domain\Model;

/** * News model for default news * * @package TYPO3 * @subpackage tx_newsexampleextension */ abstract class AbstractNewsBlogItem extends \Tx_News_Domain_Model_News { /** * @var integer */ protected $authorprofile;

/** * Set author profile * * @param integer $authorprofile author profile * @return void */ public function setAuthorprofile($authorprofile) { $this->authorprofile = $authorprofile; }

/** * Get author profile * * @return integer */ public function getAuthorprofile() { return $this->authorprofile; } }

Page 14: TCA Änderungen in TYPO3 6.2 am Beispiel einer Erweiterung der News Extension

Classes/Domain/Model/NewsBlogText.php

<?php namespace KWS\NewsExampleextension\Domain\Model;

/** * News model for default news * * @package TYPO3 * @subpackage tx_newsexampleextension */ class NewsBlogText extends AbstractNewsBlogItem { }

Page 15: TCA Änderungen in TYPO3 6.2 am Beispiel einer Erweiterung der News Extension

Configuration/TypoScript/setup.txt

config.tx_extbase.persistence.classes { Tx_News_Domain_Model_News { subclasses { blogText = KWS\NewsExampleextension\Domain\Model\NewsBlogText blogImage = KWS\NewsExampleextension\Domain\Model\NewsBlogImage } }

KWS\NewsExampleextension\Domain\Model\NewsBlogText { mapping { recordType = blogText tableName = tx_news_domain_model_news } }

KWS\NewsExampleextension\Domain\Model\NewsBlogImage { mapping { recordType = blogImage tableName = tx_news_domain_model_news } } }

Page 16: TCA Änderungen in TYPO3 6.2 am Beispiel einer Erweiterung der News Extension

Configuration/TCA/Overrides/ tt_content.php

<?php if (!defined('TYPO3_MODE')) { die ('Access denied.'); }

use \TYPO3\CMS\Core\Utility\ExtensionManagementUtility;

$_EXTKEY = $GLOBALS['_EXTKEY'] = 'news_exampleextension';

ExtensionManagementUtility::addStaticFile( $_EXTKEY, 'Configuration/TypoScript', 'Additional types for EXT:news'

);

Page 17: TCA Änderungen in TYPO3 6.2 am Beispiel einer Erweiterung der News Extension

Fluid Template• {newsItem.type}

• enthält neue Typen

• blogText

• blogImage

• {newsItem.authorprofile}

• enhält uid der Seite

Page 18: TCA Änderungen in TYPO3 6.2 am Beispiel einer Erweiterung der News Extension

Ressourcen

• https://forge.typo3.org/issues/57942

• http://ab-softlab.tumblr.com/post/90851249969/tca-manipulation-in-typo3-6-2

• https://github.com/peterkraume/news_exampleextension

Page 19: TCA Änderungen in TYPO3 6.2 am Beispiel einer Erweiterung der News Extension

Vielen Dank

@Cybersmog

[email protected]

http://de.slideshare.net/pk77

This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.


Recommended