2016-06-09 21 views
0

Ich habe eine funktionierende Extbase-Erweiterung, die ein Formular für das Frontend anzeigt, abhängig davon, welche Optionen im Backend ausgewählt werden, während es auf eine Seite gesetzt wird.Die Konstanten einer Extension im konstanten Manager verfügbar machen

Ich verwende eine Flexform für diese Optionen (hauptsächlich die Formularaktion, aber auch einige Felder).

Alles funktioniert gut, außer für die Konstanten. Da diese Formularvorlage möglicherweise für verschiedene Websites geändert wird, auf denen sie verwendet wird, möchte ich den Vorlagenstammpfad ändern können, damit ich benutzerdefinierte Vorlagen definieren kann.

Ich habe einen constants.txt und setup.txt in form_plugin/Konfiguration/TypoScript

Die Konstanten wie folgt aussehen:

plugin.tx_nlmymail_newsletter { 
    view { 
     # cat=plugin.tx_nlmymail_newsletter/file; type=string; label=Path to template root (FE) 
     templateRootPath = EXT:nl_mymail/Resources/Private/Templates/ 
     # cat=plugin.tx_nlmymail_newsletter/file; type=string; label=Path to template partials (FE) 
     partialRootPath = EXT:nl_mymail/Resources/Private/Partials/ 
     # cat=plugin.tx_nlmymail_newsletter/file; type=string; label=Path to template layouts (FE) 
     layoutRootPath = EXT:nl_mymail/Resources/Private/Layouts/ 
    } 
    persistence { 
     # cat=plugin.tx_nlmymail_newsletter//a; type=string; label=Default storage PID 
     storagePid = 
    } 
} 

Meine setup.txt wie folgt aussieht:

plugin.tx_nlmymail_newsletter { 
    view { 
     templateRootPaths.0 = {$plugin.tx_nlmymail_newsletter.view.templateRootPath} 
     partialRootPaths.0 = {$plugin.tx_nlmymail_newsletter.view.partialRootPath} 
     layoutRootPaths.0 = {$plugin.tx_nlmymail_newsletter.view.layoutRootPath} 
    } 
    persistence { 
     storagePid = {$plugin.tx_nlmymail_newsletter.persistence.storagePid} 
    } 
} 

Also nach this sollte dies ausreichend sein. Vielleicht vermisse ich hier ein Stück.

In meinem ext_tables.php ich benutze

\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addStaticFile($_EXTKEY, 'Configuration/TypoScript', 'mail connection'); 

Um die TypoScript zu umfassen.

Muss ich eine benutzerdefinierte Kategorie für meine Konstanten erstellen?

Ich habe mit dem bootstrap_package Plugin verglichen, aber ich kann nicht den entscheidenden Unterschied finden.

Wenn mir jemand in die richtige Richtung zeigen könnte, vielleicht ein Teil der Dokumentation, die ich vermisse, wäre ich sehr dankbar.

+1

Haben Sie Ihre statische Datei nach der Vorlage eingefügt? Wenn ja, dann eine interessante Sache, die ich sehe: Warum hast du das einmal in deinem Beispiel: form_plugin/Configuration/TypoScript und einmal plugin.tx_nlmymail_newsletter? Sind sie gleich? Der Code selbst sieht gut aus. –

+0

Ja, das war ein Schreibfehler. Was genau meinst du mit "deine statische Datei mit der Vorlage einbinden"? – Eupides

+0

Er meint, du solltest statische Vorlage aus deiner Root-Vorlage http://screencast.com/t/kBRp8Y5G1 hinzufügen. Außerdem kannst du die Variable "settings" einstellen, damit du sie von deinem Controller bekommen kannst wie $ this-> settings –

Antwort

1

aus den Kommentaren kopiert:

Das Problem war, dass die statische Vorlage nicht in der Vorlage enthalten war. Hier

ist ein Screenshot:

enter image description here

Ist es pissible so automatisch zu tun?

Ja, es ist aber nur mit string-basierten Funktionen und nicht als Datei.

Sie haben die folgenden Befehle in Ihrem ext_localconf.php verwenden:

\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTypoScript 

oder

\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTypoScriptConstants 
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTypoScriptSetup 

Beispiel aus der felogin Systemerweiterung:

\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTypoScript('TYPO3.CMS.Felogin', 'constants', ' 
styles.content.loginform { 
    # cat=content/cLogin; type=int+; label= PID of user archive: Enter the page-uid number (PID) of the folder where you keep your fe_users that are supposed to login on this site. This setting is necessary, if login is going to work! 
    pid = 
    # cat=content/cLogin; type=; label= Login template: Enter the path for the HTML template to be used 
    templateFile = EXT:felogin/Resources/Private/Templates/FrontendLogin.html 
} 
', 'defaultContentRendering'); 

\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTypoScript('TYPO3.CMS.Felogin', 'setup', ' 
# Setting "felogin" plugin TypoScript 
tt_content.login = COA 
tt_content.login { 
    10 =< lib.stdheader 
    20 > 
    20 =< plugin.tx_felogin_pi1 
} 
', 'defaultContentRendering'); 

Endlich:

Es wird empfohlen, mit den statischen Vorlagen zu arbeiten, da Sie möglicherweise unterschiedliche Strukturen und Einstellungen haben. Die meisten der TER-Erweiterungen verwenden diesen Ansatz ebenfalls.