Beiträge der Kategorie TYPO3

Probleme mit Extension flvplayer

Ich wollte eine Flash Video Datei, die sich bereits im fileadmin Ordner befand, auswählen und einfügen, dabei bekam ich folgende Fehlermeldung:

Filesize of file ... exceeds limit ... (...pi_flexform)

Zunächst sollte man Überprüfen, ob man überhaupt grosse Dateie hochladen kann. Dazu die php-Info anschauen und gegebenfalls in der php.ini den Wert der Variablen upload_max_size ändern. In der php-Info steht, wo die php.ini Datei sein sollte oder ist, falls in dem Ordner keine php.ini ist, kann man die php.ini-recommended aus dem PHP-Ordner dorthin kopieren.

Nachdem das gemacht ist, muss man einige Werte in der Extension selbst anpassen. Im Ordner typo3conf/ext/flvplayer/ in der Datei flexform_ds_pi1.xml folgende Werte anpassen:

Im Bereich “Main”:
<max_size>50000</max_size>

Im Bereich “Flash settings” bei max anstatt 2 3 eintragen, das führt dazu, dass man die Felder “Breite” und “Höhe” auch 3-stellige Zahlen eingeben kann.
<width>
  <TCEforms>
    <exclude>1</exclude>
    <label>LLL:EXT:flvplayer/locallang_db.php:tt_content.flexform_pi1.s_flash.width</label>
    <config>
      <type>input</type>
      <size>5</size>
      <max>3</max>
      <checkbox></checkbox>
      <eval>num</eval>
    </config>
  </TCEforms>
</width>
<height>
  <TCEforms>
    <exclude>1</exclude>
    <label>LLL:EXT:flvplayer/locallang_db.php:tt_content.flexform_pi1.s_flash.height</label>
    <config>
      <type>input</type>
      <size>5</size>
      <max>3</max>
      <checkbox></checkbox>
      <eval>num</eval>
    </config>
  </TCEforms>
</height>

Geschrieben in TYPO3 | Kommentare deaktiviert für Probleme mit Extension flvplayer

Menüpunkten ein individuelles Bild zuweisen

Es soll ein Menü erstellt werden (TMENU oder GMENU) mit unterschiedlichen Bildern vor dem Seitentitel. Es gibt zwei Weisen, an das Problem heranzugehen.

Die erste Möglichkeit ist, das Bild bei den Seiteneingenschaften in das Feld “Media” einzufügen. Beim Abspeichern wird eine Kopie der Bilddatei in den Ordner “uploads” gelegt, mit listNum nimmt man genau das erste Bild. Dann kann man das Bild so auslesen:

1 = HMENU
  1.1 = TMENU
  1.1.NO = 1
  1.1.NO {
    1 = TEXT
    1.field = media
    1.listNum = 0
    1.wrap = <img src="uploads/media/|" />
    2 = TEXT
    2.field = TITLE
  }
}

Vorteil der Methode: Auch ein Redakteur kann es machen. Nachteil: falls man das Bild austauschen möchte, muss man es neu zuweisen.

Die zweite Möglichkeit ist die Bilder in einen bestimmten Ordner zu packen (z.B. fileadmin/bildmenu/) und dann entsprechend der Seiten-ID zu benennen. Also bild_12.gif soll der Seite mit der ID 12 zugewiesen werden. Und so sieht der vereinfachte Code dann aus:

1 = HMENU
  1.1 = TMENU
  1.1.NO = 1
  1.1.NO {
    1 = TEXT
    1.field = uid
    1.listNum = 0
    1.wrap = <img src="fileadmin/menubilder/bild_|.gif" />
    2 = TEXT
    2.field = TITLE
  }
}

Vorteil dieser Methode: Tausch man ein Bild aus, ist es gleich anders. Nachteil: Man muss mit der Bildbenennung genau sein und die Bilder nicht aus Versehen löschen dürfen.

Nachtrag: Aus dem Typo3-Forum kommt noch der folgende Vorschlag:

10 = IMAGE
10 {
  file.maxH = 200
  file.maxW = 760
  file.import = uploads/media
  file.import.data = levelmedia: -1, slide
  file.import.listNum = 0
  fiel.import.override.field = media
}

