Hauptmenü

Werkzeuge

Kategorien

Archiv

Einhell

Media Dateien aus Seite mit Extbase auslesen

Erstellt in Extension Entwicklung, TYPO3 am 15. Februar 2015 vom Daschmi

Um die Elemente die unter „Media“ bei den Seiteneigenschaften gespeichert sind auszulesen kann folgende Methode in einem Repository verwendet werden:

public function getMediaFromPid($pid)
{

  $query = $this->createQuery();
  $query->getQuerySettings()->setReturnRawQueryResult(true);
  $query->statement("
    SELECT
      *
    FROM
      `sys_file_reference` AS REF, `sys_file` AS FILE
    WHERE
      REF.`tablenames` = ‚pages‘ AND
      REF.`fieldname` = ‚media‘ AND
      REF.pid = ? AND
      FILE.`uid` = REF.`uid_local`", array($pid));

  return $query->execute();

}

oder besser:

$fileRepository = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(‚TYPO3\\CMS\\Core\\Resource\\FileRepository‘);
$fileObjects = $fileRepository->findByRelation(‚pages‘, ‚media‘, $p[‚uid‘]);

AltText aus Dateinamen wenn Redakteur keinen Alternativen Text angegeben hat

Erstellt in TS Schnipsel, TYPO3 am 16. Mai 2014 vom Daschmi

Mit folgendem TypoScript Code kann ab TYPO3 6.2 der Text innerhalb des alt Attributs aus dem Dateinamen gebildet werden. Wenn der Redakteur einen alternativen Text angegeben hat, so wird weiterhin dieser verwendet.

tt_content.image.20.1.altText.data = file:current:alternative // file:current:name

das gleiche funktioniert auch mit dem title Tag.

tt_content.image.20.1.titleText.data = file:current:title // file:current:name

Inhalt einer Seite in Extension laden und ausgeben

Erstellt in TYPO3 am 3. Februar 2014 vom Daschmi

Um in einer TYPO3 piBase Extension den Inhalt einer Seite in einer Extension einzulesen und auszugeben, kann folgender Code verwendet werden:


/* UIDs der Content Elemente */
$uids = array(12, 13, 14);

$response = $this->cObj->RECORDS(array(‚tables‘ => ‚tt_content‘, ’source‘ => $uids, ‚dontCheckPid‘ => 1));

Keine Lightobx bei ContentType „Image“ / Inhaltselement „Bilder“

Erstellt in TS Schnipsel, TYPO3 am 21. Januar 2014 vom Daschmi

Bei TYPO3 (Version 6.1.1) und der Extension Perfectlightbox (Version 3.1.4) tritt ein Problem auf wenn man Sie bei dem Inhaltselement „Bilder“ verwenden will. Abhilfe schafft folgender TS Schnipsel:

#
# Notlösung perfectlightbox EXT für Typo3 ab V6.x
#
  tt_content.image.20.1.imageLinkWrap {
  JSwindow = 0
  directImageLink = 1
  typolink.ATagParams {
    dataWrap = rel="lightbox[lb{field:uid}]"
    if.negate = 1
    if.isTrue = TEXT
  }
  typolink.ATagParams.if.isTrue.field = image_link
  typolink.ATagParams.if.isTrue.listNum < .typolink.parameter.listNum
}

Links in TYPO3 in einer Action im Controller generieren

Erstellt in Extension Entwicklung, TYPO3 am 12. Januar 2014 vom Daschmi

Um mit extbase Links in einem Controller zu generieren kann folgender Code verwendet werden:

$data[$k][‚detail_url‘] = $this
->controllerContext
->getUriBuilder()
->reset()
->setArguments(array(‚test‘ => ‚1‘))
->setTargetPageUid($this->settings[‚list_detail_pid‘])
->setCreateAbsoluteUri(true)
->buildFrontendUri(); 

Flexform mit Extbase und Fluid

Erstellt in Extension Entwicklung, TYPO3 am 2. Januar 2014 vom Daschmi

Möchte man sein TYPO3 Extbase Frontend Plugin mit Flexform konfigurieren, so muss in der ext_tables.php folgender Code verwendet werden:

$extensionName = t3lib_div::underscoredToUpperCamelCase($_EXTKEY);
$pluginSignature = strtolower($extensionName).’_frontend‘;
$TCA[‚tt_content‘][‚types‘][‚list‘][’subtypes_addlist‘][$pluginSignature] = ‚pi_flexform‘;
t3lib_extMgm::addPiFlexFormValue($pluginSignature, ‚FILE:EXT:‘.$_EXTKEY.’/Configuration/FlexForms/flexform_frontend.xml‘);

Die Flexformdatei muss dann unter /typo3conf/ext/{extensionkey}/Configuration/FlexForms/flexform_frontend.xml abgelegt werden und kann z.B. so aussehen:

<T3DataStructure>
<sheets>
<sDEF>
<ROOT>
<TCEforms>
<sheetTitle>List Ansicht</sheetTitle>
</TCEforms>
<type>array</type>
<el>
<settings.display_cols>
<TCEforms>
<exclude>1</exclude>
<label>Sichtbare Spalten</label>
<config>
<type>select</type>
<items type="array">
<numIndex index="0" type="array">
<numIndex index="0">Preis</numIndex>
<numIndex index="1">1</numIndex>
</numIndex>
<numIndex index="1" type="array">
<numIndex index="0">Marke</numIndex>
<numIndex index="1">2</numIndex>
</numIndex>
</items>
<maxitems>100</maxitems>
<size>5</size>
</config>
</TCEforms>
</settings.display_cols>
</el>
</ROOT>
</sDEF>
</sheets>
</T3DataStructure>

Wenn man die Felder im XML mit dem Prefix settings. versieht kann man im Controller einfach wie folgt zugreifen:

…
$this->cols = explode(‚,‘, $this->settings[‚display_cols‘]);
…

Statische Klassen mit TYPO3/Extbase

Erstellt in Extension Entwicklung, TYPO3 am 27. Dezember 2013 vom Daschmi

Statische Klassen für Helper etc. können unter /Classes/Utility/{ClassName}.php abgelegt werden und sollten innerhalb des Namensraums \{VendorName}\{PackageName}\Utility liegen. Der Aufruf von Methoden erfolgt dann über \{VendorName}\{PackageName}\Utility\{ClassName}::{Methodenname} aufgerufen werden.

 

PHP_SCRIPT nach Update auf TYPO6

Erstellt in TYPO3 am 16. November 2013 vom Daschmi

In der aktuellen TYPO3 Version (6.1.5) ist es nicht mehr möglich PHP Scripte z.B. über:

lib.langmenu = PHP_SCRIPT_INT
lib.langmenu.file = typo3conf/sprachen.php

einzubinden. Man kann es aber einfach in eine User Klasse packen und wie folgt einbinden:

includeLibs.lang = typo3conf/sprachen.php
lib.langmenu = USER
lib.langmenu.userFunc = user_sprachen->main

Die Klasse sieht dabei wie folgt aus:

<?php

class user_sprachen
 {

function main($content, $conf)
{

…

}

}

?>

TYPO3 – Content Elemente lassen sich nach Update auf TYPO3 6 nicht anlegen.

Erstellt in TYPO3 am 14. November 2013 vom Daschmi

Sollte man eine weiße (oder graue) Seite nach dem Anlegen eines neuen Content Elementes erhalten, so lohnt meist ein Blick in die error.log des Servers. Hier steht vermutlich so etwas drin wie:

[Thu Nov 14 16:29:53 2013] [error] [client 217.92.137.74] PHP Fatal error:  Call to undefined method TYPO3\\CMS\\Core\\Utility\\GeneralUtility::readLLXMLfile() in /local/domains/domainx/html/typo3conf/ext/gallery2/pi1/class.tx_gallery2_pi1_wizicon.php on line 62, referer: http://www.wohnstaetten-wolfenbuettel.de/typo3conf/ext/templavoila/mod1/index.php?id=43&amp;

Um diesen Fehler zu beheben muss man in die Datei (Im Beispiel ist es /local/domains/domainx/html/typo3conf/ext/gallery2/pi1/class.tx_gallery2_pi1_wizicon.php) gehen und folgendes:

$LOCAL_LANG = t3lib_div::readLLXMLfile($llFile, $GLOBALS['LANG']->lang)

durch

$LOCAL_LANG = t3lib_div::readLLfile($llFile, $GLOBALS['LANG']->lang)

ersetzen.