2017-11-16 4 views
0

Ich bin neu bei TYPO3 (erstes Projekt) und habe ein paar Verständnisprobleme bei der Erstellung eines benutzerdefinierten Elements mit einem Colorpicker. In diesem Projekt habe ich bereits einige Elemente erstellt, aber ich verwende nur vorgegebene Felder für die Backend-Eingabe. Für das Element, das ich als nächstes brauche, muss der Benutzer eine Farbe auswählen. Ich habe kein passendes vorhandenes Element gefunden. Mein Setup, das nicht funktioniert, ist in der TCA/Overrides/tt_content.php Datei und sieht so aus.TYPO3 Custom Element colorpicker

$GLOBALS['TCA']['tt_content']['item_0']=array();    
$GLOBALS['TCA']['tt_content']['item_0']['label']='Color'; 
$GLOBALS['TCA']['tt_content']['item_0']['config']=array(); 
$GLOBALS['TCA']['tt_content']['item_0']['config']['type']='input'; 
$GLOBALS['TCA']['tt_content']['item_0']['config']['renderType']='colorpicker'; 
$GLOBALS['TCA']['tt_content']['item_0']['config']['size']=10; 

$GLOBALS['TCA']['tt_content']['types']['wo_mitem'] = array(
    'showitem' => '--palette--;LLL:EXT:cms/locallang_ttc.xlf:palette.general;general, 
     header;Title, 
     subheader;Background, 
     header_link;Target, 
     item_0;Color, 
     bodytext;Text;;richtext:rte_transform[flag=rte_enabled|mode=ts_css] 
     '); 

Die item_0 ein Versuch war eine Colorpicker zu schaffen, aber es scheint nicht zu funktionieren. Brauche ich etwas anderes in einer anderen Datei? Die ersten paar Zeilen, die ich hinzugefügt habe, um mein Feld zu definieren. Gibt es einen besseren Weg, dies zu tun?

Alle anderen Dateien in meiner benutzerdefinierten Erweiterung funktionieren (da alle anderen benutzerdefinierten Elemente funktionieren). Der einzige Unterschied ist, wie gesagt, die Notwendigkeit einer Möglichkeit, eine Farbe in der neuen Farbe zu wählen.

Nur für einen klareren Blick hier die anderen Dateien

setup.txt:

lib.contentElement { 
    templateRootPaths { 
    100 = EXT:wostyle/Resources/Private/Template 
    } 
} 
tt_content { 
    wo_mitem < lib.contentElement 
    wo_mitem { 
     templateName = MItem 
    } 
} 

tt_content.php

\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPlugin(
    array(
     'WO_Item (ItemBox, Text only)', 
     'wo_mitem', 
     'content-image' 
    ), 
    'CType', 
    'wostyle' 
); 

$GLOBALS['TCA']['tt_content']['item_0']=array();    
$GLOBALS['TCA']['tt_content']['item_0']['label']='Farbe'; 
$GLOBALS['TCA']['tt_content']['item_0']['config']=array(); 
$GLOBALS['TCA']['tt_content']['item_0']['config']['type']='input'; 
$GLOBALS['TCA']['tt_content']['item_0']['config']['renderType']='colorpicker'; 
$GLOBALS['TCA']['tt_content']['item_0']['config']['size']=10; 

$GLOBALS['TCA']['tt_content']['types']['wo_mitem'] = array(
      'showitem' => '--palette--;LLL:EXT:cms/locallang_ttc.xlf:palette.general;general, 
      header;Bezeichnung, 
      subheader;Chemische Bezeichnung, 
      header_link;Zielseite, 
      item_0;Farbe, 
      bodytext;Text;;richtext:rte_transform[flag=rte_enabled|mode=ts_css] 
      '); 

typo.ts

mod.wizards.newContentElement.wizardItems.wo_extra { 
    header = WO Elemente 
    after = common 
    elements { 
    wo_mitem { 
     iconIdentifier = content-image 
     title = WO_Item (ItemBox, Text only) 
     description = Ein Produktfeld mit Text 
     tt_content_defValues { 
      CType = wo_mitem 
     } 
     } 
    } 
    show := addToList(wo_mitem) 
} 

MITEM. html

<div class="item-text"> 
    <f:link.typolink parameter="{data.header_link}"> 
     <div class="item-front"> 
      <f:if condition="{data.subheader}!=''"> 
      <f:then> 
      <div class="item-bg"> 
       <f:format.html>{data.subheader}</f:format.html> 
      </div> 
      </f:then> 
      </f:if> 
      <div class="item-title"> 
       <f:format.html>{data.header}</f:format.html> 
      </div> 
     </div> 
     <div class="item-back"> 
      <f:format.html>{data.bodytext}</f:format.html> 
     </div> 
    </f:link.typolink> 
</div> 
<f:debug>{data}</f:debug> 

EDIT: Ich benutze typo3 8.7.8

Antwort

1

ich den ganzen Code nicht überprüfen, aber ich habe eine auf einem Feld Farbe Kommissionierer arbeiten ... Sie in der Nähe sind, aber ein Fehler, das erscheint

$GLOBALS['TCA']['tt_content']['columns']['item_0']=array(); 

nächste fehlen Ihnen die refference zum Assistenten oben rechts weg ist, dass Ihr Artikel unter ['columns'] ...

platziert werden soll !! (Sie sollten die Anmerkung mit eckigen Klammern erlassen, die viel mehr die Struktur zeigt)

dies sollte in Configuration/TCA/Overrides/tt_content.php gespeichert werden: (wenn Sie vorhandene Felder außer Kraft setzen, sonst haben Sie einen eigenen Code für das Element)

<?php 

/*************** 
* Modify the tt_content TCA 
*/ 
$tca = [ 
    'columns' => [ 
     'item_0' => [ 
      'label' => 'Color', 
      'config' => [ 
       'type' => 'input', 
       'size' => 10, 
       'eval' => 'trim', 
       'default' => '#ffffff', 
       'wizards' => [ 
        'colorChoice' => [ 
         'type' => 'colorbox', 
         'title' => 'LLL:EXT:lang/locallang_wizards:colorpicker_title', 
         'module' => [ 
          'name' => 'wizard_colorpicker' 
         ], 
         'dim' => '20x20', 
         'JSopenParams' => 'height=600,width=380,status=0,menubar=0,scrollbars=1', 
        ], 
       ], 
      ], 
     ], 
    ], 
]; 
$GLOBALS['TCA']['tt_content'] = array_replace_recursive($GLOBALS['TCA']['tt_content'], $tca); 
+0

Tank dich sehr, jetzt funktioniert es. Die "Spalten" fehlten und auch das Feld "item_0" in der Tabelle selbst. :) – Nyxeen

0

Mit Hilfe von WebMan und einigen Internetsuchen konnte ich meinen Code etwas übernehmen. ich die Datei "ext_tables.sql" mit dem Inhalt

CREATE TABLE tt_content (
    item_0 varchar(10) DEFAULT '' NOT NULL, 
); 

und haben die tt_content.php in TCA/Hebt hinzugefügt:

$temporaryColumns = Array(
    "item_0" => Array(
     'label' => 'Color', 
     'config' => Array(
      'type' => 'input', 
      'renderType' => 'colorpicker', 
      'size' => 10 
     ) 
    ) 
); 
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns('tt_content',$temporaryColumns); 

$GLOBALS['TCA']['tt_content']['types']['wo_mitem'] = array(
      'showitem' => '--palette--;LLL:EXT:cms/locallang_ttc.xlf:palette.general;general, 
      header;Bezeichnung, 
      subheader;Chemische Bezeichnung, 
      header_link;Zielseite, 
      item_0;Farbe, 
      bodytext;Text;;richtext:rte_transform[flag=rte_enabled|mode=ts_css] 
      '); 

Es gibt noch ein Blick auf die Dinge webMans in vergleichen fehlt Code, aber zumindest ist dies die erste funktionierende Version, die ich habe, also dachte ich, dass ich es zeige, da meine Frage beantwortet wird :).