Wenn im Feld Media der Seite etwas steht, dann wird dieser Wert genommen, ansonsten der Wert der übergeordneten Seite.

Geschrieben in TYPO3 | Kommentare deaktiviert für Menüpunkten ein individuelles Bild zuweisen

Fehler bei Send-A-Card

Habe Send-A-Card installiert (sr_sendcard) – tolle Extension. Hatte nur leider gleich einen Fehler. Alles konfiguriert wie angegeben, bekomme aber eine leere Seite und die Fehlermeldung “cannot access empty property in” und dann der Pfad zu class.tx_srsendcard_pi1.php. Nach einigem Raten, Ärgern und Recherche folgende Lösung gefunden: Da sind ein paar $ zu viel, also nach
$this->$subpart
suchen und durch
$this->subpart
ersetzen. Betroffen sind die Zeilen 260 bis 280, insgesamt 4 Ersetzungen.

Die ultimative Suche – zwei Suchextensions kombinieren

Es gibt einige Suchextensions für Typo3: die Indexed Search durchsucht PDFs und gecachte Seiten, aber leider keine Datensätze, andere Extensions durchsuchen Datensätze, aber keine PDFs. Also beschloss ich zwei Extensions zu kombinieren.

Die erste ist die an_searchit: eine tolle Extensions, die mit TypoScript perfekt an die Bedürfnisse angepasst werden kann, durchsucht Datensätze.
http://typo3.org/extensions/repository/view/an_searchit/2.4.1/

Die zweite ist die indexed_search: durchsucht gecachte Seiten und externe Dokumente (ist seit 4.0 eine Systemextension).

Ich brauche zwei Seiten, die erste ist sichtbar, da kommt die Suchbox drauf. Die zweite ist untergeordnet und unsichtbar, da sollen die Ergebnisse angezeigt werden. Auf der ersten Seite Extensiontemplate anlegen und die an_searchit konfigurieren, in diesem Fall sollen die Tabellen der Branchendatenbank (pro_industrydb) und der Veranstaltungskalender (sk_calendar) durchsucht werden:

temp.renderHeader {
length = 100
wrap = <h2>|</h2>
markupColor = #ff0000
}
temp.renderBody {
length = 100
wrap = <p>|</p>
markupColor = #ff0000
}
temp.searchitConfig {
sections {
2 {
title = Veranstaltungen
table = tx_skcalendar_events
fields = title|description
PID = 8
customBody.show = 1
customBody.title < temp.renderHeader
customBody.description < temp.renderBody
}
3 {
title = Branchenbucheinträge
table = tx_proindustrydb_entries
fields = title|short|description|addinfo
PID = 54
#doNotShowLink = 1
params = tx_proindustrydb_pi1[showUid]=#uid#&tx_proindustrydb_pi1[backLink]=80
customBody.show = 1
customBody.title < temp.renderHeader
customBody.description < temp.renderBody
}
}
}

seite.10.marks.CONTENT_CENTER >
seite.10.marks.CONTENT_CENTER = COA
# configure the search form
seite.10.marks.CONTENT_CENTER.10 < plugin.tx_ansearchit_form
seite.10.marks.CONTENT_CENTER.10 {
resultPID = 80
format = label,field,button
label.caption = Suche
label.cssStyle = margin-right: 10px;
field.title = Bitte geben Sie einen Suchbegriff ein
field.cssStyle = margin-right: 10px;
button.caption = Suchen
}
seite.10.marks.CONTENT_CENTER.80 < styles.content.get
plugin.tx_indexedsearch.show.advancedSearchLink = 0

Auf die zweite Seite kommt das Ergebnis hin. Das hab ich auf der ersten Seite vorkonfiguriert. Wieder Extensiontemplate anlegen und die beiden Extensions konfigurieren. Auf dieser Seite wird als Content Element die indizierte Suche eingebunden, die das Suchwort auch bekommen und auswerten soll. Deswegen schreib ich ein Mini-PHP-Skript, das diese Aufgabe für mich übernimmt:

Das Skript speichere ich im Ordner fileadmin/script als switch_search_vars.inc ab. Nun muss ich nur noch die Extension konfigurieren und das Skript einbinden.

