[Frage] Zusätzlich angezeigte Felder aus den Seiteneigenschaften nicht in pages sondern in eigene Tabelle schreiben TYPO3-Version: 4.7.7

  • michak michak
    T3PO
    0 x
    15 Beiträge
    0 Hilfreiche Beiträge
    06. 11. 2013, 16:06

    Hi,

    Ich habe in ext_tables.php einige zusätzliche Felder definiert und lasse diese als zusätzlichen Reiter in den Seiteneigenschaften einer Standardseite anzeigen. Jedoch möchte ich die Feldwerte nun nicht in der Tabelle pages sondern in einer eigenen (neu angelegten) Tabelle abspeichern. Dafür habe ich in ext_tables.sql ein entsprechendes CREATE TABLE für die benötigten Felder eingetragen. Die Tabelle existiert auch schon in der DB.

    Ist mein Vorhaben überhaupt umsetzbar? Schließlich muss ich ja die uid aus pages als pid der neuen Tabelle referenzieren.

    In ext_tables.php habe ich bisher folgendes zu stehen.

    1. $tmp_additionalpagesfields = array(
    2. 'published_by' => array(
    3. 'exclude' => 0,
    4. 'label' => 'Feld_Label',
    5. 'config' => array(
    6. 'type' => 'input',
    7. 'size' => '30',
    8. 'eval' => 'required',
    9. )
    10. ),
    11. ...
    12. );
    13. t3lib_div::loadTCA('pages, tx_extkey');
    14. t3lib_extMgm::addTCAcolumns('pages', $tmp_additionalpagesfields, 1);
    15. t3lib_extMgm::addToAllTCAtypes('pages', '--div--;ReiterLabel, published_by, etc');

    Leider wird derzeit der zusätzliche Reiter in den Seiteneigenschaften nur angezeigt wenn ich überall pages schreibe. Beim Speichern bekomme ich so natürlich die Fehlermeldung, das es die Felder nicht in der Tabelle pages gibt. :-)

    Über einen Tipp wäre ich sehr dankbar.
    Grüße MichaK

  • Hilfreichster Beitrag

  • 1 x
    3253 Beiträge
    152 Hilfreiche Beiträge
    11. 11. 2013, 09:15 - Hilfreichster Beitrag

    Hallo Micha.

    Dein Vorhaben halte ich für kaum umsetzbar. TYPO3 greift an verschiedenen Stellena uf den im TCA gesetzten Tabellennamen zurück, um diesen dann in SQL-Queries einzusetzen (z.B. für enableFields).
    Eventuell wäre eine Möglichkeit, eine Einbindung via IRRE, wobei das auch irgendwie unlogisch von Aufbau und Struktur her werden würde (für diesen Zweck).
    Eventuell wäre auch ein konstrukt möglich, dass du [i]pages[/i] umbenennst und stattdessen eine gejointe Variante (pages + Deine Tabelle) als View [i]pages[/i] bereitstellst.

    Was ist eigentlich der Grund, weshalb die zusätzlichen Felder in seperater Tabelle stehen sollen?

    Viele Grüße
    Julian


  • 1
  • 1 x
    3253 Beiträge
    152 Hilfreiche Beiträge
    11. 11. 2013, 09:15

    Hallo Micha.

    Dein Vorhaben halte ich für kaum umsetzbar. TYPO3 greift an verschiedenen Stellena uf den im TCA gesetzten Tabellennamen zurück, um diesen dann in SQL-Queries einzusetzen (z.B. für enableFields).
    Eventuell wäre eine Möglichkeit, eine Einbindung via IRRE, wobei das auch irgendwie unlogisch von Aufbau und Struktur her werden würde (für diesen Zweck).
    Eventuell wäre auch ein konstrukt möglich, dass du [i]pages[/i] umbenennst und stattdessen eine gejointe Variante (pages + Deine Tabelle) als View [i]pages[/i] bereitstellst.

    Was ist eigentlich der Grund, weshalb die zusätzlichen Felder in seperater Tabelle stehen sollen?

    Viele Grüße
    Julian

  • michak michak
    T3PO
    0 x
    15 Beiträge
    0 Hilfreiche Beiträge
    14. 11. 2013, 08:30

    Hi Julian, Danke für deine Antwort.
    Der Grund für meine Überlegung war, die pages Tabelle nicht so mit zusätzlichen Spalten voll zu packen. Aber mir wird klar, wie unsinnig dass eigentlich ist.
    In zwischen habe ich nun alle Spalten direkt in die pages gepackt.
    Nichts desto trotz bringt deine Antwort Klarheit, falls mal wieder einer auf so eine Idee kommen sollte. LOL
    Eine Variante mit Joints habe ich nicht versucht. Keine Ahnung ob und wie dies gehen würde.

    .:Anschlussfrage:.
    Gibt es eine Möglichkeit, im Umkehrschluss zum hinzufügen eigener Felder mit addToAllTCAtypes() z.B., bestehende Core-Felder im BE zu entfernen? Ganz oder nur bei bestimmten doktypes.
    Zum Beispiel bei doktype "1" Standard-Seite, im Reiter Metadaten, die komplette Palette Redaktion oder nur einzelne Felder davon.

    Grüße MichaK

  • michak michak
    T3PO
    0 x
    15 Beiträge
    0 Hilfreiche Beiträge
    14. 11. 2013, 09:13

    .:Anschlussfrage:.
    Gibt es eine Möglichkeit, im Umkehrschluss zum hinzufügen eigener Felder mit addToAllTCAtypes() z.B., bestehende Core-Felder im BE zu entfernen? Ganz oder nur bei bestimmten doktypes.
    Zum Beispiel bei doktype "1" Standard-Seite, im Reiter Metadaten, die komplette Palette Redaktion oder nur einzelne Felder davon.

    Etwas suchen kann manchmal auch hilfreich sein. :-)

    In seiner EXT, zum Beispiel in der ext_tables.php, erreicht man es mit folgender Anweisung.

    1. t3lib_extMgm::addPageTSConfig('
    2. TCEFORM.pages {
    3. author.disabled = 1
    4. author_email.disabled = 1
    5. lastUpdated.disabled = 1
    6. }
    7. ');

    Bei mir halt die oben als Bsp. erwähnten Felder im Reiter Metadaten.

    Man kann die Anweisung auch in den Root seines Seitenbaums legen.
    Dazu die Seiteneigenschaften von Root bearbeiten und im Reiter "Ressourcen" im Bereich Seiten-TSconfig folgendes eintragen.

    1. TCEFORM.pages {
    2. author.disabled = 1
    3. author_email.disabled = 1
    4. lastUpdated.disabled = 1
    5. }

    .:Anschlussfrage:.
    Die Anweisung in den Root zu legen, ist dies der richtige/beste Platz? Oder, kann man sie auch in ein Template auslagern?
    Wollte hier zum Bsp. das Root-Template im Ordner "TypoScript Templates" aus dem Intruduction Package 4.7.7 nutzen, aber das zeigt keine Wirkung.

    Grüße MichaK

  • 1