Php 修剪马根托的面包屑
我需要限制整个站点上Magento面包屑的输出,我想我在这个脚本上已经做到了Php 修剪马根托的面包屑,php,javascript,magento,Php,Javascript,Magento,我需要限制整个站点上Magento面包屑的输出,我想我在这个脚本上已经做到了 $breadcrumbs = ""; $bleng = 0; foreach($crumbs as $_crumbName=>$_crumbInfo): $breadcrumbs .= "<li class=\"".$_crumbName."\">"; $bleng = $bleng + strlen($_crumbName);
$breadcrumbs = "";
$bleng = 0;
foreach($crumbs as $_crumbName=>$_crumbInfo):
$breadcrumbs .= "<li class=\"".$_crumbName."\">";
$bleng = $bleng + strlen($_crumbName);
if($_crumbInfo['link']):
$breadcrumbs .= "<a href=\"".$_crumbInfo['link']."\" title=\"".$this->htmlEscape($_crumbInfo['title'])."\">".$this->htmlEscape($_crumbInfo['label'])."</a>";
$bleng = $bleng + strlen($this->htmlEscape($_crumbInfo['label']));
elseif($_crumbInfo['last']):
$breadcrumbs .= "<strong>".$this->htmlEscape($_crumbInfo['label'])."</strong>";
$bleng = $bleng + strlen($this->htmlEscape($_crumbInfo['label']));
else:
$breadcrumbs .= $this->htmlEscape($_crumbInfo['label']);
$bleng = $bleng + strlen($this->htmlEscape($_crumbInfo['label']));
endif;
if(!$_crumbInfo['last']):
$breadcrumbs .= "<span>></span>";
endif;
$breadcrumbs .= "</li>";
endforeach;
if ($bleng > 70): // Arbitrary threshold
$trimmed = $breadcrumbs;
echo substr($trimmed, 0, 70);
echo $trimmed."...";
else:
echo $breadcrumbs;
endif;
我怀疑有一种SEO友好的JS方法可以做到这一点,它不需要我使用任意字符限制。我很乐意使用PHP或JS来实现这一点,只要它有效。有什么建议吗?解决方案
我意识到我所做的是倒退。我已经修改了脚本,从允许的任意字符数开始倒数,当它到达最后一个字符集时,将显示文本修剪为$bleng一个负数
这适用于我的商店,因为子类别级别不超过3个
<?php
$breadcrumbs = "";
$bleng = 70;
foreach($crumbs as $_crumbName=>$_crumbInfo):
$breadcrumbs .= "<li class=\"".$_crumbName."\">";
if($_crumbInfo['link']):
$breadcrumbs .= "<a href=\"".$_crumbInfo['link']."\" title=\"".$this->htmlEscape($_crumbInfo['title'])."\">".$this->htmlEscape($_crumbInfo['label'])."</a>";
$bleng = $bleng - strlen($this->htmlEscape($_crumbInfo['label']));
$bleng - 3;
elseif($_crumbInfo['last']):
$lastleng = strlen($this->htmlEscape($_crumbInfo['label']));
$lastlabel = $this->htmlEscape($_crumbInfo['label']);
$bleng = $bleng - $lastleng;
if ($bleng < 0):
$breadcrumbs .= "<strong>".substr($lastlabel, 0, $bleng)."...</strong>";
else:
$breadcrumbs .= "<strong>".$lastlabel."</strong>";
endif;
else:
$breadcrumbs .= $this->htmlEscape($_crumbInfo['label']);
$bleng = $bleng - strlen($this->htmlEscape($_crumbInfo['label']));
$bleng - 3;
endif;
if(!$_crumbInfo['last']):
$breadcrumbs .= "<span>></span>";
endif;
$breadcrumbs .= "</li>";
endforeach;
echo $breadcrumbs;
?>
发布这篇文章之后,我发现了一个jQuery解决方案,我将在这里尝试:
<?php
$breadcrumbs = "";
$bleng = 70;
foreach($crumbs as $_crumbName=>$_crumbInfo):
$breadcrumbs .= "<li class=\"".$_crumbName."\">";
if($_crumbInfo['link']):
$breadcrumbs .= "<a href=\"".$_crumbInfo['link']."\" title=\"".$this->htmlEscape($_crumbInfo['title'])."\">".$this->htmlEscape($_crumbInfo['label'])."</a>";
$bleng = $bleng - strlen($this->htmlEscape($_crumbInfo['label']));
$bleng - 3;
elseif($_crumbInfo['last']):
$lastleng = strlen($this->htmlEscape($_crumbInfo['label']));
$lastlabel = $this->htmlEscape($_crumbInfo['label']);
$bleng = $bleng - $lastleng;
if ($bleng < 0):
$breadcrumbs .= "<strong>".substr($lastlabel, 0, $bleng)."...</strong>";
else:
$breadcrumbs .= "<strong>".$lastlabel."</strong>";
endif;
else:
$breadcrumbs .= $this->htmlEscape($_crumbInfo['label']);
$bleng = $bleng - strlen($this->htmlEscape($_crumbInfo['label']));
$bleng - 3;
endif;
if(!$_crumbInfo['last']):
$breadcrumbs .= "<span>></span>";
endif;
$breadcrumbs .= "</li>";
endforeach;
echo $breadcrumbs;
?>