diverse userConfig Einstellungen

Hier einmal ein paar userConfig Einstellungen, die z.B. hilfreich sind, wenn der Redaktionsbenutzer nur seinen Namen oder Passwort ändern darf.

setup.override {
    # Persönliche Daten ein/ausblenden
    realName =
    ## Ihr Name
    email =
    ## Ihre E-Mail-Adresse
    emailMeAtLogin = 0
    ## Mich per E-Mail benachrichtigen, wenn sich jemand mit meinem Konto anmeldet
    password =
    ## Neues Passwort
    password2 =
    ## Neues Passwort (Wiederholung)
    lang = de
    ## Backend-Sprache    
    
    # Beim Start ein/ausblenden    
    startModule =
    ## Beim Start folgendes Modul aufrufen
    thumbnailsByDefault = 0
    ## Vorschaubilder standardmäßig anzeigen
    titleLen = 300
    ## Maximale Titellänge
    
    # Bearbeiten und erweiterte Funktionen ein/ausblenden
    edit_RTE = 0
    ## Rich-Text-Editor aktivieren
    edit_wideDocument = 0
    ## Breiten Hintergrund anzeigen
    edit_docModuleUpload = 0
    ## Hochladen von Dateien direkt im Web-Modul
    enableFlashUploader = 0
    ## Flash-Schnittstelle zum Hochladen aktivieren (erfordert Flash 9+)
    resizeTextareas = 0
    ## Größe von mehrzeiligen Textfeldern anpassbar machen
    resizeTextareas_MaxHeight = 0
    ## Maximale Höhe in der Größe anpassbarer, mehrzeiliger Textfelder in Pixel
    resizeTextareas_Flexible = 0
    ## Textfelder flexibel machen
    disableCMlayers = 0
    ## Inhaltskontextmenüs deaktivieren
    copyLevels = 0
    ## Rekursives Kopieren
    recursiveDelete = 0
    ## Rekursives Löschen
    
    # Adminfunktionen ein/ausblenden    
    simulate =
    ## Backend-Benutzer simulieren
    debugInWindow =
    ## Debug-Meldungen in neuem Browserfenster anzeigen        
    installToolEnableButton =
    ## Zugriff auf Installationsprogramm
    
    ## Rich-Text-Editor ein/ausblenden
    rteWidth =
    ## Breite des RTE in Pixel oder Prozent
    rteHeight =
    ## Höhe des RTE in Pixel oder Prozent
    rteResize =
    ## Größe des RTE veränderlich machen
    rteMaxHeight =
    ## Maximale Höhe des in der Größe veränderlichen RTE
    rteCleanPasteBehaviour =
    ## Modus für sauberes Einfügen
    
    # Weitere einstellungen ein/ausblenden    
    hideSubmoduleIcons = 1
    navFrameResizable = 1
    condensedMode = 0
    noMenuMode =
    startInTaskCenter = 0
    helpText = 1
    edit_showFieldHelp = icon
    ModuleIconSet =
    ModuleIconSetPath =
    ModuleIconSize =
    UsePNGModuleImages = 0
    UsePNGFix = 0
    styleSheetFile_post =
    edit_maxRecords = 2
    noOnChangeAlertInTypeFields = 1
    saveTreePositions = 1
    dontShowPalettesOnFocusInAB = 0
    deleteCmdInClipboard = 0
}

