Zum Inhalt springen

Bestehende Extension erweitern

Erstellt am 18. Juli 2016 · 4 Antworten · letzte Antwort am 21. Juli 2016

Tags: Extbase, TCA, TYPO3 6.x, Frage

marryk ·

Hallo Zusammen,

ich bräuchte eure fachliche Hilfe.
Ich möchte gerne die Calendarize-Extension überschreiben/erweitern. Und zwar brauche ich dort, nicht nur die Möglichkeit Bilder und Downloads hochzuladen, sondern auch Videos.

Nach 3 Tagen Recherche bin ich zu folgendem Ergebnis gekommen, was aber nicht funktioniert #angry#

----------------------------------------------------------------
Einmal gibt es in dem Extension-Ordner "Configuration/TCA/Overrides" die Datei tx_calendarize_domain_model_event.php, mit dem Inhalt:

if (!defined('TYPO3_MODE')) {
    die ('Access denied.');
}
$base = \HDNET\Autoloader\Utility\ModelUtility::getTcaInformation('NAME\\NAME2\\Domain\\Model\\EventDefault');

$custom = [
    'ctrl' => [
        'hideTable' => (boolean)\HDNET\Calendarize\Utility\ConfigurationUtility::get('disableDefaultEvent'),
        'searchFields' => 'uid,title,description',
        'thumbnail' => 'images',
    ],
    'columns' => [
        'title' => [
            'config' => [
                'eval' => 'required'
            ],
        ],
        'abstract' => [
            'config' => [
                'type' => 'text'
            ],
        ],
        'import_id' => [
            'config' => [
                'readOnly' => true,
            ],
        ],
        'filme' => [
            'config' => [
                'type' => 'group',
                'internal_type' => 'file',
                'allowed' => 'mp4, ogv, webm, flv',
                'show_thumbs' => '1',
                'size' => '3',
                'autoSizeMax' => 40,
                'uploadfolder' => 'uploads/movies',
                'disable_controls' => 'upload',
                'maxitems' => '5',
                'minitems' => '0',
            ],
        ],
    ],
];


$tca = \HDNET\Autoloader\Utility\ArrayUtility::mergeRecursiveDistinct($base, $custom);


$search = [
    'images,downloads,',
    'language,--div--',
    'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.extended'
];

$replace = [
    ',',
    'language,--div--;' . \HDNET\Autoloader\Utility\TranslateUtility::getLllOrHelpMessage(
        'files',
        'calendarize'
    ) . ',images,downloads,filme,--div--',
    \HDNET\Autoloader\Utility\TranslateUtility::getLllOrHelpMessage('dateOptions', 'calendarize')
];

$tca['types']['1']['showitem'] = str_replace('filme,', '', $tca['types']['1']['showitem']);
$tca['types']['1']['showitem'] = str_replace($search, $replace, $tca['types']['1']['showitem']);

return $tca;

----------------------------------------------------------------

Dann gibt es noch in der ext_table.sql, folgenden Inhalt:
CREATE TABLE tx_calendarize_domain_model_event (
filme varchar(250) DEFAULT '' NOT NULL
);

----------------------------------------------------------------

Und zu guter letzt das Model "Domain/Model/EventDefault.php"

namespace NAME\NAME2\Domain\Model;

class EventDefault 
    extends \HDNET\Calendarize\Domain\Model\Event
{

        /**
         * filme
         *
         * @var string
         * @db
         */
        protected $filme = null;

        /**
         * Get filme
         *
         * @return $filme
         */
        public function getFilme()
        {
                return $this->filme;
        }

        /**
         * Set filme
         *
         * @param $filme
         * @return void
         */
        public function setFilme($filme)
        {
                $this->filme = $filme;
        }

}

----------------------------------------------------------------

Der Configuration/TypoScript Ordner, ist leer.

Vielen Dank, für eure Unterstützung.
Marry K

Julian.​Hofmann ·

Hallo Marry.

Wenn ich mich richtig an einen Vortrag und von Tim erinnere, dann lassen sich in die Extension beliebige, eigene Models integrieren. Eine kurze Anleitung steht hierzu in der Doku: https://docs.typo3.org/typo3cms/extensions/calendarize/DeveloperManual/OwnEvents/Index.html

Direkt in Extension rumzubasteln sollte vermieden werden, da sie dann nicht mehr updatefähig ist. Also lieber eine eigene Extension schreiben, die Calendarize erweitert.

Viele Grüße
Julian

marryk ·

Hallo Julian,

vielen Danke, für den Tipp.
Die Extension, möchte ich ja gerade, über eine weitere Extension erweitern, und dort hakt es ja.

Ich habe das nun über die Register-Funktion gemacht, die DB-Tabelle wird erstellt, leider werden die Model-Variablen nicht über die PHP-Datei mit angelegt. Dies könnte ich ja auch dann per ext_tables.sql erledigen. Leider habe ich immer noch das Problem, das ich nicht ans TCA komme, um dies zu erweitern. Der Versuch, es einfach zu überschreiben, über TCA/Overrides/tx_calendarize_domain_model_event.php ging leider nicht. Irgendwie überschrieb er mein Anpassung, vor der Ausgabe nochmals -.-

marryk ·

Hallo Julian,

vielen Danke, für den Tipp.
Die Extension, möchte ich ja gerade, über eine weitere Extension erweitern, und dort hakt es ja.

Ich habe das nun über die Register-Funktion gemacht, die DB-Tabelle wird erstellt, leider werden die Model-Variablen nicht über die PHP-Datei mit angelegt. Dies könnte ich ja auch dann per ext_tables.sql erledigen. Leider habe ich immer noch das Problem, das ich nicht ans TCA komme, um dies zu erweitern. Der Versuch, es einfach zu überschreiben, über TCA/Overrides/tx_calendarize_domain_model_event.php ging leider nicht. Irgendwie überschrieb er mein Anpassung, vor der Ausgabe nochmals -.-