我有一个Joomla网站,我正在尝试根据foreach声明中的链接检查部分网址。
在Web浏览器中查看时,唯一更改的是URL中引用布局的部分。以下是一些例子:
在Joomla 3中,您可以使用以下php字符串获取布局:
<?php
$app = JFactory::getApplication();
$layout = $app->input->getCmd('layout', '');
?>
在我的php文件中,我有以下foreach循环:
<?php foreach($this->employerlinks as $lnk) { ?>
<li><a href="<?php echo $lnk[0]; ?>"><?php echo $lnk[1]; ?></a></li>
<?php } ?>
基本上,如果<?php echo $lnk[0]; ?>
的'layout'与页面URL的'layout'部分相同,我想在列表项中添加一个'active'类。
我尝试过使用:
<?php foreach($this->employerlinks as $lnk) { ?>
<li class="<?php if ($layout == 'controlpanel'){echo ' active';}; ?>"><a href="<?php echo $lnk[0]; ?>"><?php echo $lnk[1]; ?></a></li>
<?php } ?>
哪种工作有效,但显然如果页面布局为'controlpanel',它会为所有列表项添加“活动”类,但这不是我想要的。我希望这个问题有道理。
谢谢
答案 0 :(得分:1)
这将在$ lnk [0]的每个实例中搜索字符串'controlpanel':
<?php foreach($this->employerlinks as $lnk) { ?>
<li class="<?php if (strpos($lnk[0],'controlpanel')){echo ' active';}; ?>"><a href="<?php echo $lnk[0]; ?>"><?php echo $lnk[1]; ?></a></li>
<?php } ?>
显然,如果您不希望“控制面板”被硬编码,请将其替换为$_GET['layout']
或您定义的$layout
。