setup.fields{
    # Persönliche Daten ein/ausblenden
    realName.disabled = 1
    email.disabled = 1
    emailMeAtLogin.disabled = 1    
    password.disabled = 0
    password2.disabled = 0    
    lang.disabled = 0

    # Beim Start ein/ausblenden
    startModule.disabled = 1
    thumbnailsByDefault.disabled = 1
    titleLen.disabled = 1    

    # Bearbeiten und erweiterte Funktionen ein/ausblenden
    edit_RTE.disabled = 1
    edit_wideDocument.disabled = 1
    edit_docModuleUpload.disabled = 1
    enableFlashUploader.disabled = 1
    resizeTextareas.disabled = 1
    resizeTextareas_MaxHeight.disabled = 1
    resizeTextareas_Flexible.disabled = 1
    disableCMlayers.disabled = 1
    copyLevels.disabled = 1
    recursiveDelete.disabled = 1
    
    # Adminfunktionen ein/ausblenden    
    simulate.disabled = 
    debugInWindow.disabled = 
    installToolEnableButton = 
    
    # Rich-Text-Editor ein/ausblenden
    rteWidth.disabled = 1
    rteHeight.disabled = 1
    rteMaxHeight.disabled = 1
    rteResize.disabled = 1
    rteCleanPasteBehaviour.disabled = 1

    # Weitere einstellungen ein/ausblenden
    hideSubmoduleIcons.disabled = 
    navFrameResizable.disabled = 
    condensedMode.disabled = 
    noMenuMode.disabled = 
    startInTaskCenter.disabled = 
    helpText.disabled = 
    edit_showFieldHelp.disabled = 
    ModuleIconSet.disabled = 
    ModuleIconSetPath.disabled = 
    ModuleIconSize.disabled = 
    UsePNGModuleImages.disabled = 
    UsePNGFix.disabled = 
    styleSheetFile_post.disabled = 
    edit_maxRecords.disabled = 
    noOnChangeAlertInTypeFields.disabled = 
    saveTreePositions.disabled = 
    dontShowPalettesOnFocusInAB.disabled = 
    deleteCmdInClipboard.disabled = 
}

ACHTUNG: dies ist nur eine Ansammlung von diversen Möglichkeiten auf einen Blick. Diese müssen natürlich von jedem individuell und nach Bedarf angepasst werden.

Wer noch weitere Ergänzungen hat, kann sie uns gerne mitteilen!

HTML-Mails als Standard bei Directmail-/Newsletteranmeldung

Folgendes Problem:
Bei der Anmeldung zu einem Newsletter soll der Haken bei HTML-Mails Standardmäßig eingeschaltet sein. User haben meist nicht die Möglichkeit dies zu steuern.

Dieses kleine Snippet macht es möglich.

# html als Standard
plugin.feadmin.dmailsubscription {
 table=tt_address
 create.overrideValues.disable = 1
 create.overrideValues.module_sys_dmail_html = 1
}

Oder man baut direkt in das Anmeldeformular ein hiddenfield mit dem entsprechenden Wert ein:

lib.nl-anmeldung = HTML
lib.nl-anmeldung.value(
  <div>
    <div><h1>Newsletter</h1></div>
    <form action="kontakt/newsletter/?" method="post" name="tt_address_form" />
      <input type="hidden" name="FE[tt_address][name]" value="---" />
      <p>E-Mailadresse:<br /></p>
      <input type="text" name="FE[tt_address][email]" />
      <input type="hidden" name="FE[tt_address][module_sys_dmail_html]" value="1" />
      <br />
      <input type="submit" name="whatever" value="Eintragen" />      
    </form>
  </div>
)

Direct Mail: interne Newsletter

Das Szenario

  • ein geschützter Kundenbereich
  • ein Newsletter für Kunden (Direct Mail)
  • ein Newsletter-Archiv im Kundenbereich

Das Problem

Wird der Newsletter (bzw. die interne Seite, die dem Newsletter als Basis dient) via Frontend-Benutzergruppen-Einschränkung vor ungewollten Blicken geschützt, kann sein Inhalt auch von Direct Mail nicht gecrawlt werden.
Schützt man die Seite hingegen nicht, kann sie von jedem beliebigen User aufgerufen werden, sobald er die URL kennt.

Die Lösung

Wie löst ihr solche Anforderungen ohne viel Technik-Bastelei?

Weiterlesen»

Maximale Bildbreite und -höhe abhängig vom Rahmen (section_frame)

Nach langem Befragen von Google und keinem passenden Ergebnis, haben wir nun eine Lösung gefunden, wie man die Bildbreite oder -höhe abhängig vom gewählten Rahmen setzen kann.

Die Lösung über tt_content.image.20.maxW.cObject zu gehen ist in unserem Fall nicht flexibel genug gewesen, da hier nur die Breite und nicht die Höhe angesprochen werden kann.

Als erstes wenn gewünscht eigene Rahmen anlegen.

Setup:

