Zum Inhalt springen

barrierefreies menü mit <dfn> tags durchnummerieren

Erstellt am 13. April 2005 · 1 Antwort · letzte Antwort am 21. April 2005

Tags: Frage

mcmz ·

hallo,

vielleicht hat jemand lust und ein wenig muße mir hierbei zu helfen.

ich habe eine erweiterung für die gov_textmenu extension vor. diese soll nun mit "dfn" tags arbeiten.
zwischen diesen zählen die werte des Tmenus hoch plus die zahlen der eltern-levels.

klassisch. also:

<dfn>1</dfn> Hallo 
      <dfn>1.1</dfn> Kind des Hallos

usw.

mit count_HMENU_TMENUITEMS klappt das zählen soweit auch vor den titeln. aber wie übertrage ich die werte des eltern elements. es geht ja quasi nicht um die level der elternelemte sondern um die zahlvergabe bei den jeweiligen duchzählungs automatismen.
man könnte natürlich auch eine variable per url vergeben . das wäre aber unfein. habt ihr da irgenwelche ideen zu ?? vielleicht hat ja auch jemand lust die extension generell mit mir fortzuführen.

grüße,

martin #paralyzed#

JanPhilipp ·

Hallo Martin,

hatte das gleiche Problem und habe mir mit einer PHP-Funktion geholfen. Sicher nicht das Eleganteste, weil einfach eine globale Array-Variable gefüllt wird, aber fürs Erste kanns helfen. Mein Menü sorgt für eine Ausgabe, wie in diesem Artikel http://www.einfachfueralle.de/artikel/menues/ beschrieben.

Hier die PHP-Funktion, die bei mir in einer Datei "template_functions" im Ordner "fileadmin/templates" liegt:

<?php

if (!is_object($TSFE))    {
	die("You cannot execute this file directly. It's meant to be included from index_ts.php");
}

class user_template_functions {
    var $cObj;

    function generateIndex($content,$conf) {
        global $TSFE;
        $TSFE->set_no_cache();
        
        // Init on first call
        if (!is_array($GLOBALS['navIndex'])) {
            $GLOBALS['navIndex'] = array();
        }

        // Get level
        $level = intval($conf['level']);
        $index = $level - 1;
        if ($level > count($GLOBALS['navIndex'])) {
            $GLOBALS['navIndex'][$index] = 1;
        } else {
            $GLOBALS['navIndex'][$index]++;
            for ($i = $index + 1; $i < count($GLOBALS['navIndex']); $i++) {
                $GLOBALS['navIndex'][$i] = 0;
            }
        }
        for ($i = 0; $i < $level; $i++) {
            if ($output != "") {
                $output .= ".";
            }
            $output .= $GLOBALS['navIndex'][$i];
        }
        return $output;
    }

}

?>

Hier der TS-Code für das Template:

includeLibs.template_functions = fileadmin/templates/template_functions.php

# menu cObject
temp.nav = HMENU
temp.nav.wrap = <ul> | </ul>

# First level menu-object, textual
temp.nav.1 = TMENU
temp.nav.1 {

    noBlur = 1

    NO {
        ATagParams = class="nav-1-no"
        ATagTitle.field = subtitle
        allWrap = <li>|<span class="hidden">. </span></li>
        stdWrap.prepend = COA
        stdWrap.prepend {
            10 = TEXT
            10.preUserFunc = user_template_functions->generateIndex
            10.preUserFunc.level = 1
            10.wrap = <dfn>|: </dfn>
        }
        stdWrap.htmlSpecialChars = 1
    }

    ACTIFSUB = 1
    ACTIFSUB {
        ATagParams = class="nav-1-act"
        ATagTitle.field = subtitle
        allWrap = <li>|<span class="hidden">. </span>
        stdWrap.prepend = COA
        stdWrap.prepend {
            10 = TEXT
            10.preUserFunc = user_template_functions->generateIndex
            10.preUserFunc.level = 1
            10.wrap = <dfn>|: </dfn>
        }
        stdWrap.htmlSpecialChars = 1
        wrapItemAndSub = |</li>
    }

    CUR = 1
    CUR {
        doNotLinkIt = 1
        allWrap = <li>|</strong></span><span class="hidden">. </span>
        stdWrap.prepend = COA
        stdWrap.prepend {
            10 = TEXT
            10.field = subtitle
            10.wrap = <span class="nav-1-cur" title="|"><strong>
            20 = TEXT
            20.preUserFunc = user_template_functions->generateIndex
            20.preUserFunc.level = 1
            20.wrap = <dfn>|: </dfn>
            30 = TEXT
            30.value = <span class="hidden">Standort: </span>
        }
        stdWrap.htmlSpecialChars = 1
        wrapItemAndSub = |</li>
    }

}

# Second level menu-object, textual
temp.nav.2 = TMENU
temp.nav.2 {

    noBlur = 1
    wrap = <ul>|</ul>

    NO {
        ATagParams = class="nav-2-no"
        ATagTitle.field = subtitle
        allWrap = <li>|<span class="hidden">. </span></li>
        stdWrap.prepend = COA
        stdWrap.prepend {
            10 = TEXT
            10.preUserFunc = user_template_functions->generateIndex
            10.preUserFunc.level = 2
            10.wrap = <dfn>|: </dfn>
        }
        stdWrap.htmlSpecialChars = 1
    }

    CUR = 1
    CUR {
        doNotLinkIt = 1
        allWrap = <li>|</strong></span><span class="hidden">. </span></li>
        stdWrap.prepend = COA
        stdWrap.prepend {
            10 = TEXT
            10.field = subtitle
            10.wrap = <span class="nav-2-cur" title="|"><strong>
            20 = TEXT
            20.preUserFunc = user_template_functions->generateIndex
            20.preUserFunc.level = 2
            20.wrap = <dfn>|: </dfn>
            30 = TEXT
            30.value = <span class="hidden">Standort: </span>
        }
        stdWrap.htmlSpecialChars = 1
    }

}

Wenn jemand Verbesserungsvorschläge hat oder eine bessere Lösung weiß, würde ich gerne auch davon profitieren.

Gruß Jan-Philipp Halle (typo3 [at] jphalle.de)