Webbplatsnavigering

Hierarkin för en webbplats lagras i den structure.json-fil som är associerad med webbplatsen. Hierarkin laddas i minnet och görs tillgänglig i sidkontexten som objektet SCS.structureMap.

Webbplatsverktyget läser filen structure.json för att rita webbplatsträdet i webbplatsverktyget. Filen structure.json innehåller kod för webbplatssidorna. Exempel:

"pages": [  {        
     "id": 100,      
     "name": "Home",                                    
     "parentId": null,             
     "pageUrl": "index.html",      
     "hideInNavigation": false,    
     "linkUrl": "",                
     "linkTarget": "",             
     "children": [ 200,            
                   300,            
                   400,            
                   500 ],          
     "overrideUrl":false           
     } 
   
     {
     "id":200,
     "name":"Products"
     "parentId":100,                
     "hideInNavigation":false,      
     "LinkUrl":"",                  
                 "linkTarget":"",               
                 "children":[ 204, 205],        
                 "overrideUrl":false            
     }                              

     {
     "id":204,
     "name":"Hiking Boots",
     "parentId":200,
                 "pageUrl":"products/hiking_boots.html",
                 "hideInNavigation":false,
                 "linkUrl":"",
     "linkTarger":"",
     "children":[],
     "overrideUrl":false
     }

JavaScript-navigeringskod är nödvändig inom ramen för sidorna för att det ska vara möjligt att även läsa den strukturen och rita ut navigeringslänkarna för webbplatsen. De mallar som medföljer Oracle Content Management inkluderar JavaScript-exempelfiler för navigering som illustrerar hur det här fungerar.

Filen topnav.js, som används i vissa av de teman som tillhandahålls med Oracle Content Management, är ett exempel på hur du kan använda objektet SCS.structureMap tillsammans med återgivnings-API-anropen, t.ex. SCSRenderAPI.getPageLinkData, för att traversera webbplatsstrukturen och rita ut den HTML-uppmärkning som behövs för att återge navigeringsmenyerna på sidan. Här är kod från exempelfilen topnav.js:

function renderNode(id, navBar)
{
        if (id >= 0)
        {
                var navNode = SCS.structureMap[id];
                if( navNode &&
                        (
                                ( typeof navNode.hideInNavigation != "boolean" ) ||
                                ( navNode.hideInNavigation === false )
                        ) )
                {
                        var navItem = document.createElement("li");
                        var navLink = document.createElement("a");
                        var navText = document.createTextNode(navNode.name);
                        
                        var linkData = SCSRenderAPI.getPageLinkData(navNode.id) || {};
                        if( linkData.href ) {
                                navLink.href = linkData.href;
                        }
                        if( linkData.target ) {
                                navLink.target = linkData.target;
                        }

                        navLink.appendChild(navText);
                        navItem.appendChild(navLink);

                        if (navNode.children.length > 0)
                        {
                                var navSub = document.createElement("ul");
                                
                                for (var c = 0; c < navNode.children.length; c++)
                                {
                                        renderNode(navNode.children[c], navSub);
                                }
                                
                                navItem.appendChild(navSub);
                        }
                        navBar.appendChild(navItem);
                }
        }
}

function renderNav()
{
        var topnav = document.getElementById("topnav");         // expected to be an empty <div>

        if (topnav)
        {
                var navBar = document.createElement("ul");

                renderNode(SCS.navigationRoot, navBar);

                topnav.appendChild(navBar);
        }
}

// Must wait for all our script to be ready...
if (document.addEventListener)
{
        document.addEventListener('scsrenderstart', renderNav, false); 
}
else if (document.attachEvent)
{
        document.documentElement.scsrenderstart = 0;
        document.documentElement.attachEvent("onpropertychange",
                function(event)
                {
                        if (event && (event.propertyName == "scsrenderstart"))
                        {
                                renderNav();
                        }
                }
        );
}

Du kan använda återgivnings-API-anrop för att generera navigeringslänkar som fungerar i webbplatsens redigerings- och förhandsgranskningslägen och på en publicerad onlinewebbplats. Se Referens till återgivnings-API.

Det är god praxis att placera navigeringsinformation i en JavaScript-fil, t.ex. topnav.js. JavaScript-filen lagras vanligtvis i mappen /assets/js/ för temat, som du kan se i de exempelteman som medföljer Oracle Content Management.