Pregunta

Antes de mi llegada, se decidió que toda la navegación se codificaría en la página maestra.Desearía poder encontrar una razón sólida por la que, pero por el momento me escapa.Debido a las limitaciones de tiempo, la reescritura de la página maestra no es realmente una opción.

El problema que estoy teniendo es al navegar a otros sitios (hogar, noticias, aproximadamente), el sitio activo no se refleja en la navegación.

Aquí está el código con el que estoy trabajando:

<div class="top_nav">
<span>
    <ul class="list-nav">
        <li class="first"></li>
        <li class="sep-left"></li>
        <li class="selected"><a href="/" target="_self" title="the Nest">
            <span>Home</span></a></li>
        <li class="sep-right"></li>
        <li><a href="/news" target="_self" title="News">
            <span>News</span></a></li>
        <li class="sep"></li>
        <li><a href="/about" target="_self" title="About us">
            <span>About us</span></a></li><li class="sep"></li>
    </ul></span>

<div id="s4-searcharea" class="s4-search s4-rp topBar"><!-- Search -->
    <asp:ContentPlaceHolder id="PlaceHolderSearchArea" runat="server">
            <SharePoint:DelegateControl runat="server"     ControlId="SmallSearchInputBox" Version="4"/>
    </asp:ContentPlaceHolder>
</div>  

Aquí está el CSS

/* Top navigation */
div.top_nav{background:transparent url('/Style Library/Images/npe_layout.png') no-     repeat;display:block;height:30px;margin-bottom:10px;width:955px}
.top_nav * {color:#fff}
.top_nav .list-nav{float:left;text-align:center}
    .top_nav .list-nav li{display:inline;float:left;height:24px;list-style-  type:none;padding:0}
    .top_nav .list-nav li.first{margin-left:2px}
        .top_nav .list-nav li a{display:block;height:25px;outline:0;padding:5px 10px 0 10px;text-decoration:none}
            .top_nav .list-nav li a:hover{background:transparent url('/Style Library/Images/npe_layout.png') repeat-x scroll -1011px -186px;height:25px;text-decoration:none!important}
            .top_nav .list-nav li a span{cursor:pointer;display:block;margin:0;padding-top:2px}
    .top_nav .list-nav li.selected {margin-top:4px} 
        .top_nav .list-nav li.selected a{background- color:#fff;color:#8e663c;padding:1px 6px 0}
            .top_nav .list-nav li.selected a:hover{background:#fff none}
            .top_nav .list-nav li.selected a span {color:#369}
    .top_nav .list-nav li.sep {background:transparent url('/Style  Library/Images/npe_layout.png') no-repeat -965px 0;height:25px;margin-top:3px;width:2px}
    .top_nav .list-nav li.sep-left {background:transparent url('/Style Library/Images/npe_layout.png') no-repeat -955px 0;height:27px;margin-top:4px;margin-left:2px;width:5px}
    .top_nav .list-nav li.sep-right { background:transparent url('/Style Library/Images/npe_layout.png') no-repeat -960px 0;height:27px;margin-top:4px;margin-right:2px;width:5px}

un poco de javascript para ayudar a las cosas a lo largo de

<script type="text/javascript">
//Sets the selected tab on the Nest global navigation.
function setGlobalNavigationSelected() {

try {

    $(".layout .top_nav ul a").each(function () {
        var href = $(this).attr('href');
        if (href != undefined && href != "") {
            if (href == window.location.href) {

                var previouslyselected = $(".layout .top_nav ul .selected");
                //alert(previouslyselected)
                previouslyselected.removeClass('selected');
                previouslyselected.next().remove();
                previouslyselected.prev().remove();


                $(this).parent().addClass('selected');

                $(this).parent().before('<li class="sep-left" />');
                $(this).parent().after('<li class="sep-right" />');

                var nestNextLi = $(this).parent('li').next();
                if (nestNextLi != null && nestNextLi.length > 0) {
                    nestNextLi.children('a:first-child').children('span').children('span').css('background-image', 'none');
                }

            }
        }
    });

}
catch (err5) { }

}


</script>

topnavigation

¿Fue útil?

Solución

Incluyendo la navegación de esta manera, pase de forma efectiva los mecanismos de SharePoint para resaltar la pestaña actual para que tenga que rodar el suyo.

Un enfoque sería usar jQuery a iterar a través de las URL en la nave (quizás ".top_NAV LI A") y comparar la URL en cada enlace a la ventana actual.location.href para encontrar la mejor coincidencia.Una vez encontrado uso .Parent (). AddClass ("seleccionado") para resaltar el padre LI.

Otros consejos

Una perspectiva diferente sobre esto ... Argumentaría que necesita usar el control de navegación fuera del cuadro.Tiene muchos beneficios, como los artículos de corte de seguridad de acuerdo con los privilegios actuales del usuario.Pasará más tiempo de fijación de errores con su navegación personalizada que simplemente poner el original de nuevo. Al final del día, aún tiene que escribir el jQuery para hacer la selección y probarlo, tomaría la misma cantidad de tiempo.en la navegación original.También déjame asegurarle que lo diseñas se pueden implementar completamente utilizando la navegación fuera de la caja.

Licenciado bajo: CC-BY-SA con atribución
scroll top