Programmieren lernen | Codebeispiele | Jobbörse | Webentwicklung

TYPO3 – Eine News mit Kategorien über Powermail-Formular erstellen

Wer seinen Besuchern ermöglichen möchte, selbst News zu erstellen, wird dieses Snippet lieben. Wir benutzen in diesem Fall ein Powermail Formular, dass die eingetragenen Werte in die News Datenbanktabelle schreibt. Benutzer von den System Kategorien in TYPO3 kommen hierbei auch nicht zu kurz.

plugin.tx_powermail.settings.setup {
  dbEntry {
    1 {
      _enable = TEXT
      _enable.value = 1

      _table = TEXT
      _table.value = tx_news_domain_model_news

      # Die ID des Sys-Ordners in der die News gelistet werden
      pid = TEXT
      pid.value = 22

      tstamp = TEXT
      tstamp.data = date:U

      crdate = TEXT
      crdate.data = date:U

      cruser_id = TEXT
      cruser_id.value = 1

      # value 1 = News ist verborgen und muss erst freigegeben werden
      hidden = TEXT
      hidden.value = 1

      # ueberschrift ist die Powermail Variable ohne {}
      title = TEXT
      title.field = ueberschrift

      # untertitel ist die Powermail Variable ohne {}
      teaser = TEXT
      teaser.field = untertitel

      # beschreibung ist die Powermail Variable ohne {}
      bodytext = TEXT
      bodytext.field = beschreibung

      datetime = TEXT
      datetime.data = date:U

      # name ist die Powermail Variable ohne {}
      author = TEXT
      author.field = name

      # e_mail ist die Powermail Variable ohne {}
      author_email = TEXT
      author_email.field = e_mail

      # kategorie ist die Powermail Variable ohne {}
      categories = TEXT
      categories.field = kategorie
      }

    2 {
      _enable = TEXT
      _enable.value = 1

      _table = TEXT
      _table.value = sys_category_record_mm

      tablenames = TEXT
      tablenames.value = tx_news_domain_model_news

      fieldname = TEXT
      fieldname.value = categories

      sorting_foreign = TEXT
      sorting_foreign.value = 1

      uid_local = TEXT
      uid_local.field = kategorie

      uid_foreign = TEXT
      uid_foreign.field = uid_1
      }
   }
}

#Radiobutton Kategorien im Formular
lib.newsCategory = CONTENT
lib.newsCategory {
  table = sys_category
  select {
    # Die ID des Sys-Ordners mit den Kategorien
    pidInList = 22
  }
  renderObj = COA
  renderObj {
    10 = TEXT
    10.field = title

    20 = TEXT
    20.value = |

    30 = TEXT
    30.field = uid

  stdWrap.wrap = |[\n]
  }
}

Im TYPO3 Backend muss nur noch dem Powermail Formular-Feld „Kategorie“ unter Erweitert bei „Aus TypoScript generieren“ noch „lib.newsCategory“ eingetragen werden:

Mit Powermail News erstellen

Auswahl TYPO3 Kategorien begrenzen

Unser Skript gibt alle Kategorien aus die erstellt wurden. Wer jetzt nur bestimmte im Formular anzeigen lassen möchte, kann im select Bereich noch mit uidInList die Auswahl begrenzen:

...
select {
  pidInList = 22
  uidInList  = 2,3
}
...

 

Getestet mit TYPO3 8.7.15, Powermail 6.0 und News 7.0.4

