Drupal 6, как да идентифицирате активен елемент от менюто чрез url параметри (пълна връзка), ?q=page1&filter=10

Имам подменю, което съдържа всички елементи, свързани към един и същ възел, но с различни допълнителни параметри, например:

...
<li...><a href = "/?q=page1&filter=10" class = "... active">Item1</a></li>
<li...><a href = "/?q=page1&filter=11" class = "... active">Item2</a></li>
...

в този случай всички елементи имат клас 'active' и нито един от тях няма клас 'active-trail'.

Има ли някакъв начин да се идентифицира истинската активна връзка (за целите на стилизирането)?

всички предложения ще бъдат много оценени!


person OlgaVogue    schedule 19.03.2010    source източник


Отговори (2)


Можете също да стилизирате активната връзка с помощта на Javascript, въпреки че трябва да се признае, че е доста подробен. Ето кода и вие просто бихте променили стиловете, за да бъдат както искате.

window.onload = kickOff;

var aAll;

function kickOff() {
    aAll = document.getElementsByTagName("a");
    // disable and change color of active page's link
    for (var i=0; i<aAll.length; i++) {
        if (window.location.href.split("#")[0] == aAll[i].href) {
            aAll[i].onclick = function() {if (this.blur) {this.blur();} return false;}
            aAll[i].style.cursor = "text";
            aAll[i].style.borderBottom = "none";
            aAll[i].style.color = "#FFFFFF";
            aAll[i].style.textShadow = "none";
            if (aAll[i].className == "site") {
                aAll[i].style.color = "#ffffff";
            }
            else {
            aAll[i].style.background = "#a5a9b3 scroll 0pt 100%";
            }
        }
        // fix ie's lack of support for css :focus so tabbers see skip links on focus
        if (navigator.appName == "Microsoft Internet Explorer" && aAll[i].className == "skip") {
            var restoreColor = aAll[i].style.color;
            var restoreBorder = aAll[i].style.borderBottom;
            aAll[i].onfocus = function() {this.style.color = "#999999"; this.style.borderBottom = "1px solid #999999";}
            aAll[i].onblur = function() {this.style.color = restoreColor; this.style.borderBottom = restoreBorder;}
        }
     }
    // fixes in-page link bug for Internet Explorer
    if (navigator.appName == "Microsoft Internet Explorer") {
        getElementsByClass("target");
    }
}

function getElementsByClass(searchClass,node,tag) {
    // fixes in-page link bug for Internet Explorer; first find all destinations (elements with classname "target"):
    var classElements = new Array();
    if ( node == null ) {
            node = document;
    }
    if ( tag == null ) {
            tag = '*';
    }
    var elAll = node.getElementsByTagName(tag);
    var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
    for (var i = 0, j = 0; i < elAll.length; i++) {
        if (pattern.test(elAll[i].className)) {
            classElements[j] = elAll[i];
            j++;
        }
    }
    // then insert what is an invalid attribute for most elements, with an invalid value to boot:
    for (var i=0; i<classElements.length; i++) {
        classElements[i].setAttribute("tabIndex",-1)
    }
}
person coderintherye    schedule 19.03.2010

можете да добавите клас пътека чрез този модул: http://drupal.org/project/menutrails
или ръчно: http://api.drupal.org/api/function/menu_set_active_trail/6

person Nikit    schedule 19.03.2010