Beiträge der Kategorie TYPO3

Favicon in Typo3

Zunächst mal ein favicon erstellen:
Entweder mit einem Grafikbearbeitungsprogramm wie GIMP oder Photoshop, dann als bmp oder gif speichern, in InfanView öffnen und als .ico abspeichern
Oder diese schicke Seite verwenden, um schnell und einfach ein Icons zu erstellen: http://www.favicon.cc/, Ideen holen kann man sich da auch.

Dann ins Hauptverzeichnis des Servers hochladen. Meistens funktioniert es dann auch schon so, aber es ist sinnvoll es noch ins Template einzubauen.
page = PAGE
page.headerData.10 = TEXT
page.headerData.10.value =

Geschrieben in TYPO3 | Kommentare deaktiviert für Favicon in Typo3

Meta-Angaben in TS-Setup

Das sollte man ins TS-Setup reinschreiben, damit seitwert.de bei den "Technischen Details" weniger meckert.

seite {
  meta.keywords = Schlüsselwörter, wichtige Begriffe, mit denen die Seite assoziiert werden soll
  meta.author = Autor der Seite
  meta.description = Beschreibung der Seite, ganze Sätze
  meta.verify-v1 = Google-Webmasters Validierungs-Code
  meta.robots = index
}

Geschrieben in TYPO3 | Kommentare deaktiviert für Meta-Angaben in TS-Setup

Typo3 Links

vor allem für Kerstin 🙂

Zunächst mal gibt es gute Einsteigertutorials. Im ersten wird erklärt, was wie zu bedienen ist und ein paar grundsätzliche Sachen. Im zweiten, wie man ein eigenes HTML-Template einbindet (denn die Typo3 Beispiel Templates sind echt häßlich).
Der Einstieg (doc_tut_quickstart)
Moderne Templateerstellung (doc_tut_templ_sel)

Wenn man das fertig hat, dann empfiehlt sich ein Blick in Typo3 by Example – es ist nett geschrieben (Kaspar hat einen interessanten Humor) und ist sehr aufschlussreich.
TypoScipt by Example (doc_core_tsbyex)

Evtl. könnte auch TypoScript Templates interessant sein, hab ich aber nicht gebraucht.

Auf lange Sicht gesehen, sind die Referenzen für TypoScript sehr sinnvoll. Ich habs mir ausgedruckt und markiere da auch manchmal Wörter oder Absätze.
TSref (doc_core_tsref) – für Template Setup
TSconfig (doc_core_tsconfig) – für Page und User config

Grundsätzlich ist typo3.org die erste Anlaufstelle – da gibt es viele Manuals, Tutorials, Extensions und Informationen. Wenn man da nicht weiterkommt, gibt es nette deutsche Seiten und Foren.

typo3.net enthält eine deutsche Dokumentation zu Typo3, hat ein gutes FAQ. Empfehlenswert ist auch das Probekapitel aus dem Buch „Praxiswissen Typo3„.

Ein sehr hilfsbereites Forum (auch mit FAQ) ist das typo3forum.net, da gibt es auch FAQ und Anleitungen.

Geschrieben in TYPO3 | Kommentare deaktiviert für Typo3 Links

Typo3 Installation lokal unter Windows

Zunächst mal braucht man lokal einen Web- und einen Datenbankserver. Dazu eignet sich am besten XAMPP, auch in der Lite Version.
Gehe auf typo3.org, dann auf „Download“ und anschliessend auf die Packages-Seite.

Um eine funktionierende Typo3-Installation zu bekommen, braucht man pro Typo3-Seite eine Dummy und insgesamt mindestens eine Source. Auf Windows spielt es keine Rolle, da dort keine symbolischen Links möglich sind. Deswegen lädt man sich eine „Source with Dummy size ZIP“-Version herunter. Diese dann entpacken und in den htdocs-Ordner des Servers packen.

Danach ist die Installation relativ einfach. Man ruft die Startseite auf, wenn man dann nicht automatisch auf die Installationsroutine weitergeleitet wird, sollte man /typo3 dranhängen. Daraufhin sollte die Installation gestartet werden – man muss den Datenbankserver angeben, die Zugangsdaten und Typo3 legt dann die Tabellen an.

