Sitede Gezinme

Bir sitenin hiyerarşisi site ile ilişkili structure.json dosyasına saklanır. Hiyerarşi belleğe yüklendi ve sayfa içeriğinde SCS.structureMap nesnesi olarak kullanılabilir hale getirildi.

Site Oluşturucu, structure.json dosyasını okuyarak Site Oluşturucuda site ağacını çizer. structure.json dosyası site sayfalarına ilişkin kodu içerir. Örneğin:

"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
     }

Gezinme JavaScript kodu site için gezinme bağlantılarını belirlemek ve yapıyı okumak için site sayfalarında gereklidir. Oracle Content Management ile sağlanan şablonlar bunun nasıl çalıştığını gösteren örnek gezinme JavaScript dosyalarını içerir.

Site yapısını dikkatle incelemek ve sayfada gezinme menülerini görüntülemek için gerekli HTML biçimlendirmesini belirlemek üzere, Oracle Content Management tarafından sağlanan temaların bazılarında kullanılan topnav.js dosyası SCSRenderAPI.getPageLinkData gibi Görüntüleme Uygulama Programı Arabirimi çağrılarının yanı sıra SCS.structureMap nesnesinin de nasıl kullanılabileceğinin bir örneğidir. Örnek topnav.js dosyasından kod:

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();
                        }
                }
        );
}

Sitenizin Düzenleme ve Önizleme modlarında ve yayımlanmış bir çevrim içi sitede faaliyette bulunacak gezinme bağlantılarını oluşturmak için Görüntüleme Uygulama Programı Arabirimi çağrılarını kullanabilirsiniz. Bkz. Uygulama Programı Arabirimi Referansını Görüntüleme.

Gezinme bilgilerinin topnav.js gibi bir JavaScript dosyasına konulması doğru bir uygulamadır. Oracle Content Management ile sağlanan örnek temalarda görebileceğiniz gibi JavaScript dosyası genel olarak temanın /assets/js/ klasöründe saklanır.