tt_content.stdWrap {
 innerWrap.cObject = CASE
 innerWrap.cObject {
  31 =< tt_content.stdWrap.innerWrap.cObject.default
  31.30.value = ><div class="teaser">|</div></div>
  32 =< tt_content.stdWrap.innerWrap.cObject.default
  32.30.value = ><div class="teaser last">|</div></div>
 }
}

Pageconfig:

TCEFORM.tt_content {
 section_frame.removeItems = 1,5,6,10,11,12,20,21
 section_frame.altLabels.0 = Bitte wählen Sie Ihr Layout
 section_frame.addItems.31 = Teaser
 section_frame.addItems.32 = Teaser rechts
}

Als nächstes müssen wir dem tt_content.image noch sagen, dass es eine maximale Breite und Höhe hat und ggf. abgeschnitten oder skaliert wird. Im Beispiel wird das Bild abgeschnitten.

tt_content.image.20.1.file {
# maximale Breite
 width {
  cObject = CASE
  cObject {
   key.field = section_frame
    31 = TEXT
    31.value = 208c-0 
   }
 }
 # maximale Höhe
 height {
  cObject = CASE
  cObject {
   key.field = section_frame
   31 = TEXT
   31.value = 107c-0 
   }
  }
}

 

TYPO3 – Suche erweitern

Wer des öfteren mal die Funktionalität von TYPO3 mit eigenen Extensions erweitert, wird des Öfteren auf das Problem stoßen, dass bei der Erweiterung von Tabellen oder beim anlegen von Extension-spezifischen Datenbanktabellen bei der hauseigenen Suche außen vor bleiben.
Hier ist es sinnvoll, der Suche mitzuteilen, es möge doch bei der Suche auch zusätzliche Felder berücksichtigen. Dies lässt sich einfach und – im Gegensatz zu IF-Abfragen – einfach über TypoScript lösen.

Um der Suche die neuen Datenbank-Tabellen und/oder Felder mitzuteilen, geht man folgendermaßen vor.

Standard-Wert für "Überschriften und Schlagwörter": 
tt_content.search.30.dataArray.20.valueArray.10.value = pages.title-subtitle-keywords-description
Standard-Wert für "Seiteninhalt": 
tt_content.search.30.dataArray.20.valueArray.20.value = pages.title-subtitle-keywords-description : tt_content.header-bodytext-imagecaption

Zur neuen Definition leert man diese zuerst:

tt_content.search.30.dataArray.20.valueArray.10.value >
tt_content.search.30.dataArray.20.valueArray.20.value >

Danach definiert man den Wert neu indem man dem Standard die jeweiligen Felder anhängt:

tt_content.search.30.dataArray.20.valueArray.10.value = pages.title-subtitle-keywords-description-[zusätzliche Werte in der Tabelle "pages"]:[eine zusätzliche Tabelle]-[zusätzliche Felder dieser Tabelle]
tt_content.search.30.dataArray.20.valueArray.20.value = pages.title-subtitle-keywords-description:tt_content.header-bodytext-imagecaption-[zusätzliche Werte in der Tabelle "pages"] : [eine zusätzliche Tabelle]-[zusätzliche Felder dieser Tabelle]

Damit wird auch der Mechanismus klar, wie die zu durchsuchenden Felder definiert werden. Tabellen werden mit Doppelpunkt getrennt, die in der jeweiligen Tabelle zu durchsuchenden Spalten werden mit Dashes („-„) angehängt.

Abschließend muss man die Felder noch als zulässige Suchfelder definieren:

tt_content.search.20.allowedCols = [sämtliche Felder, die als Suchfelder definiert wurden, müssen hier im selben Schema eingetragen werden]

Zusätzlich zur Erweiterung der vorhandenen Filter („Überschriften und Schlagwörter“ und „Seiteninhalt“) ist es ebenso möglich, zusätzliche Filter einzufügen. Dazu fügt man dem Array

tt_content.search.30.dataArray.20.valueArray

einfach ein neues Element hinzu:

tt_content.search.30.dataArray.20.valueArray.30{
    label = Eine neue Option im Selectfeld
    value = [die mit dieser Option zu durchsuchenden Datenbank-Tabellen und Felder, Schema identisch]
}

Natürlich kann man analog auch Optionen entfernen.