<codeparts /> part of the code

25Aug/110

Zurück-Link (Back-Link) in typoscript

Um das veraltete Javascript-Verfahren (history.back) umgehen zu können, lässt sich in TYPOSCRIPT wunderbar ein Link um den HTTP_REFERER wrappen. Damit das Ganze auf mehreren Seiten zum Einsatz kommen kann, darf es natürlich nicht gecached werden. Deshalb das COA_INT:

temp.backlink = COA_INT
temp.backlink {
 10 = TEXT
 10.data = getIndpEnv:HTTP_REFERER
 10.wrap = <a href="|">Zurück</a
}
veröffentlicht unter: TYPO3 keine Kommentare
17Feb/110

Mehrsprachige News ohne Entsprechung in der Standardsprache

Will man auch Newsbeiträge in einer Fremdsprache darstellen, die nicht lokalisiert sind, also keinen Datensatz in der Standardsprache haben, kann man dies durch setzen der folgenden TS-Parameter im tt_news Plugin erreichen:

plugin.tt_news {
    showNewsWithoutDefaultTranslation = 1
    select.languageField = sys_language_uid
}

Möchte man auf der SINGLE Ansicht auch zwischen den Sprachen hin- und herschalten können (vorausgesetzt, die entsprechende News ist übersetzt), verschluckt das HMENU zur Umschaltung bei mir immer die GET-Variablen. Das resultiert dann in einem profanen "no news_id given".
Mit folgender Parametrierung im NO des Menus kann man Abhilfe schaffen:

NO.additionalParams.cObject = COA
NO.additionalParams.cObject {
    10 = TEXT
    10.data = GPvar : tx_ttnews|backPid
    10.wrap = &tx_ttnews[backPid]=|
    10.required = 1
    20 = TEXT
    20.data = GPvar : tx_ttnews|tt_news
    20.wrap = &tx_ttnews[tt_news]=|
    20.required = 1
    30 = TEXT
    30.data = GPvar : cHash
    30.wrap = &cHash=|
    30.required = 1
}
veröffentlicht unter: TYPO3 keine Kommentare
3Feb/100

institut für interdisziplinäre restrukturierung e.v.

iir

http://www.iir-hu.de für hagemannplus

programmierung: TYPOSCRIPT / (X)HTML / CSS

veröffentlicht unter: css, referenzen, TYPO3 keine Kommentare
1Jan/100

dettmer rechtsanwälte

dettmer

http://www.dettmer-rechtsanwaelte.de für hagemannplus

programmierung: TYPOSCRIPT / (X)HTML / CSS

veröffentlicht unter: css, referenzen, TYPO3 keine Kommentare
10Okt/090

architekt ralf breuer

breuer

http://www.ralf-breuer-architekt.de für hagemannplus

programmierung: TYPOSCRIPT / (X)HTML / CSS

veröffentlicht unter: css, referenzen, TYPO3 keine Kommentare
6Okt/090

TMENU navigation in verschiedene richtungen

möchte man eine navigation in dieser art und weise per TMENU erstellen, bekommt man probleme mit dem css:
tmenu
um die zweite ebene an der x-position des aktiven hauptpunkts darzustellen, muss man diese mittels "wrapItemAndSup" zusammenfassen.
kommen jetzt die dritte und vierte ebene hinzu - diese müssen ja als eigene HMENUs realisiert werden, damit sie in eigenen divs dargestellt werden können - verschieben sich entweder die restlichen hauptpunkte nach rechts, oder man bekommt die divs nur unterhalb der ebene 2 dargestellt.

gelöst habe ich das problem nun so:

1. ein HMENU für die Hauptnavigation

temp.navi1 = HMENU
temp.navi1 {
	entrylevel = 1
	wrap = <div id="menu1">|</div>
	1 = TMENU
	1 {
		NO = 1
		NO {
			wrapItemAndSub = <div class="untermenu">|</div>
			linkWrap = <span class="menu_ebene1">|</span>
			stdWrap.case = upper
		}
		ACT = 1
		ACT < .NO
		ACT {
			linkWrap = <span class="menu_ebene1 aktiv">|</span>
		}
	}
}

2. Ein zweites HMENU für die Hauptnavigation und die erste Unternavigation:

temp.navi2 = HMENU
temp.navi2 {
	special = directory
	special.value = 20
	wrap = <div id="menu2">|</div>
	1 = TMENU
	1 {
		itemArrayProcFunc = user_nArray->user_naviArray
		NO = 1
		NO {
			wrapItemAndSub = <div class="untermenu">|</div>
			linkWrap = <span class="menu_ebene1">|</span>
			stdWrap.case = upper
		}
		ACT = 1
		ACT < .NO
		ACT {
			linkWrap = <span class="menu_ebene1 aktiv">|</span>
		}
	}
	2 = TMENU
	2 {
		NO = 1
		NO {
			linkWrap = <br /><span class="menu_ebene2">|</span>
			stdWrap.case = upper
		}
		ACT = 1
		ACT < .NO
		ACT.linkWrap = <br /><span class="menu_ebene2 aktiv">|</span>
	}
}

3. wobei die erste ebene jedoch durch folgende userfunction gejagt wird:

