25. März 2014

RealUrl in eID-Service verfügbar machen

Benötigt man innerhalb eines eID-Services einen RealUrl-konformen Link, muss man etwas nachhelfen:

Innerhalb der eid_main – Methode fügt man folgende Zeilen hinzu:

if(t3lib_extMgm::isLoaded('realurl')){
require_once(t3lib_extMgm::extPath('realurl').'class.tx_realurl.php');
$this->realurl = t3lib_div::makeInstance('tx_realurl');
$GLOBALS['TSFE']->config['config']['tx_realurl_enable'] = 1;
}

und an entsprechender Stelle:

$conf['LD'] = $GLOBALS['TSFE']->tmpl->linkData(array('uid' => $targetPageUid), '', 0, 'index.php', '', t3lib_div::implodeArrayForUrl('', array('param1' => $param1)));
$url = $conf['LD']['totalURL'];

Die Methode linkData ist definiert:
t3lib_TStemplate::linkData($page, $oTarget, $no_cache, $script, $overrideArray = '', $addParams = '', $typeOverride = '')

und ist hier auch noch mal beschrieben.

 

Anmerkungen gern hier in den Kommentaren.

3. Dezember 2013

Mehrsprachige News auch ohne Default-Übersetzung

Im Normalfall legt man im TYPO3 eine News zuerst in der Standardsprache an und legt dann zu dieser News die Übersetzungen an.

Möchte man nun eine News nur in einer speziellen Sprache erstellen, ohne vorher die News in der Default-Sprache zu erstellen, hilft man sich mit folgendem TypoScript-Schnipsel im tt_news-TypoScript-Setup:


plugin.tt_news.sys_language_mode = strict
plugin.tt_news.showNewsWithoutDefaultTranslation = 1

9. Juli 2013

Eindeutige ID für Body-Tag

Manchmal möchte man Elemente, die auf verschiedenen Seiten wiederkehren, für spezielle Seiten per CSS formatieren. Lösungsansätze gibt es hierfür verschiedene. Inhalts-Elemente besitzen ja schon eigene IDs (c123), über die man das Element ansprechen kann.

Dennoch ist es manchmal von Vorteil, der BODY-Tag hätte eine eigene ID (oder Klasse), über die man alle Inhalte innerhalb ansprechen kann.

Dazu ist folgendes TypoScript (Setup) notwendig:

page.bodyTag >
page.bodyTagCObject = TEXT
page.bodyTagCObject.field = uid
page.bodyTagCObject.wrap = <body id="page-|">

Wenn wir jetzt noch eine Klasse hätten, die auch noch die ID der übergeordneten Seite ausgäbe, so wäre es natürlich noch besser.

page.bodyTag >
page.bodyTagCObject = TEXT
page.bodyTagCObject.field = uid
page.bodyTagCObject.wrap = <body id="page-|" class="parent-{field:pid}">
23. Dezember 2012

Rechte-Problem trotz Admin

Bei der aktuellen (4.7.7) Version von TYPO3 wurde das Anlegen von neuen Inhaltselementen mit der Meldung „Sorry, you didn’t have proper permissions to perform this change.“ (oder auf deutsch: „Sie haben nicht die nötigen Rechte, um diese Änderung durchzuführen“) abgebrochen. Trotz angemeldeten Admin-Nutzers.