7 Gedanken zu „TYPO3 – Eine News mit Kategorien über Powermail-Formular erstellen“

  • Dirk
    26.10.2018 um 10:29

    Leider werden diese so ausgegeben:
    Restaurant|1Café|2Bekleidung Damen| 3Bekleidung Männer|4Optiker|5Werbeagentur|6Rechtsanwälte| 7Küchenstudios|8Druckerei|9Krankenhaus| 10Friseur|11Juwelier|12Metzgerei| 13Supermarkt|14Bank|15Bücherei| 16Einkaufen|17Stadtwerke| 18Therme Schwimmbad|19Weingut|20S

  • Markus
    10.11.2018 um 16:26

    Hallo Dirk,
    kannst du mir Details liefern?
    Welche TYPO3 Version, Powermail Version und News Version verwendest du?
    Und deine Ausgabe bezieht sich auf die Kategorien oder?

  • MS
    24.07.2019 um 17:47

    Wie sähe das ganze aus, wenn man dazu noch ein Bild der News hinzufügen möchte?

    Hat das schonmal jemand bewerkstelligt?

    Danke und viele Grüße!

  • MS
    25.07.2019 um 14:12

    Ok, habs selber hinbekommen Bilder zur News zu speichern:

    # Deaktiviert das Speichern von Powermail-Datensätzen
    plugin.tx_powermail.settings.setup.db.enable = 0

    # Setzt den Speicherort für die Bilder
    plugin.tx_powermail.settings.setup.misc.file.folder = fileadmin/dein/Ordner/
    module.tx_powermail.settings.uploadPath = fileadmin/dein/Ordner/

    plugin.tx_powermail.settings.setup {
    dbEntry {
    1 {
    _enable = TEXT
    _enable.value = 1

    _table = TEXT
    _table.value = tx_news_domain_model_news

    # Die ID des Sys-Ordners in der die News gelistet werden
    pid = TEXT
    pid.value = 22

    tstamp = TEXT
    tstamp.data = date:U

    crdate = TEXT
    crdate.data = date:U

    cruser_id = TEXT
    cruser_id.value = 1

    # value 1 = News ist verborgen und muss erst freigegeben werden
    hidden = TEXT
    hidden.value = 1

    # ueberschrift ist die Powermail Variable ohne {} in diesem Fall „title“
    title = TEXT
    title.field = title

    # untertitel ist die Powermail Variable ohne {} in diesem Fall „shortsummary“
    teaser = TEXT
    teaser.field = shortsummary

    # beschreibung ist die Powermail Variable ohne {} in diesem Fall „text“
    bodytext = TEXT
    bodytext.field = text

    datetime = TEXT
    datetime.data = date:U

    # name ist die Powermail Variable ohne {} in diesem Fall „author“
    author = TEXT
    author.field = author

    # Bildzuweisung aktivieren
    fal_media = TEXT
    fal_media.value = 1
    }
    2 {
    _enable = TEXT
    _enable.value = 1

    _table = TEXT
    _table.value = sys_file

    pid = TEXT
    pid.value = 0

    tstamp = TEXT
    tstamp.data = date:U

    missing = TEXT
    missing.value = 0

    # Die ID des Storage
    storage = TEXT
    storage.value = 1

    # Typ 2 = Bilder
    type = TEXT
    type.value = 2

    metadata = TEXT
    metadata.value = 0

    name = TEXT
    name.field = picture

    # Pfad relativ zum Storage definieren
    identifier = TEXT
    identifier.field = picture
    identifier.wrap = /dein/Ordner/|

    creation_date = TEXT
    creation_date.data = date:U

    modification_date = TEXT
    modification_date.data = date:U
    }
    3 {
    _enable = TEXT
    _enable.value = 1

    _table = TEXT
    _table.value = sys_file_reference

    tablenames = TEXT
    tablenames.value = tx_news_domain_model_news

    fieldname = TEXT
    fieldname.value = fal_media

    sorting_foreign = TEXT
    sorting_foreign.value = 1

    uid_local = TEXT
    uid_local.field = uid_2

    table_local = TEXT
    table_local.value = sys_file

    uid_foreign = TEXT
    uid_foreign.field = uid_1

    showinpreview = TEXT
    showinpreview.value = 1

    tstamp = TEXT
    tstamp.data = date:U

    crdate = TEXT
    crdate.data = date:U

    cruser_id = TEXT
    cruser_id.value = 1

    # Die ID des Sys-Ordners in der die News gelistet werden
    pid = TEXT
    pid.value = 22
    }
    }
    }

  • Markus
    25.07.2019 um 17:26

    Hallo MS,

    vielen Dank für das Posten der Lösung!

  • Tobias Kasprak
    30.03.2020 um 17:26

    Hallo,
    gibt es hier noch eine Möglichkeit, ein in den Ressourcen hinterlegtes Bild einzufügen:
    so als:
    40 = IMAGE..

    renderObj = COA
    renderObj {
    10 = TEXT
    10.field = title

    20 = TEXT
    20.value = |

    30 = TEXT
    30.field = uid

    stdWrap.wrap = |[\n]
    }

  • Markus
    30.03.2020 um 18:52

    Hallo Tobias, schau mal ein paar Kommentare oberhalb.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.