Ben tüm site genelinde Magento'nın kırıntıları çıkışını sınırlamak gerekiyor, ve ben bu script orada yolun en olduğumu düşünüyorum.
$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;
Bu hızlı değişiklik ile sorun $bleng
görünür metin html biçimlendirme karakterleri sayma gibi olmasıdır. Ne yapmam gerekiyor, sadece görünen metni (kırıntı 'etiket') saymak ve $breadcrumbs
buna göre trim olduğunu. Olduğu gibi, bu komut kırparak edilir ve li> görünür bir metnin üstüne dize, ama geri sonunda bunları ekleyerek etiketlerini kullanarak çalışmak için görünmüyor:
echo $trimmed."...</a></li>";
Ben keyfi bir karakter sınırını kullanmak gerektirmez bunu yapmak için bir SEO dostu bir JS yolu yoktur sanıyorum. Ben bu kadar uzun süre çalışır gibi, bunun için PHP veya JS ya da kullanmak için mutluyum. Herhangi bir öneriniz?