Hierbei scheint es sich um einen Bug im TYPO3 (bzw. TemplaVoilá) zu handeln (http://bugs.typo3.org/view.php?id=18583). Dabei scheint TemplaVoilá auf ein Feld in der pages-Tabelle zugreifen zu wollen, das aber nicht mehr existiert.

Abhilfe schafft ein einfacher Trick, nämlich das Feld einfach wieder hinzuzufügen:

ALTER TABLE pages ADD t3ver_swapmode tinyint(4) NOT NULL default '0'

Bei einem Versionsupgrade kann es beim „Compare“ im InstallTool schnell mal passieren, dass ein Feld aus der Datenbank entfernt wird, da dieses TYPO3 selbst nicht mehr benötigt. Fremd-Extensions (wie in unserem Fall TemplaVoilá) sind darauf natürlich nicht vorbereitet.

31. Oktober 2012

cObj in Scheduler-Task verwenden

Scheduler-Tasks haben nicht den vollen Umfang aller TYPO3-Funktionen zur Verfügung, da diese ohnehin oftmals nicht benötigt werden. Manchmal braucht man aber spezielle Funktionen/Methoden, um z.B. Bilder rendern zu lassen oder mit HTML-Templates arbeiten zu können. Hierzu wird oft das cObj benötigt, welches im Scheduler-Task aber nicht vollständig vorliegt bzw. komplett fehlt.

Hierzu sorgen folgende Zeilen für Abhilfe:

chdir(PATH_site);
if(!$GLOBALS['TSFE'] instanceof tslib_fe){
    $GLOBALS['TSFE'] = t3lib_div::makeInstance('tslib_fe', $GLOBALS['TYPO3_CONF_VARS'], 0, 0);
    $GLOBALS['TSFE']->config['config']['language'] = null;
    $GLOBALS['TSFE']->initTemplate();
}
if(!isset($GLOBALS['TT'])){
    $GLOBALS['TT'] = t3lib_div::makeInstance('t3lib_TimeTrackNull');
}
$GLOBALS['TSFE']->tmpl->getFileName_backPath = PATH_site;
$cObj = t3lib_div::makeInstance('tslib_cObj');
26. Oktober 2012

Standard-Überschrift eines FCE verwenden

Das Standard-Überschrift-Feld wird bei Flexible Content Elements (FCE) nicht ausgegeben. Wenn man dies aber möchte (z.B. im aktuellen Fall für eine Akkordion-Funktionalität), hilft etwas TypoScript (Setup):

tt_content.templavoila_pi1.10 < lib.stdheader

Man beachte: Diese Zeile TypoScript schaltet das Überschrift-Feld für alle FCE´s frei! Man sollte also – wenn man diese dann nicht verwenden möchte – explizit auf „nicht ausgeben“ stellen.

6. Juli 2012

Keine Thumbnails mehr auf 1&1 Server

Auf 1&1-Servern wurden keine Thumbnails mehr dargestellt. Nach längerer Suche haben wir endlich eine Lösung gefunden.

Abhilfe schafft hierbei eine zusätzliche Zeile in der localconf.php (vor den Kommentar: „## INSTALL SCRIPT EDIT POINT TOKEN – all lines after this points may be changed by the install script!“):

putenv('MAGICK_THREAD_LIMIT=1');

Dabei setzt putenv die Umgebungsvariable MAGICK_THREAD_LIMIT auf 1.

9. Mai 2012

Statt Icons nur noch drei Punkte im Extension Manager

Sollten im Extension Manager statt den Icons zum (de-)installieren nur noch drei Punkte erscheinen, so hat dies mit dem neuen Firefox (12) und einem Bug im Extension Manager zu tun.

Abhilfe schafft hier ein Workaround, indem man in der typo3/sysext/em/res/css/t3_em.css ab Zeile 283 statt

.paddingNoActionIcon img {
    margin-right: 20px;
}

jetzt

.paddingNoActionIcon img {
    margin-right: 5px;
}

schreibt. Der Bug ist auch hier beschrieben.

28. März 2012

Zeichen ersetzen per TypoScript

Um per TypoScript Zeichen oder Worte durch andere (oder auch bestimmte Zeichenfolgen durch ein Bild) zu ersetzen, kann man mit folgendem Snippet arbeiten (hier am Beispiel des gesamten Page-Bereichs):

page.stdWrap.parseFunc.short.meineFirma  = <span class="highlight">meineFirma</span>

Diese Zeile bewirkt, dass überall auf der Seite, wo „meineFirma“ vorkommt, dieser Name mit der angegebenen Phrase („<span class="highlight">meineFirma</span>“) ersetzt wird. Natürlich sind auch Mehrfachanweisungen möglich:

page.stdWrap.parseFunc.short {
	alterFirmenname  = <span class="highlight">neuerFirmenname</span>
	alterGeschaeftsfuehrer = <span class="highlight">neuerGeschaeftsfuehrer</span>
	schreipfeler = Schreibfehler
}

Valider Facebook-Like-Button

Da es kein HTML-Tag "<fb:like>" gibt, schlägt der Validator Alarm. Abhilfe schafft hierbei mal wieder ein Schnipsel JavaScript, indem wir einfach das Element im DOM erzeugen:

<div id="fb-root"></div>
<script type="text/javascript" src="http://connect.facebook.net/de_DE/all.js#xfbml=1"></script><script type="text/javascript">
// <![CDATA[
var c = document.getElementById('fb-root');
var e = document.createElement('fb:like');
e.setAttribute('action', 'like');
e.setAttribute('width', '100');
e.setAttribute('layout', 'button_count');
e.setAttribute('send', 'false');
e.setAttribute('href', '');
e.setAttribute('show_faces', 'false');
e.setAttribute('font', '');
c.appendChild(e);
// ]]>
</script>

Das war´s schon. Nach einem erneuten Validitäts-Check sollte nun (zumindest an dieser Stelle des Quellcodes) kein Fehler mehr auftauchen.

Ältere Beiträge »
TYPO3 Internetagentur Dresden