07 Sep 2009

Header/Footer via l’éditeur de constantes

Ce poste est une mise en forme d'un « tip » sur Typo3 donnés lors de la T3UNI09. Le fichier source non formaté de ces « astuces » se trouve ICI.

Pour insérer des éléments en header ou footer via l'éditeur de constantes on commence par définir les éléments qui pourront être insérer:

    
# Login (login)
temp.login = TEXT
temp.login {
    value=Login
    typolink.parameter=20
    wrap.splitChar=%
    wrap=% 
}
# SearchBox (searchbox)
plugin.tx_indexedsearch.search.rootPidList = 18
plugin.tx_indexedsearch.show.rules = 0
temp.searchbox = COA
temp.searchbox {
    10 = TEXT
    10.typolink.parameter = {$plugin.tx_indexedsearch.searchUID}
    10.typolink.returnLast = url
    10.wrap = &nbsp;<form action="|" method="post" id="indexedsearch" style="display:inline;">
    20 = COA
    20 {
        10 = TEXT
        10.data = GPvar : tx_indexedsearch |
        10.wrap = <input name="tx_indexedsearch[sword]" value="Rechercher" class="searchbox-sword" type="text" />
        20 = COA
        20 {
            5 = TEXT
            5.value = <input type="hidden" name="tx_indexedsearch[group]" value="sections" />
            10 = TEXT
            10.value = <input type="hidden" name="tx_indexedsearch[sections]" value="0" />
            20 = TEXT
            20.value = <input name="tx_indexedsearch[submit_button]" value="Search" type="hidden" />
            30 = TEXT
            30.value = &nbsp;<input name="search" src="loupe.png" value="Search" class="searchbox-button" type="image" />
        }
    }
    30 = COA
    30 {
        10 = TEXT
        10.value = Advanced search +
        10.typolink.parameter = {$plugin.tx_indexedsearch.searchUID}
        10.typolink.additionalParams = &tx_indexedsearch[ext]=1
        10.wrap = <td align="right" colspan="2">|</td>
        if.isTrue = {$plugin.tx_indexedsearch.showAdvanced}
    }
    wrap = | </form>&nbsp;
}
# Contacts (contacts)
temp.contacts = TEXT
temp.contacts {
    value=Contact
    typolink.parameter=34
}
# Plan de site (sitemap)
temp.site-map = TEXT
temp.site-map {
    value=Plan de site
    typolink.parameter=33
}
# Mentions légales (legal)
temp.legal = TEXT
temp.legal {
    value=Mentions l&eacute;gales
    typolink.parameter=32
}

