2016-08-30 3 views
4

私はショップのループで一貫したグリッドレイアウトをもっと得ようとしています。特定の長さのショップページの商品タイトルへのブレークの追加

文字列の長さによって、製品のタイトルが1行または2行にわたっているため、文字列の長さが次の行に重なる量よりも小さい場合は、 '
'

<?php 
    echo "test"; 
    $title = get_the_title(); 
    if (strlen($title) < 29) 
    { 
     echo '<br>'; 
    } 
?> 

私はコンテンツproduct.php woocommerceテンプレート、でそれを入れているが、それはです:「Tは、これは私が現時点で試してみましたコードである

/ショップループページの全体的な間隔に影響を与えます動作していません

私のコードは正しいですか?

ご協力いただければ幸いです。

おかげ

答えて

0

私は、これは、製品のタイトルの間に
タグを配置するために、正しい方法ではないと思います。 の商品タイトルが "医療用語のテストバンク:A Living Language、5/E"のような場合は、商品ページに表示する商品タイトルに使用されている文字数を修正する必要があると思います。 あなたはこの方法で

ので、あなたのレイアウトに応じて、「...医学用語のテスト銀行」などのタイトルを制限することができ、あなたのレイアウトは同じままと良い

+0

私は元々どのように意図していたのですか? 私はいくつかの製品名を短絡しているように、実際にはユーザーにとって理にかなっていません –

0

iは、次の

を使用している何をお勧めします

h1{ height: 40px; width: 250px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;}
<h1>Sample test test test test</h1>

この方法で、タイトルを常に1行に簡単に表示できます。それがうまくいかず、完全なタイトルを表示したい場合は、ホバーで完全なタイトルを表示するツールチッププラグインを使用することができます

1

この回答はタイトル長と語長"、単語を壊すのを避けるために。

部分的this answer上とwoocommerce_template_loop_product_title() WooCommerceネイティブ関数に基づいて、この関数は、それはショップページにタイトルを表示するにはcontent-product.php WooCommerceテンプレート、に使用されています。ここで

私はあなたの制限文字列の長さが含まれているが、また、ブレイクの言葉を避けるために、複雑な「の単語の長さ」検出に基づいています:

if ( ! function_exists('woocommerce_template_loop_product_title')) { 

    // Show the product title in the product loop. By default this is an <h3> html tag. 

    function woocommerce_template_loop_product_title() { 

     // Define the lenght limit for title (by line) 
     $limit = 29; 

     $title = get_the_title(); 
     $lenght = strlen($title); 

     // 1. The title length is higher than limit 

     if ($lenght >= $limit) { 

      $title_arr1 = array(); 
      $title_arr2 = array(); 
      $sum_length_words = -1; 

      // an array of the words of the title 
      $title_word_arr = explode(' ', $title); 

      // iterate each word in the title 
      foreach($title_word_arr as $word){ 
       // Length of current word (+1 space) 
       $length_word = strlen($word) + 1; 
       // Adding the current word lenght to total words lenght 
       $sum_length_words += $length_word; 
       // Separating title in 2 arrays of words depending on lenght limit 
       if ($sum_length_words <= $limit) 
        $title_arr1[] .= $word; 
       else 
        $title_arr2[] .= $word; 
      } 
      // Converting each array in a string 
      $splitted_title = implode(" ", $title_arr1). ' ('. strlen(implode(" ", $title_arr1)) .')'; 
      $splitted_title .= '<br>'; // adding <br> between the 2 string 
      $splitted_title .= implode(" ", $title_arr2). ' ('. strlen(implode(" ", $title_arr2)) .')'; 
      echo '<h3>' . $splitted_title . '</h3>'; 

     // 2. The title length is NOT higher than limit 

     } else { 
      echo '<h3>' . $title . '</h3>'; 
     } 

    } 

} 

このコードは、関数になります。あなたのアクティブな子テーマ(またはテーマ)の、または任意のプラグインファイルのphpファイル。

このコードはテスト済みであり、動作します。

関連する問題