config.no_cache = 1
# set post vars from indexed search
seite.10.marks.CONTENT_CENTER.5 = PHP_SCRIPT
seite.10.marks.CONTENT_CENTER.5.file = fileadmin/script/switch_search_vars.inc
# configure the search result overview
seite.10.marks.CONTENT_CENTER.20 < plugin.tx_ansearchit_resOverview
seite.10.marks.CONTENT_CENTER.20 {
config < temp.searchitConfig headline.show = 1 headline.caption = Gefunden in folgenden Bereichen headline.wrap = <h1 class="sectionsHeader">|</h1><p>klicken Sie eine Bereich an, um die komplette Ergebnisliste anzuzeigen</p> sections.format = name, count sections { NO.wrap = <strong>|</strong><br /> ACT = 1 ACT.doNotLink = 1 ACT.wrap = <strong>|</strong><br /> name.wrap = | count.wrap =  (|) } sections.wrap = <div class="sectionsDisplay">|</div> noResults.caption = Ihre Suche brachte leider keine Ergebnisse } #configure the search result list seite.10.marks.CONTENT_CENTER.30 < plugin.tx_ansearchit_resList seite.10.marks.CONTENT_CENTER.30 { config < temp.searchitConfig headline.show = 1 headline.caption = Ergebnisse headline.wrap = <h1 class="resultsHeader">|</h1> outString = <div class="resultItem">###BODY### ###LINK###</div> }

Mann kann noch aus dem HTML-Template der indexed_search die Inhalte vom Marker SEARCH_FORM löschen, damit immer nur ein Suchformular angezeigt wird.

Geschrieben in TYPO3 | Kommentare deaktiviert für Die ultimative Suche – zwei Suchextensions kombinieren

DB-Abfrage bei Zuordnung im BLOB

In Typo3 werden 1:n Beziehungen als kommaseparierte Liste in einem BLOB gespeichert. Dabei ist es nicht ohne weiteres möglich das Feld zu bearbeiten oder aus dem Feld auszulesen. Um aus einem solchen Feld auszulesen, liefert TYPO3 sinnvolle Funktionen, die man bei der Extensionentwicklung einsetzen kann. In der ersten Zeile bastelt man sich mit der Hilfe der Funktion listQuery einen Abfragestring. In diesem Fall sollte der gesuchte Eintrag der Kategorie $catint angehören, die Liste steht dazu im Feld ‘category’. Die Variable $table enthält den Namen der Tabelle, die Abgefragt werden soll. Die zweite Zeile führt eine Anfrage aus, in $fields gibt man die Felder an, die zurückgegeben werden sollte. An den Where-String aus der ersten Zeile kann man bei Bedarf weitere Abfragen dranhängen wie z.B. ‘hidden=0 AND deleted=0’.

$where = $GLOBALS['TYPO3_DB']->listQuery('category',$catint,$table);
$res = $GLOBALS['TYPO3_DB']->exec_SELECTquery($fields,$table,$where);

Geschrieben in TYPO3 | Kommentare deaktiviert für DB-Abfrage bei Zuordnung im BLOB

Per TS Wert einer GET/POST Variablen auslesen

Wenn der Wert einer GET oder POST Variablen irgendwo per TS ausgelesen werden soll:

10 = TEXT
10.data = GPvar:foo

Dabei ist foo der Name der POST oder GET-Variablen. Falls die benötigte Variable jedoch in einem Array steht, kann man so darauf zugreifen:

Input-Feld:

<input type="text" name="foo[bar]" value="irgendwas" />

TS-Setup:

10 = TEXT
10.data = GPvar:foo|bar

Geschrieben in TYPO3 | Kommentare deaktiviert für Per TS Wert einer GET/POST Variablen auslesen

Zurück zur Suchseite – Nachfrage vermeiden

Das Problem: man hat nach was gesucht und es wurde eine Liste angezeigt. Nun möchte man gerne zurück zur Suchseite. Normalerweise klickt man auf den “zurück”-Button im Browser und es kommt ein Fenster mit der Nachricht, dass die Seite nicht mehr gültig ist.

Es ist nicht möglich die Suche auf GET umzustellen wie Google, aber es möglich das Caching des Browsers zu beeinflussen.

