web-dev-qa-db-fra.com

Magento Obtenir l'URL après l'URL principale

J'ai regardé partout sur Internet, mais je ne trouve pas la réponse suivante:

Nous voulons obtenir la partie dans Magento en .phtml après l’URL principale, donc si:

domain.com/shoes.html nous voulons obtenir uniquement des chaussures.html

Ceci est important car nous avons un multishop en .nl et .be et nous voulons utiliser le hreflang. Nous devons donner aux deux magasins l'URL des deux magasins, ainsi de la .be et du .nl, puis à l'URL de la sous-catégorie ou du produit.

En .phtml, vous pouvez obtenir l’URL actuelle avec: helper ('core/url') -> getCurrentUrl ();?>

Avec ce code, vous obtiendrez l'URL totale ainsi domain.com/shoes.html et nous ne voulons que la partie shoes.html

Ce serait bien si quelqu'un connaissait la réponse

10
Coen

Vous pourriez faire ceci:

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

$ path contiendra l'URL à l'exclusion du nom de domaine.

25
Jaymz

Vous pouvez obtenir ce nom de fichier en utilisant la méthode de base nommée PHP

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

Certaines des suggestions proposées présentaient deux problèmes: d’une part, getBaseUrl () incluait le numéro de port et, d’autre part, mon URL de base contenait un répertoire de stockage, par exemple. www.example.com/store (inclus dans getBaseUrl () et le RightThing). La réponse était d'examiner le code de getCurrentUrl () et de créer ma propre URL actuelle qui ne masquait pas le port.

Le code suivant a fonctionné pour moi:

<?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>';
?>
4
Kevin Sadler

Il y a plusieurs façons d'obtenir ce que vous demandez, cela dépend exactement de ce que vous voulez. Vous pouvez obtenir l'URL actuelle comme vous le faites et supprimer l'URL de base (Mage::getBaseUrl()) avec un str_replace.

Ou, vous pouvez utiliser $_SERVER['REQUEST_URI']

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

ou

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

le code ci-dessus peut ne pas toujours fonctionner comme prévu. Une meilleure façon de trouver l'URL actuelle consiste à utiliser le code suivant:

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