On définit les objets permettant de tester les éléments a insérer dans le header et le footer:

    
temp.test = CASE
temp.test {
    # On indique ici l'élément de la liste qui va etre tester.
    # Ce chiffre sera écrasé pour chaque test du pre_header et du footer
    key.listNum = 1
    key.trim = 1
    login < temp.login
    searchbox < temp.searchbox
    contacts < temp.contacts
    sitemap < temp.site-map
    legal < temp.legal
    language < temp.language
    blank = TEXT
    blank.value = &nbsp;
    default = HTML
    default {
        value.stdWrap.listNum.splitChar = ::
        value.stdWrap.listNum = 0
        value.stdWrap.trim = 1
        value.typolink.parameter.stdWrap.listNum.splitChar = ::
        value.typolink.parameter.stdWrap.listNum = 1
    }
}
############################################################
# PRE_HEADER
#
temp.test.key = {$basic.pre_header}
temp.test.default {
    value = {$basic.pre_header}
    value.typolink.parameter = {$basic.pre_header}
}
lib.pre_header=COA
lib.pre_header{
    1 < temp.test
    1 {
        key.listNum = 0
        default.value.listNum < .key.listNum
        default.value.typolink.parameter.listNum < .key.listNum
    }
    2 < temp.test
    2 {
        key.listNum = 1
        default.value.listNum < .key.listNum
        default.value.typolink.parameter.listNum < .key.listNum
        stdWrap.wrap.splitChar = %
        stdWrap.wrap = &nbsp;|&nbsp;%
        stdWrap.if.isTrue < temp.test.key
        stdWrap.if.isTrue.listNum < .key.listNum
    }
    3 < temp.test
    3 {
        key.listNum = 2
        default.value.listNum < .key.listNum
        default.value.typolink.parameter.listNum < .key.listNum
        stdWrap.wrap.splitChar = %
        stdWrap.wrap = &nbsp;|&nbsp;%
        stdWrap.if.isTrue < temp.test.key
        stdWrap.if.isTrue.listNum < .key.listNum
    }
    4 < temp.test
    4 {
        key.listNum = 3
        default.value.listNum < .key.listNum
        default.value.typolink.parameter.listNum < .key.listNum
        stdWrap.wrap.splitChar = %
        stdWrap.wrap = &nbsp;|&nbsp;%
        stdWrap.if.isTrue < temp.test.key
        stdWrap.if.isTrue.listNum < .key.listNum
    }
    5 < temp.test
    5 {
        key.listNum = 4
        default.value.listNum < .key.listNum
        default.value.typolink.parameter.listNum < .key.listNum
        stdWrap.wrap.splitChar = %
        stdWrap.wrap = &nbsp;|&nbsp;%
        stdWrap.if.isTrue < temp.test.key
        stdWrap.if.isTrue.listNum < .key.listNum
    }
    6 < temp.test
    6 {
        key.listNum = 5
        default.value.listNum < .key.listNum
        default.value.typolink.parameter.listNum < .key.listNum
        stdWrap.wrap.splitChar = %
        stdWrap.wrap = &nbsp;|&nbsp;%
        stdWrap.if.isTrue < temp.test.key
        stdWrap.if.isTrue.listNum < .key.listNum
    }
    if.directReturn = {$basic.pre_header}
    wrap = <div id="pre_header">|</div>
}
############################################################
# FOOTER
#
temp.test.key = {$basic.footer}
temp.test.default {
    value = {$basic.footer}
    value.typolink.parameter = {$basic.footer}
}
lib.footer=COA
lib.footer{
    1 < temp.test
    1 {
        key.listNum = 0
        default.value.listNum < .key.listNum
        default.value.typolink.parameter.listNum < .key.listNum
    }
    2 < temp.test
    2 {
        key.listNum = 1
        default.value.listNum < .key.listNum
        default.value.typolink.parameter.listNum < .key.listNum
        stdWrap.wrap.splitChar = %
        stdWrap.wrap = &nbsp;|&nbsp;%
        stdWrap.if.isTrue < temp.test.key
        stdWrap.if.isTrue.listNum < .key.listNum
    }
    3 < temp.test
    3 {
        key.listNum = 2
        default.value.listNum < .key.listNum
        default.value.typolink.parameter.listNum < .key.listNum
        stdWrap.wrap.splitChar = %
        stdWrap.wrap = &nbsp;|&nbsp;%
        stdWrap.if.isTrue < temp.test.key
        stdWrap.if.isTrue.listNum < .key.listNum
    }
    4 < temp.test
    4 {
        key.listNum = 3
        default.value.listNum < .key.listNum
        default.value.typolink.parameter.listNum < .key.listNum
        stdWrap.wrap.splitChar = %
        stdWrap.wrap = &nbsp;|&nbsp;%
        stdWrap.if.isTrue < temp.test.key
        stdWrap.if.isTrue.listNum < .key.listNum
    }
    5 < temp.test
    5 {
        key.listNum = 4
        default.value.listNum < .key.listNum
        default.value.typolink.parameter.listNum < .key.listNum
        stdWrap.wrap.splitChar = %
        stdWrap.wrap = &nbsp;|&nbsp;%
        stdWrap.if.isTrue < temp.test.key
        stdWrap.if.isTrue.listNum < .key.listNum
    }
    6 < temp.test
    6 {
        key.listNum = 5
        default.value.listNum < .key.listNum
        default.value.typolink.parameter.listNum < .key.listNum
        stdWrap.wrap.splitChar = %
        stdWrap.wrap = &nbsp;|&nbsp;%
        stdWrap.if.isTrue < temp.test.key
        stdWrap.if.isTrue.listNum < .key.listNum
    }
    if.directReturn = {$basic.footer}
    wrap = <div id="footer">|</div>
}

Il ne reste plus qu'à ajouter dans constant les variables $basic.footer et $basic.pre_header.

Ce « tip » a été donné par ? (faites vous connaître)

Étiquettes :