function user_naviArray($nArr, $conf) {
	$rootlineArr = $GLOBALS["TSFE"]->sys_page->getRootLine($GLOBALS["TSFE"]->id);
	$rootlineListe = array();
	foreach($rootlineArr as $seite) {
		array_push($rootlineListe,$seite['uid']);
	}

	$newArr = array();
	$z = 0;
	foreach($nArr as $seite) {
		if($seite['uid'] != $GLOBALS["TSFE"]->id && !in_array($seite['uid'],$rootlineListe) && $z == 0) {
			array_push($newArr,$seite);
		} else if($seite['uid'] == $GLOBALS["TSFE"]->id || in_array($seite['uid'],$rootlineListe)) {
			array_push($newArr,$seite);
			$z = 1;
		}
	}

	return $newArr;
}

diese schneidet alle hauptpunkte nach dem aktiven einfach ab.
das bedeutet, dass man nun die dritte und vierte (und ggfls. folgende) ebene schön rechts neben die ebene zwei positionieren kann, da dort nun keine hauptpunkte mehr im weg sind.
als letztes setzt man noch die hauptpunkte der zweiten navigation auf "visibility:hidden" und die gesamte zweite navigation ein stück nach oben.

veröffentlicht unter: allgemeines keine Kommentare
2Jul/090

kleiner div im internet explorer 6

der internet explorer 6 scheint ein problem damit zu haben, kleinere divs als ein paar pixel höhe darzustellen. selbst wenn man die height per css auf 1px setzt, nimmt der div immer noch mindestens 5 pixel platz ein. das ganze passiert, weil der ie6 auf jeden fall platz für eventuell vorhandenen text reserviert - das ganze lässt sich also so umgehen:

line-height:0px;
font-size:0px;

dann kann der div notfalls auch auf 0 pixel höhe gestyled werden.

veröffentlicht unter: css keine Kommentare
25Jun/090

stolperfalle bei FIND_IN_SET

wenn man in einem where-statement mit "NOT FIND_IN_SET" filtern möchte, kann es zu unerwünschten ergebnissen kommen wenn der zu durchsuchende teil NULL ist:

SELECT FIND_IN_SET('x','y,z')
// liefert je nach vorkommen von 'x' in 'y,z' 0 oder die
// position des gefundenen elements zurück.

SELECT FIND_IN_SET('x',NULL)
SELECT NOT FIND_IN_SET('x',NULL)
SELECT !FIND_IN_SET('x',NULL)
// liefern alle NULL

 

im where-statement wird NULL dann leider als 0 interpretiert, ist also immer falsch.
abhilfe schafft hier, den fall NULL gesondert abzufangen, z.b. so:

...WHERE (NOT FIND_IN_SET(wert,feld) OR feld IS NULL)
veröffentlicht unter: mysql keine Kommentare
23Jun/090

gedankenstrich (&ndash;) in grafischen headlines

aus unerfindlichen gründen kann man im gifbuilder keine langen trennstriche benutzen (ndash, bzw alt+0150). da man aber theoretisch &#8211; in das headline feld eintragen könnte, damit der ndash korrekt gerendert wird, kann man dies auch einfach mittels einer userfunc simulieren, um dem redakteur solch kryptische eingaben zu ersparen. der fehler wird wahrscheinlich irgendwann einmal gefixt, in der version 4.2.6 ist er jedenfalls noch vorhanden.

ndash_bugfix.php

function user_replace_ndash($content, $conf) {
    return str_replace(chr(150),"&#8211;",$content);
}

typoscript

includeLibs.ndash = pfad/ndash_bugfix.php

temp.headline = IMAGE
temp.headline {
	file = GIFBUILDER
	file {
		XY =
		backColor = 

		10 = TEXT
		10 {
			text.field = header
			text.listNum = 0
			text.listNum.splitChar = |

			text.postUserFunc = user_replace_ndash

			fontSize =
			fontColor =
			fontFile = 

			offset = 

		}

		20 < .10
		20 {
			text.listNum = 1
			offset = x,y
		}
	}
}

lib.stdheader.10.1 < temp.headline
veröffentlicht unter: TYPO3 keine Kommentare
22Jun/090

indexed_search in teilbereichen bzw. unterbäumen

über einen hook in der extension indexed_search kann man diese gezielt in teilbereichen und unterbäumen der site suchen lassen. das ganze lässt sich realisieren, weil der hook einen zusätzlichen, selbst zu definierenden string an das sql statement anhängt. hier ein beispiel:

ext_localconf.php

$TYPO3_CONF_VARS['EXTCONF']['indexed_search']['pi1_hooks']
['execFinalQuery_idList'] =
'EXT:meine_ext/class.meine_ext_pagewhere.php:meine_ext_pagewhere'

 

class.meine_ext_pagewhere.php

class meine_ext_pagewhere {

    function execFinalQuery_idList($list) {

        $pagewhere = " ISEC.page_id IN (XX,XX,XX,XX) ";
        // oder z.B.
        $pagewhere = " ISEC.page_id IN (SELECT pages.uid FROM
        pages WHERE pages.doktype != 'XX') ";

        return $pagewhere;

    }

}

 

will man in einem kompletten unterbaum suchen, kann man sich die liste der zu durchsuchenden pids z.b. so zusammenbauen:

function suchSeitenListeErstellen($seite) {

    $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('uid,
    doktype','pages',"pid='".$seite."' and deleted=0");
    while($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) {

        $this->suchSeitenListe .= 
        ($this->suchSeitenListe != '') ? "','".$row['uid'] : $row['uid'];

    }

    $this->suchSeitenListeErstellen($row['uid']);

}

$this->suchSeitenListeErstellen('XX');

veröffentlicht unter: TYPO3 keine Kommentare