Magento Получить URL-адрес после основного URL-адреса

Я посмотрел по всему Интернету, но не могу найти следующий ответ:

Мы хотим получить часть в Magento в .phtml после основного URL-адреса, если:

domain.com/shoes.html мы хотим получить только shoes.html

Это важно, потому что у нас есть многоборье в .nl и .be, и мы хотим использовать hreflang. Мы должны предоставить в обоих магазинах URL-адрес обоих магазинов, а также из .be и .nl, а затем с подкатегорией или URL-адресом продукта.

В .phtml вы можете получить текущий url с помощью: helper ('core/url') → getCurrentUrl();? >

С помощью этого кода вы получите общий URL-адрес domain.com/shoes.html, и нам нужна только часть shoes.html

Было бы здорово, если бы кто-нибудь знал ответ

Ответ 1

Вы можете сделать это:

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

$path будет содержать URL-адрес, исключающий доменное имя.

Ответ 2

Вы можете получить это имя файла, используя метод basename PHP

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

Ответ 3

У меня было две проблемы с некоторыми из предложений здесь: во-первых, getBaseUrl() включал номер порта, а во-вторых, мой базовый URL-адрес включает в себя каталог хранилища, например. www.example.com/store (который включен в getBaseUrl() и RightThing). Ответ заключался в том, чтобы посмотреть код для getCurrentUrl() и создать мой собственный текущий URL-адрес, который не скрывал порт.

Для меня работал следующий код:

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

Есть много способов получить то, о чем вы просите, это просто зависит именно от того, что вы хотите. Вы можете получить текущий url, как вы делаете, и удалить базовый url (Mage::getBaseUrl()) с помощью str_replace.

Или вы можете использовать $_SERVER['REQUEST_URI']

Ответ 5

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

или

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

выше код может работать не всегда, как ожидалось. Лучший способ найти текущий URL-адрес - использовать следующий код:

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