【问题标题】:PHP Bold String Before Specific Char特定字符之前的 PHP 粗体字符串
【发布时间】:2020-09-28 12:30:21
【问题描述】:

我有这个标准的产品标题:“品牌名称 - 商品标题”,我需要像这样转换这个字符串:

品牌名称
项目标题

所以我需要处理两件事:将字符串中的第一个破折号替换为“br”,并将粗体应用于第一个破折号之前的文本。

这段代码我只达到了目标的第一部分:

<a class="product-item-link primabold-category" href="<?php echo $_product-> getProductUrl() ?>">
 <?php echo str_replace(' - ', '<br />', $_helper->productAttribute($_product, $_product->getName() , 'name')); ?></a>

还有这个 CSS:

.primabold-category::first-line { font-weight: 900; font-size: 14px; letter-spacing: 0px;}

但结果并不像预期的那样,因为它只“加粗”了第一行,即使破折号之前的文本在两行上也是如此..

这里是一个真实的标题示例:

POLO RALPH LAUREN - 牛津 azzurro 的 Camicia donna

预期结果:

马球拉尔夫劳伦
Camicia donna in Oxford azzurro

正如您从picture 中看到的,当我在移动端查看时,“lauren”在第二行并且不是粗体:(

--> 我找到了一个符合预期结果的javascript:

<a class="ProductList-title primabold-category" style="font-weight: 100;">Polo ralph lauren - T-shirt oudspeaker</a> <script> function changeBrandName() { var prodList = document.querySelectorAll("a.primabold-category"); for (var i = 0; i < prodList.length; i++) { var text = prodList[i].innerText; var index = text.indexOf('-'); var lower = text.substring(0, index); var higher = text.substring(index + 1); prodList[i].innerHTML = lower.bold() + '<br />' + higher; } } changeBrandName(); </script>

但是在分层导航加载新产品线的任何时候都不会触发 javascript,所以我认为如果可能的话,使用 PHP 将是完美的解决方案。

【问题讨论】:

  • 所以在标题前输出一个&lt;strong&gt;标签,并将其中的-替换为&lt;/strong&gt;&lt;br /&gt; ...? (并再次删除 CSS,::first-line 将无法正常工作,如果您不能一开始就强制第一部分位于单行上。)
  • @04FS,只要文本的其余部分没有 -
  • @NigelRen 是的,好点。如果这需要仅限于仅替换第一次出现的 -,而 str_replace 本身无法做到这一点,stackoverflow.com/questions/1252693 有办法处理。

标签: php css magento2


【解决方案1】:

改用此代码:

$brand= $_helper->productAttribute($_product, $_product->getName() , 'name');

$explodedBrand=explode(' - ',$brand,2);

if(count($explodedBrand) > 1){
    $brand = '<span class="bold">'.$explodedBrand[0].'</span>'.'<br>'.$explodedBrand[1];
}

echo $brand;

记得在你的 CSS 文件中定义 bold 类。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-04
    • 1970-01-01
    • 2014-11-05
    相关资源
    最近更新 更多