Typo3 Bednarik.org

Hotová řešení

Hotová řešení

Zde uvedu několik příkladů zajímavých věcí, které se mi povedy v TypoScriptu. Můžete čerpat inspiraci...

Default Content

V případě, že máte mutli-language web můžete chtít mít obsah některého sloupce jako defaultní - tzn. stejný pro všechny jazyky. Tímto nastavením docílíte toho, že pokud je daný sloupec pro aktuální jazyk prázdný, vezme se obsah jazyku s ID 0 - defaultní jazyk.

c < styles.content.get
c.stdWrap.ifEmpty.cObject = CONTENT
c.stdWrap.ifEmpty.cObject {
  table = tt_content
  select.orderBy = sorting
  select.where = colPos=0
  select.languageField = 0
}
page.10.subparts.CONTENT < c

Odkaz

Vytvoří odkaz na stránku. Vhodné pokud používáte dodatečné parametry v URL (číslo jazyku) a není možné tedy tento odkaz vložit do přímo do šablony.

h = TEXT
h.value = <img src="logo.gif" width="250" height="70" />
h.typolink.parameter = 20
page.10.subparts.LOGO < h

User Menu

Můžeme si vytvořit vlastní menu. Stačí PHP soubor (menu.php) s funkcí function user_Menu($M,$conf), kde $M je menu a $conf je nastavení. Očekává se vracení proměnné $M, která obsahuje definici menu.

page.includeLibs.something = menu.php
mm = HMENU
mm {
wrap = <div id="menu">|</div>
1 = TMENU
1.noBlur = 1
1.NO.allWrap = <div class="menu-polozka">|</div>
1.itemArrayProcFunc = user_Menu
1.itemArrayProcFunc.count = 6
}

Rootline

Menu, které zobrazí cestu od začátku k aktuální stránce, takovéto Home - Typo3 - Hotová řešení

rootline = HMENU
rootline {
special = rootline
special.range = 0|-1
1 = TMENU
1.noBlur = 1
1.NO.allWrap = | -
}

Proměnná special.range definuje rozsah. Při troše experimentování dosáhnete úspěchu. TypoScript Reference o tom říká:
Defines at which level in the rootLine, the menu should start.
Default is "0" which gives us a menu of the very first pages on the site.
If the value is < 0, entryLevel is chosen from "behind" in the rootLine. Thus "-1" is a menu with items from the outermost level, "-2" is the level before the outermost...

Obrázkové nadpisy

Při této definici budou všechny nadpisy typu "Normální (Default)" obrázek s průhledným pozadím.

lib.stdheader.10.1.file {
10 {
  text.current = 1
  fontFile = media/font/Arial.ttf
  fontSize = 15
  fontColor = #000000
  offset = 0,15
}
XY = [10.w]+4,20
transparentBackground = 1
reduceColors >
}

UID v menu

Někdy by mohlo být vhodné dostat do odkazů v menu něco o stránce, na daný odkaz odkazuje.

Například by se to mohlo hodit při stylování jednotlivých linků pomocí CSS. Mohli bychom třeba chtít přiřadit odkazům ID, které by obsahovaly uid stránky.

Pokud máme objekt pojmenovaný m, typu HMENU, kde m.1 = TMENU, potom to lze udělat takto:

m.1.NO.ATagParams.cObject = TEXT
m.1.NO.ATagParams.cObject.field = uid
m.1.NO.ATagParams.cObject.wrap = id="page|"

Dostaneme menu, kde linky budou mít přiřazené ID id="pageX" (X je uid stránky).

V druhém řádku lze "uid" nahradit třeba za subtitle nebo alias. Potom by bylo vhodné ale doplnit podmínku co dělat, když bude subtitle nebo alias prázdný:

m.1.NO.ATagParams.cObject = TEXT
m.1.NO.ATagParams.cObject.field = subtitle
m.1.NO.ATagParams.cObject.ifEmpty.field = uid
m.1.NO.ATagParams.cObject.wrap = id="page|"

Pokud subtitle nebude prázdné, použije se místo uid. V opačném případě dostaneme to co v prvním příkladu.

TMENU LAYERS

Rozbalovací JavaScript menu až se čtyřmi úrovněmi.

page.includeLibs.tmenu_layers = media/scripts/tmenu_layers.php
temp.mainmenu = HMENU
temp.mainmenu.1 = TMENU_LAYERS
temp.mainmenu.1 {
  layerStyle = position:absolute; visibility:hidden;
  lockPosition = x
  relativeToParentLayer=1
  relativeToTriggerItem=1
  topOffset=124
  leftOffset=0
  hideMenuWhenNotOver = 50
  hideMenuTimer = 70
  expAll=1
  NO.allWrap = <div class="mainmenu-item">|</div>
}

temp.mainmenu.2 = TMENU_LAYERS
temp.mainmenu.2 {
  layerStyle = position:absolute; visibility:hidden;
  lockPosition = x
  relativeToParentLayer=1
  relativeToTriggerItem=1
  relativeToTriggerItem.addWidth = 1
  topOffset=5
  leftOffset=70
  expAll=1
  lockPosition_addSelf = 1
  directionLeft = 1
  wrap = <div class="submenu lev1">|</div>
  NO.allWrap = |
}

temp.mainmenu.3 < temp.mainmenu.2
temp.mainmenu.3 {
  wrap = <div class="submenu lev2">|</div>
  NO.allWrap = |
}

temp.mainmenu.4 = TMENU
temp.mainmenu.4 {
  wrap = <div class="submenu lev3">|</div>
  NO.allWrap = |
}

 

Flash

Vložení flashe i s možností alternativního obrázku v případě, že uživatel nemá nainstalován flash. Je k tomu potřeba mít dva soubory flash.js a flash.php (přejmenován na flash.txt aby šel stáhnout)

f = PHP_SCRIPT
f {
file = flash.php
src = flash.js
width = 330
height = 70
alt = alternativa.jpg
flash = flash.swf
}

Grafické menu

Menu složené z obrázků generovaných skriptem (GD knihovna je nutná).

t = HMENU
t.1 = GMENU
t.1.NO {
XY = [10.w]+20, 30
backColor = #ADCAFF
10 = TEXT
10.text.field = title
10.fontFile = media/font/Arial.ttf
10.fontSize = 13
10.fontColor = #000000
10.offset = 10,20
}
t.1.RO = 1
t.1.RO < t.1.NO
t.1.RO {
backColor = #FFFFFF
}
t.1.ACT = 1
t.1.ACT < t.1.RO
t.1.ACT.10 {
fontColor = #E60000
}

XY určuje rozměry položky menu. Ta bude "šířka objektu číslo 10"+20 pixelů na 30 pixelů. Text položky se vezme v pole title, které je názvem stránky.

 

Typo3 konzultace

Poradenství o Typo3.

Call now

1,50€ za minutu

 
XLINE hosting + Typo3 = ideální kombinace