2013-04-24 12 views
10

ho guardato tutti su Internet, ma non riesce a trovare la seguente risposta:Magento ottenere l'URL dopo l'url principale

Vogliamo ottenere la parte in Magento in .phtml dopo l'url principale quindi se:

domain.com/shoes.html vogliamo ottenere solo shoes.html

Questo è importante perché abbiamo un multidistretto in .nl e .be e vogliamo utilizzare l'hreflang. Abbiamo bisogno di dare in entrambi i negozi l'url di entrambi i negozi così bene da .be e .nl e poi con la sottocategoria o l'url del prodotto.

In .phtml è possibile ottenere l'url corrente con:? Helper ('core/url') -> getCurrentUrl();>

Con questo codice si otterrà l'url totale in modo domain.com/shoes .html e vogliamo solo la parte scarpe.html

Sarebbe bello se qualcuno conosce la risposta

+1

FYI, Magento ha ora un proprio sito StackExchange: http://magento.stackexchange.com –

risposta

8

si può ottenere che il nome del file utilizzando il metodo nome base di PHP

$url = Mage::helper('core/url')->getCurrentUrl(); //http://domain.com/shoes.html 
echo basename($url); //outputs shoes.html 
+0

ho provato questa opzione, ma non sono riuscito a farlo funzionare. Quello che voglio fare è ottenere la parte dopo l'url principale in modo che shoes.html si adatti a due URL e solo nel codice. Vogliamo portarlo dietro un hreflang: abbiamo un sito olandese e belga, quindi .nl e .be nelle intestazioni dei bot, vogliamo avere il nostro .nl e .be con l'estensione dietro di esso così: .be/shoes.html e .nl/scarpe.html. Come funziona, abbiamo provato href = "domain.nl/ helper ('core/url') -> getCurrentUrl();?>" Ma poi hai domain.nl/domain.nl e vogliamo ottenere domain.nl/shoes.html? – Coen

1

ci sono molti w ays per ottenere quello che stai chiedendo, dipende solo esattamente quello che vuoi. È possibile ottenere l'URL corrente mentre si sta facendo e rimuovere l'URL di base (Mage::getBaseUrl()) con un str_replace.

Oppure, si potrebbe utilizzare $_SERVER['REQUEST_URI']

+0

Caro Nachito, posto sopra una spiegazione di ciò che cerchiamo di fare, puoi dare un'occhiata se sai come dobbiamo farlo funzionare? Grazie – Coen

25

Si potrebbe fare questo:

$urlString = Mage::helper('core/url')->getCurrentUrl(); 
$url = Mage::getSingleton('core/url')->parseUrl($urlString); 
$path = $url->getPath(); 

$ percorso conterrà l'URL escluso il nome di dominio.

+2

Funziona!Ho anche usato questo per ottenere "mysite.com" con '$ url-> getHost()' – Justin

+1

Questo è ridicolo. – JamesHalsall

+0

@JamesHalsall, Con "questo", suppongo che tu intenda Magento. Sono venuto qui perché [EQP] (https://github.com/magento/marketplace-eqp) non mi vuole usare 'basename()'. Bah – aross

1
$currentUrl = Mage::helper('core/url')->getCurrentUrl() 

o

$currentUrl = Mage::getUrl('*/*/*', array('_current' => true)); 

sopra il codice non può funzionare sempre come previsto. Modo migliore per trovare l'URL corrente è quello di utilizzare il seguente codice:

if (!in_array(Mage::app()->getFrontController()->getAction()->getFullActionName(), array('cms_index_noRoute', 'cms_index_defaultNoRoute'))) { 
    $currentUrl = Mage::helper('core/url')->getCurrentUrl(); 
} 
+0

perché potrebbe non funzionare il seguente URL ?? ** $ currentUrl = Mage :: helper ('core/url') -> getCurrentUrl() ** o ** $ currentUrl = Mage :: getUrl ('*/*/*', array ('_ current' => true)); ** – Supravat

4

ho avuto due problemi con alcuni dei suggerimenti qui, in primo luogo getBaseURL() incluso il numero di porta, e in secondo luogo il mio URL di base comprende una directory negozio , per esempio www.example.com/store (incluso in getBaseUrl() e RightThing). La risposta era di guardare il codice per getCurrentUrl() e creare il mio URL corrente che non nascondeva la porta.

Il seguente codice funzionato per me:

<?php 
$request = Mage::app()->getRequest(); 
$port = ':' . $request->getServer('SERVER_PORT'); 

$currentUrl = $request->getScheme() . '://' . $request->getHttpHost() . $port . $request->getServer('REQUEST_URI'); 

$relUrl = str_replace(Mage::getBaseUrl(), '', $currentUrl); 
    echo '<p>Base: ' . Mage::getBaseUrl() . '</p>'; 
    echo '<p>This: ' . $currentUrl . '</p>'; 
    echo '<p>Repl: ' . $relUrl . '</p>'; 
?> 
+0

Funzionante bene ... – VijayS91

Problemi correlati