2016-03-15 9 views
5

So che è stupido da fare ma ho la situazione che creo i menu in diverse cartelle. E ho provato a creare il Baseurl per il menu.Come creare l'URL BASE del sito Web se il menu si trova in una cartella diversa?

function getBaseUrl() 
{ 
    $currentPath = $_SERVER['PHP_SELF']; 
    $pathInfo = pathinfo($currentPath); 
    $hostName = $_SERVER['HTTP_HOST']; 
    $protocol = strtolower(substr($_SERVER["SERVER_PROTOCOL"],0,5))=='https://'?'https://':'http://'; 
    return $protocol.$hostName.$pathInfo['dirname']."/"; 
} 

Utilizzare l'url di base come <?php echo getBaseUrl(); ?>. Il mio problema è:

Let ho menù aaa bbb ccc ddd. E la pagina del menu aaa è all'interno di folder1/page1.php

pagina di bbb il menu è all'interno di folder2/page2.php. Non posso andare dal menu aaa al menu bbb.

Qualcuno ha un'idea? Si prega di suggerire

+0

Dove si chiama questa funzione 'getBaseUrl'? Puoi pubblicare i menu HTML? – KAD

+0

@ KAD Uso getBaseUrl() nella pagina di navigazione e includo in tutte le pagine. Le pagine del menu sono semplici. Non è così conforme. Voglio solo ottenere l'hyper link corretto per tutti i menu –

+0

'| >Operating Expences | >Revenue 'Operating Expences è nella cartella principale (hims) e Revenue è all'interno di lui/cartella proposta –

risposta

2

È possibile creare un array con l'elenco delle pagine che sono state indicizzate da un'etichetta:

function getBaseUrl($naviItem) 
{ 
    var $navigation = array( 
     'aaa_menu' => '/folder1/page1.php', 
     'bbb_menu' => '/folder2/page2.php' 
    ); 

    //$currentPath = $_SERVER['PHP_SELF']; 
    //$pathInfo = pathinfo($currentPath); 
    $hostName = $_SERVER['HTTP_HOST']; 
    $protocol = strtolower(substr($_SERVER["SERVER_PROTOCOL"],0,5))=='https://'?'https://':'http://'; 

    // return the path relative to the passed navitem 
    return $protocol.$hostName.$navigation[$naviItem]; 
} 

Poi, nel codice HTML, si passa questa etichetta relativa alla voce di navigazione che si vuole raggiungere il baseURL per:

<a href="<?php echo getBaseUrl('aaa_menu'); ?>">aaa</a> 
<a href="<?php echo getBaseUrl('bbb_menu'); ?>">bbb</a> 
0

Ciao Shrestha è molto facile basta definire costante e utilizzare

define('DOMAIN_URL', 'http://' . $_SERVER['SERVER_NAME'] . '/projectname/'); 

E quando si impostano i collegamenti -

<a href="<?php echo DOMAIN_URL; ?>/folder1/page1.php">aaa</a> 
<a href="<?php echo DOMAIN_URL ?>/folder2/page2.php">bbb</a> 
+0

ok, thnks ma ho una pagina di intestazione che contiene file css e js. Potrebbe essere utilizzato per entrambi i menu. Non posso usare 2 diversi link. Come farlo? –

+0

Dove devo posizionare il define? Sul controlo al controller? O dove? –