【问题标题】:Magento Get url after the main urlMagento 在主 url 之后获取 url
【发布时间】:2013-04-18 07:12:03
【问题描述】:

我在网上找遍了,但找不到以下答案:

我们希望在主 url 之后的 .phtml 中获取 Magento 中的部分,所以如果:

domain.com/shoes.html 我们只想得到 shoes.html

这很重要,因为我们在 .nl 和 .be 中有一个 multishop,我们想使用 hreflang。我们需要在两个商店中提供两个商店的网址,以及来自 .be 和 .nl 的网址,然后是子类别或产品网址。

在 .phtml 中,您可以通过以下方式获取当前 url:helper('core/url')->getCurrentUrl();?>

使用该代码,您将获得总网址,因此 domain.com/shoes.html 我们只需要 shoes.html 部分

如果有人知道答案就好了

【问题讨论】:

标签: magento php


【解决方案1】:

你可以这样做:

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

$path 将包含不包括域名的 URL。

【讨论】:

  • 有效!我还用它通过$url->getHost() 获取“mysite.com”
  • @JamesHalsall,this,我猜你的意思是 Magento。我来到这里是因为EQP 不希望我使用basename()。呸
  • @aross 是的,我的意思是 Magento :)
【解决方案2】:

您可以使用 PHP 的 basename 方法获取该文件名

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

【讨论】:

  • 我尝试了这个选项,但没有让它工作。我想要做的是获取主 url 之后的部分,以便 shoes.html 适合两个 url 后面并且仅在代码中。我们想把它放在hreflang后面:我们有一个荷兰和比利时的网站,所以.nl和.be在bot头文件中我们希望你的.nl和.be后面有扩展名:.be/shoes.html和.nl/shoes.html。这将如何工作,我们尝试了 href="domain.nl/helper('core/url')->getCurrentUrl();?>" 但是你得到了 domain.nl/domain.nl我们想得到 domain.nl/shoes.html?
【解决方案3】:

我对这里的一些建议有两个问题,首先 getBaseUrl() 包含端口号,其次我的基本 URL 包含存储目录,例如www.example.com/store(包含在 getBaseUrl() 和 RightThing 中)。答案是查看 getCurrentUrl() 的代码并创建我自己的当前 URL,该 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,并使用 str_replace 删除基本 url (Mage::getBaseUrl())。

    或者,您可以使用$_SERVER['REQUEST_URI']

    【讨论】:

    • 亲爱的 Nachito,我在上面解释了我们尝试做的事情,如果您知道我们必须如何完成这项工作,您可以看看吗?谢谢
    【解决方案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();
    }
    

    【讨论】:

    • 为什么下面的网址可能不起作用?? $currentUrl = Mage::helper('core/url')->getCurrentUrl()$currentUrl = Mage::getUrl('/*/' , 数组('_current' => true));
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-27
    相关资源
    最近更新 更多