Wenn man fertig ist, kann man sich in Backend einloggen.

RealURL: Sysfolder-Namen aus Pfad entfernen

Ich lege die Seiten eines Untermenüs gerne in Sysfoldern ab. Das führt leider dazu, dass der Name des Sysfolders in dem Pfad zur Seite erscheint. Eine (meiner Meinung nach einfache und gute) Lösung habe ich hier gefunden:
https://www.xing.com/app/forum?op=showarticles;id=3797882

In der Datei typo3conf/ext/realurl/class.tx_realurl_advances.php ändert man die Zeilen ab 346 zu
if ($rootFound) {
  if (!t3lib_div::inList($this->>conf['excludeDoktypes'], $rootLine[$a]['doktype'])) {
    if (!t3lib_div::inList($this->conf['excludeUids'], $rootLine[$a]['uid'])) {
      $newRootLine[] = $rootLine[$a];
    }
  }
}

die if-Abfrage steht da vorher schon, sie muss nur erweitert werden.

In die Konfguration von RealURL in der localconf.php kann noch folgendes ergänzt werden:
'pagePath' => array(
  'type' => 'user',
    'userFunc' => 'EXT:realurl/class.tx_realurl_advanced.php:&tx_realurl_advanced->main',
    'spaceCharacter' => '-',
    'excludeDoktypes' => '254'
),...

die 254 steht für den Doktype „Sysfolder“.

Geschrieben in TYPO3 | Kommentare deaktiviert für RealURL: Sysfolder-Namen aus Pfad entfernen

RealURL Konfiguration für pro_industrydb und sk_calendar

Auszug aus der RealURL-Konfiguration in der typo3conf/localconf.php
$TYPO3_CONF_VARS['EXTCONF']['realurl']['_DEFAULT'] = array(
'init' => array(...),
'pagePath' => array(...),
'fileName' => array(...),
'postVarSets' => array(
   '_DEFAULT' => array(
    'industrydb' => array(
      array(
        'GETvar' => 'tx_proindustrydb_pi1[showUid]',
        'lookUpTable' => array(
          'table' => 'tx_proindustrydb_entries',
          'id_field' => 'uid',
          'alias_field' => 'title'
        ),
      ),
    ),
    'calendar' => array(
      array(
        'GETvar' => 'tx_skcalendar_pi1[view]',
      ),
      array(
        'GETvar' => 'tx_skcalendar_pi1[uid]',
      ),
      array(
        'GETvar' => 'tx_skcalendar_pi1[offset]',
      ),
      array(
        'GETvar' =>'tx_skcalendar_pi1[datefrom]',
      ),
      array(
        'GETvar' => 'tx_skcalendar_pi1[dateto]',
      ),
      array(
        'GETvar' => 'tx_skcalendar_pi1[targetgroups]',
        'lookUpTable' => array(
          'table' => 'tx_skcalendar_targetgroup',
          'id_field' => 'uid',
          'alias_field' => 'title'
        ),
        'noMatch' => 'bypass',
      ),
      array(
        'GETvar' => 'tx_skcalendar_pi1[categories]',
        'lookUpTable' => array(
          'table' => 'tx_skcalendar_category',
          'id_field' => 'uid',
          'alias_field' => 'title'
        ),
        'noMatch' => 'bypass',
      ),
      array(
        'GETvar' => 'tx_skcalendar_pi1[locations]',
        'lookUpTable' => array(
          'table' => 'tx_skcalendar_location',
          'id_field' => 'uid',
          'alias_field' => 'title'
        ),
        'noMatch' => 'bypass',
      ),
      array(
        'GETvar' => 'tx_skcalendar_pi1[organizers]',
        'lookUpTable' => array(
          'table' => 'tx_skcalendar_organizer',
          'id_field' => 'uid',
          'alias_field' => 'title'
        ),
        'noMatch' => 'bypass',
      ),
    ),
  ),
),
);

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