Php 修剪马根托的面包屑

Php 修剪马根托的面包屑,php,javascript,magento,Php,Javascript,Magento,我需要限制整个站点上Magento面包屑的输出,我想我在这个脚本上已经做到了 $breadcrumbs = ""; $bleng = 0; foreach($crumbs as $_crumbName=>$_crumbInfo): $breadcrumbs .= "<li class=\"".$_crumbName."\">"; $bleng = $bleng + strlen($_crumbName);

我需要限制整个站点上Magento面包屑的输出,我想我在这个脚本上已经做到了

    $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>&gt;</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>&gt;</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>&gt;</span>";
         endif;
        $breadcrumbs .= "</li>";
    endforeach;
    echo $breadcrumbs;
    ?>