如何使用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专家可以指导我走正确的道路。 :(
答案 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开始使用函数)