2016-08-30 5 views
4

나는 상점 루프에서 일관된 그리드 레이아웃을 얻으려고합니다.특정 길이의 상점 페이지에서 제품 제목에 휴식 추가하기

문자열 길이에 따라 제품 제목이 1 줄 또는 2 줄에 걸쳐 있으므로 문자열 길이가 다음 줄과 겹치는 양보다 적 으면 '
' ,

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

나는 내용 product.php의 woocommerce 템플릿에 넣어 한 을하지만 그건 '는 t는

내가 지금 시도하는 코드입니다/가게 루프 페이지의 전체 간격에 영향을 미칠 작동하지 않음.

내 코드가 맞습니까?

도움을 주시면 감사하겠습니다.

덕분에

답변

0

나는이 제품 제목 사이에
태그를 배치하기 위해 올바른 방법이 아니다라고 생각합니다. 제품 제목이 "의학 용어에 대한 테스트 은행 : A 생활 언어, 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 answerwoocommerce_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 파일.

이 코드는 테스트되었으며 작동합니다.