2013-04-24 14 views
10

ich alle über das Internet ausgesehen haben, aber die folgende Antwort nicht gefunden:Magento URL erhalten nach der Haupt url

Wir wollen das Teil in Magento in .phtml nach der Haupt-URL erhalten, also wenn:

domain.com/shoes.html wir wollen nur shoes.html

Dies ist wichtig, weil wir einen multishop in .nl und .be haben und wir wollen die hreflang verwenden. Wir müssen in beiden Shops die URL beider Shops angeben, sowohl von .be und .nl und dann von der Subkategorie oder Produkt-URL.

In .phtml Sie die aktuelle URL bekommen mit: Helfer ('core/url') -> getCurrentUrl();>

Mit diesem Code werden Sie die gesamte URL so domain.com/shoes erhalten .html, und wir wollen nur den Teil shoes.html

wäre toll, wenn jemand die Antwort

+1

FYI, jetzt Magento seine eigene Stack Seite hat: http://magento.stackexchange.com –

Antwort

8

Sie weiß, dass Dateinamen mithilfe von PHP-Basisnamen Methode

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

ich diese Option versucht, aber es hat nicht an die Arbeit. Was ich tun will ist, dass der Teil nach der Haupt-URL so shoes.html hinter zwei URLs und nur in Code passt. Wir wollen es hinter einen hreflang bringen: wir haben eine holländische und belgische Seite, also .nl und .be in bot - headern wollen wir die ur .nl und .be mit der Erweiterung dahinter haben: .be/shoes.html und .be/shoes.html .nl/schuhe.html. Wie würde das funktionieren, haben wir versucht, href = "domain.nl/ helper ('core/url') -> getCurrentUrl();?>" Aber dann bekommst du domain.nl/domain.nl und wir wollen domain.nl/shoes.html bekommen? – Coen

1

Es gibt viele bekommen w ays, um zu bekommen, wonach Sie fragen, es hängt genau davon ab, was Sie wollen. Sie können die aktuelle URL abrufen und entfernen Sie die Basis-URL (Mage::getBaseUrl()) mit einer str_replace.

Oder Sie $_SERVER['REQUEST_URI']

+0

Lieber Nachito, ich lege oben eine Erklärung von dem, was wir versuchen zu tun, können Sie einen Blick darauf werfen, wenn Sie wissen, wie wir das machen müssen? Danke – Coen

25

nutzen könnten Sie dies tun könnte:

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

$ Pfad die URL ohne den Domänennamen enthalten.

+2

funktioniert!Ich benutzte das auch, um "mysite.com" mit '$ url-> getHost()' – Justin

+1

zu bekommen. Das ist lächerlich. – JamesHalsall

+0

@JamesHalsall, Mit 'this', ich schätze, du meinst Magento. Ich kam hierher, weil [EQP] (https://github.com/magento/marketplace-eqp) nicht möchte, dass ich 'basename()' verwende. Bah – aross

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

oder

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

obigen Code kann nicht immer wie erwartet. Bessere Möglichkeit, die aktuelle URL zu finden, ist den folgenden Code zu verwenden:

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

warum kann die folgende URL nicht funktionieren ?? ** $ currentUrl = Mage :: Hilfsprogramm ('core/url') -> getCurrentUrl() ** oder ** $ currentUrl = Mage :: getUrl ('*/*/*', Feld ('_ current' => true))); ** – Supravat

4

Ich hatte zwei Probleme mit einigen der Vorschläge hier zunächst getBaseURL() enthalten die Portnummer, und zweitens meine Basis-URL enthält ein Speicherverzeichnis , z.B www.example.com/store (das in getBaseUrl() und RightThing enthalten ist). Die Antwort war, den Code für getCurrentUrl() zu betrachten und meine eigene aktuelle URL zu erstellen, die den Port nicht verbarg.

Der folgende Code für mich gearbeitet:

<?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

Gut funktioniert ... – VijayS91