在PHP中的子页面和该子页面下的所有页面中显示内容

时间:2014-08-13 22:29:51

标签: php magento

如何使用PHP在特定页面和该特定页面下的所有页面中显示元素?例如,我想在页面example.com/blog和/ blog的所有子页面下显示一些内容,例如blog / another-page /和blog / another-page / yet-another-page,但不是在那个主页中站点。

在Magento中,我能够使用以下代码在特定页面上显示特定元素:

$currentUrl = Mage::helper('core/url')->getCurrentUrl();
$url = Mage::getSingleton('core/url')->parseUrl($currentUrl);
$path = $url->getPath();
$blogPaths = array('/blog', '/blog/', '/index.php/blog/');
if(in_array($path, $blogPaths))
{
    //Do something on /blog
}

消息来源:Get Current URL in Magento and show something

但如果我浏览/ blog / another-page,我想要显示的特定元素就会消失。我还想在该子页面的所有子页面中显示它。

我现在能想到的唯一方法就是添加该数组中的所有子页面,但它会非常长。例如,我有1000多页。那将是一个非常愚蠢的举动。

我试过/ blog / *但它没有用。我很确定这是错的。有没有更快更简单的方法来检查它是一个/博客页面还是该页面下的任何其他页面,然后显示这个等等等等等等?

我希望一些Magento / PHP专家可以指导我走正确的道路。 :(

1 个答案:

答案 0 :(得分:2)

我猜您刚刚在'/blog/*'函数中添加了in_array。 那当然不会奏效。 我会做以下事情:

function startsWith($haystack, $needle)
{
    return $needle === "" || strpos($haystack, $needle) === 0;
}

$currentUrl = Mage::helper('core/url')->getCurrentUrl();
$url = Mage::getSingleton('core/url')->parseUrl($currentUrl);
$path = $url->getPath();
if (startsWith($path, '/blog/') || (strcmp($path, '/blog') == 0))
{
    //Do something on /blog
}

希望它有所帮助(我从startsWith() and endsWith() functions in PHP开始使用函数)