[Frage] Extension / Plugin ins Backend integrieren TYPO3-Version: 6.1.7

  • Chrissli Chrissli
    Jedi-General
    0 x
    1015 Beiträge
    28 Hilfreiche Beiträge
    17. 03. 2014, 10:53

    Hallo zusammen,

    ich bin gerade dabei mich in die Extension-Entwicklung einzuarbeiten und dabei wie erwartet
    gleich auf die ersten Probleme gestoßen.

    Ich hangel mich mit dem Buch "Zukunftssicher Typo3 Extension mit Extbase und Fluid " von Jochen Rau
    und Sebastian Kurfürst durch und habe nun das erste Minimalbeispiel mit meiner Extension adaptiert.
    So weit so gut, benötigte Dateien sollten vorhanden sein:

    Classes/Controller/XcontentController.php
    Classes/Domain/Model/Xcontent.php
    Classes/Domain/Repository/XcontentRepository.php
    Resources/Private/Templates/Xcontent/render.html
    ext_emconf.php
    ext_icon.gif
    ext_localconf.php
    ext_tables.php
    ext_tables.sql

    - Die Extension wird im EM gelistet
    - Sie kann installiert werden ohne Fehlermeldung
    - Die zugehörige Datenbank kann ausgewählt werden

    Ich kann auf deinem Sysfolder über Liste -> Neuer Datensatz die Extension auswählen, allerdings
    scheint hier die Positionierung in der Liste nicht zu passen, denn der Punkt "RTE HTMLarea" wird bei mir
    durch den Namen meiner Extension ( schniblotag ) ersetzt und mein Plugin mit unbekanntem Icon (?) neben
    "Abkürzung" gelistet ( siehe Anhang ). Kann dann aber ausgewählt werden, alle Felder werden angezeigt und die Datenbank wird
    auch mit entsprechenden Werten gefüllt.

    Auf normalen Seiten wird das Plugin in der Listenansicht nicht aufgeführt,
    in der Seitenansicht wird es gar nicht gelistet, weder direkt unter Inhaltstyp Plugin noch wenn ich allgemeines Plugin auswähle in
    der zugehörigen Liste.

    Weder Typo3 noch mein Webserver liefert mir hierzu einen Fehler.

    Eingebunden wird das Plugin
    in der ext_localconf.php mit

    1. Tx_Extbase_Utility_Extension::configurePlugin(
    2. // unique plugin name
    3. $_EXTKEY,
    4. 'XContent', // should be identical with ext_tables.php registerPlugin name?
    5.  
    6. // accessible controller-action-combination
    7. array ('Xcontent'=>'render' )
    8. // non-cachable controller-action-combinations ( they must already be enabled )
    9. // array ( )
    10. );

    bzw. in der ext_tables.php mit

    1. Tx_Extbase_Utility_Extension::registerPlugin($_EXTKEY, 'Xcontent', 'Cross Content');

    Kann mir vielleicht einer sagen was ich falsch mache bzw. wo ich suchen muss? Ist das eher
    ein falscher Funktionsaufruf oder was falsch konfiguriertes?

    Bin grade n bissl ratlos...

    P.S.: Ich habe die Dateien manuell angelegt anhand der Beispiele aus dem Buch, d.h. bei mir sind keine Namespace-Angaben vorhanden. Ist das schon das Problem oder ist das nicht zwingend notwendig?

    P.P.S.: Namespaces hinzugefügt, nicht besser geworden :(

    God's in his heaven, all's right with the world

    Anhänge (1)
    t3plugin.png image/png 0,00 B 336 heruntergeladen

  • 1
  • Schweriner Schwerine...
    Jedi-Ratsmitglied
    0 x
    554 Beiträge
    60 Hilfreiche Beiträge
    17. 03. 2014, 15:19

    Ich behaupte mal der Fehler liegt irgendwo in der ext_tables.php, daher bitte mal die gesamte Datei posten. Das Grundgerüst für Extensions lässt sich übrigens sehr angenehm mit dem Extension Builder aus dem TER machen. Namespaces sollten zukünftig auf jeden Fall verwendet werden.

  • Chrissli Chrissli
    Jedi-General
    0 x
    1015 Beiträge
    28 Hilfreiche Beiträge
    17. 03. 2014, 17:13

    Ja, dass ist mir jetzt auch klar :D
    Extensionbuilder hab ich probiert, hat mir aber zuviel gewurstelt das ich nicht verstanden hab, daher dachte ich Schritt für Schritt nach vorne Tasten ist vielleicht der bessere Weg

    1. <?php
    2. if (!defined('TYPO3_MODE')) {
    3. die ('Access denied.');
    4. }
    5.  
    6. // controls how the table ( see ext_tables.sql ) is renderd in t3backend
    7. $TCA['tx_schniblotag_domain_model_xcontent'] = array (
    8. 'ctrl' => array (
    9. 'title' => 'Cross Referred Content', // system name for table as shown in backend
    10. 'label' => 'name', // tells which databasefield is shown in backend to list elements
    11. ),
    12. 'columns' => array (
    13. 'name' => array (
    14. 'label' => 'Bezeichnung',
    15. 'config' => array (
    16. 'type' => 'input',
    17. 'size' => '20',
    18. 'eval' => 'trim,required'
    19. )
    20. ),
    21. 'xtype' => array(
    22. 'label' =>'Typ',
    23. 'config' => array (
    24. 'type' => 'select',
    25. 'default' => 'category',
    26. 'maxitems' => 1,
    27. 'items' => array (
    28. array('Aus Kategorie','category'),
    29. array('Neue Produkte','newproducts'),
    30. array('Neueste News','newestnews'),
    31. array('Codiert','encoded')
    32. )
    33. )
    34. ),
    35. 'number_of_elements' => array(
    36. 'label' => 'Anzahl angezeigter Elemente',
    37. 'config' => array (
    38. 'type' => 'input',
    39. 'size' => '2',
    40. 'eval' => 'trim'
    41. )
    42. ),
    43. 'contained_elements' => array(
    44. 'label' => 'Angezeigte Elemente',
    45. 'config' => array (
    46. 'type' => 'input',
    47. 'size' => '255',
    48. 'eval' => 'trim'
    49. )
    50. )
    51. ),
    52. 'types' => array (
    53. '0' => array('showitem' => 'name, xtype, number_of_elements, contained_elements')
    54. )
    55. );
    56.  
    57.  
    58. Tx_Extbase_Utility_Extension::registerPlugin($_EXTKEY, 'Xcontent', 'Cross Content');
    59. ?>

    God's in his heaven, all's right with the world

  • Chrissli Chrissli
    Jedi-General
    0 x
    1015 Beiträge
    28 Hilfreiche Beiträge
    18. 03. 2014, 10:46

    Kleines Update:

    Hab's nochmal mit dem Extension Builder probiert und die Feldconfiguration in dem 'dynamicConfigFile' ( vorher ext_tables.php ) entsprechend angepasst, soweit sogut, das Plugin wird nun in der Listenansicht als hinzufügbarer Datensatz auf allen Seiten angezeigt. Allerdings fehlt es immernoch als Content-Element und Plugins, egal wie ichs anstelle.

    Hab mal testweise den configurePlugin-Befehl angepasst:

    1. Tx_Extbase_Utility_Extension::configurePlugin(
    2. // unique plugin name
    3. $_EXTKEY,
    4. 'XContent', // should be identical with ex_tables.php registerPlugin name?
    5.  
    6. // accessible controller-action-combination
    7. array ('Xcontent'=>'rendercategory' ),
    8. // non-cachable controller-action-combinations ( they must already be enabl,ed )
    9. array ( ),
    10. \TYPO3\CMS\Extbase\Utility\ExtensionUtility::PLUGIN_TYPE_CONTENT_ELEMENT
    11.  
    12.  
    13. );

    Hat aber nix gebracht ;-(

    God's in his heaven, all's right with the world

  • Schweriner Schwerine...
    Jedi-Ratsmitglied
    0 x
    554 Beiträge
    60 Hilfreiche Beiträge
    18. 03. 2014, 13:15

    In die ext_tables.php gehört das registerPlugin. Hier Beispiele aus einer meiner Extensions:

    ext_tables.php

    1. \TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin(
    2. $_EXTKEY,
    3. 'Questions',
    4. 'Fragen und Antworten'
    5. );

    Das configurePlugin gehört in die ext_localconf.php

  • Chrissli Chrissli
    Jedi-General
    0 x
    1015 Beiträge
    28 Hilfreiche Beiträge
    18. 03. 2014, 13:53

    Ok sorry, war vielleicht etwas ungünstig formuliert. Das ist natürlich der Fall.
    Ich habe die automatisch ( durch den ExtensionBuilder ) generierte Datei "ext_tables.php" um die Zeile

    1. \TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin($_EXTKEY, 'Xcontent', 'Cross Content');

    am Ende ( nach der TCA-Deklaration ) erweitert und die Datei "ext_localconf.php" in der obersten Ebene meines Extensionverzeichnisses angelegt mit dem configurePlugin-Aufruf wie vorher beschrieben.
    Die Konfiguration der Felder schein ja zu stimmen, in der Listenansicht kann ich die Inhalte als Datensatz wie geplant erstellen, speichern, laden, aber eben nicht als Content-Element Plugin.

    Mit dem alten Aufruf ( ich glaub das war

    1. t3lib_extMgm::addToAllTCAtypes

    ) hatte es Problemlos funktioniert, aber der ist ja deprecated.

    Wenn ich wenigstens eine Fehlermeldung hätte mir der man arbeiten kann, aber soweit scheint alles in Ordnung zu sein.

    God's in his heaven, all's right with the world


  • 0 x
    06. 05. 2014, 15:21

    Wenn du dir eh schon ein Grundgerüst mit dem Extension Builder aufsetzt, dann kannst du an der Stelle doch auch dein Plugin definieren, das sollte dann ziemlich sicher funktionieren :)

    Ansonsten kann ich mir vorstellen, dass dein Mix aus namespaces / keine namespaces Probleme verursacht.

  • ViRuSTriNiTy ViRuSTriN...
    Typ im Roten Hemd
    0 x
    2 Beiträge
    0 Hilfreiche Beiträge
    03. 07. 2017, 12:51

    Ich denke mal, die Extension wurde im Backend nicht aktiviert. Deswegen erscheint Diese auch nicht Plugin DropDown.

  • Norman2k Norman2k
    Jedi-General
    0 x
    1650 Beiträge
    76 Hilfreiche Beiträge
    03. 07. 2017, 13:25

    Wow, 3 Jahre hat dieser Thread schon tief und fest geschlummert, wieso weckst du ihn auf?

  • 1