Dazu schreibe man die folgende Zeile ins Ext-Template der Suchseite. Cache-Control ist ein HTTP 1.1 Header, der das Caching von Browsers und Proxies steuert. “max-age” ist die relative Angabe in Sekunden, wie lange das dokument noch Gültigkeit besitzt – in diesem Fall einen Tag lang(24*60*60). “must-revalidate” zwingt den Browser dazu, eben genau die oben genannte Einstellung zu beachten.

config.additionalHeaders = Cache-Control: max-age=86400, must-revalidate

Ich habs nicht selbst rausgefunden, vielen Dank ans Forum auf typo3.net.

www.typo3.net/forum/list/list_post//42160/

Voreinstellungen für Content Elemente

Bestimmte Attribute eines Content Elementes können vorbelegt werden, wie z.B. Bilderrahmen, Bildgröße etc.

Beim Anlegen eines neuen Datensatzes in tt_content soll die Bildgröße auf 338×338, der Bildrand auf 1px eingestellt werden. Das Bild wird links oben ausgerichtet und es ist ein 1-spaltiges Layout.

Die dazugehörige Konfiguration im TSconfig (der Gruppe oder des Benutzers):

TCAdefaults.tt_content {
imageborder = 1
imagewidth = 338
imageheight = 338
imagecols = 0
imageorient = 0
}

Eine andere Möglichkeit ist ein Hook und die dadurch erst mögliche Definition der Standardwerte im Page-TSconfig: http://www.typo3-profibuch.de/artikelansicht/backend-default-werte-per-tsconfig-setzen/

Geschrieben in TYPO3 | Kommentare deaktiviert für Voreinstellungen für Content Elemente

Rahmen bei Content Elementen selektieren und umbenennen

Bei Content Elementen gibt es die Möglichkeit einen Rahmen anzugeben. Default ist das ein Abstand von x Pixeln davon bzw. danach. Man kann diesen Rahmen aber dazu verwenden, um Content Elemente mit komplett anderen Rahmen zu versehen.

Mit der folgenden Einstellung können unnötige Rahmen ausgeblendet werden:

TCEFORM.tt_content.section_frame {
removeItems = 1,5,6,7,10
}

Jedem Rahmentyp ist eine Zahl zugeordnet. Diese Zahlen bekommt man raus, wenn man sich den Quelltext des Frames anschaut. Dann werden die bleibenden Rahmen umbenannt, damit der FE-Benutzer weiß, was ein bestimmter Rahmen bewirkt:

TCEFORM.tt_content.section_frame {
altLabels.0 = Kein Rahmen
altLabels.11 = Rahmen grau doppelt hoch
altLabels.12 = Rahmen bunt doppelt hoch
altLabels.20 = Rahmen grau einfach hoch
altLabels.21 = Rahmen bunt einfach hoch
}

Anschliessend werden die Wraps der Rahmen im TSOB angepasst:

tt_content.stdWrap.innerWrap.cObject.20.value = <table border="0" class="content_normal" cellspacing="0" cellpadding="{$styles.content.frames.padding}"><tr><td>|</td></tr></table>
tt_content.stdWrap.innerWrap.cObject.21.wrap = |
tt_content.stdWrap.innerWrap.cObject.21.value = <table border="0" class="content_bunt" cellspacing="0" cellpadding="{$styles.content.frames.padding}"><tr><td>|</td></tr></table>
tt_content.stdWrap.innerWrap.cObject.11.value = <table border="0" cellspacing="0" cellpadding="{$styles.content.frames.padding}" class="content_normal_high"><tr><td>|</td></tr></table>
tt_content.stdWrap.innerWrap.cObject.12.value = <table border="0" cellspacing="0" cellpadding="{$styles.content.frames.padding}" class="content_bunt_high"><tr><td>|</td></tr></table>

GET-Variable einfügen

Falls eine GET-Variablen gesetzt ist, sollte sie an dieser Stelle eingefügt werden, ansonsten ein Standartwert.

page.config.no_cache = 1
seite.config.no_cache = 1
plugin.tx_proapagopixel_pi1.group &gt;
plugin.tx_proapagopixel_pi1.group = TEXT
plugin.tx_proapagopixel_pi1.group.value = Allgemein
plugin.tx_proapagopixel_pi1.group.override.data = global:HTTP_GET_VARS|eventName
plugin.tx_proapagopixel_pi1.group...

Geschrieben in TYPO3 | Kommentare deaktiviert für GET-Variable einfügen