2016-08-30 16 views
4

Я пытаюсь получить больше согласованной сетки в моем цикле магазина.Добавление перерыва к названию продукта на страницах магазина на определенную длину

Название продукта охватывает более 1 или 2 строк в зависимости от длины строки, поэтому, если длина строки меньше суммы, которая заставляет ее пересекаться со следующей строкой, я хочу добавить разрыв '
', чтобы он не был «т влияют на общее расстояние страницы магазина петли/

Это код, который я попробовал на данный момент:

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

Я положил его в шаблон WooCommerce контент-product.php, но это не работает.

Правильно ли мой код?

Любая помощь была бы принята с благодарностью.

Благодаря

ответ

0

Я думаю, что это не правильный путь для того, чтобы разместить
тег между названием продукта. Я думаю, вам просто нужно исправить количество символов, используемых в названии вашего продукта, для отображения на странице продукта, например, если название продукта похоже на «Test Bank for Medical Terminology: Living Language, 5/E» в этом случае вы можете ограничить название как «Банк испытаний медицинской терминологии ...» в зависимости от макета

так, таким образом, ваш макет будет оставаться таким же и хорошо

+0

Не могу ли я сделать эту работу, как я изначально планировал? Как будто я закодировал некоторые названия продуктов, это не имеет смысла для пользователя –

0

Что я предлагаю использует следующую

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

Таким образом, вы можете легко отображать заголовки всегда в одной строке. Если это не работает, и вы хотите отобразить полный заголовок, то вы можете использовать плагин с подсказкой, который будет отображать полный заголовок при зависании

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 файла вашей активной дочерней темы (или темы), а также в любом файле плагина.

Этот код проверен и работает.

 Смежные вопросы

  • Нет связанных вопросов^_^