2013-11-22 4 views
0

Я использую следующий код (строка, начинающаяся с <p class="category">), чтобы напечатать соответствующие категории каждого сообщения в архиве пользовательского портфеля.Как определить разделитель для последнего элемента списка?

Как мне изменить код, чтобы на последнем, помимо запятой, использовался амперсанд? Таким образом, я могу заставить его напечатать «Identity, Print, & Веб-дизайн» вместо «Идентичность, печать, веб-дизайн».

Код:

<?php if (have_posts()) : $count = 0; 
    while (have_posts()) : the_post(); $count++; 
    $classes = 'portfolio-item item-' . $count; 
    if ($count % 3 == 0) { 
     $classes .= ' ie-col3'; 
    } 
    if (!has_post_thumbnail() || post_password_required()) { 
     $classes .= ' no-thumb'; 
    } ?> 
    <div class="<?php echo $classes; ?>"> 
     <?php if (has_post_thumbnail() && !post_password_required()) { ?> 
     <a href="<?php the_permalink() ?>" rel="bookmark" class="thumb"><?php the_post_thumbnail($thumbnail); ?></a> 
     <?php } ?> 
     <a href="<?php the_permalink() ?>" rel="bookmark" class="title-overlay"><?php the_title() ?></a> 

     <p class="category"><?php echo strip_tags(get_the_term_list($post->ID, 'portfolio_category', '' , ', ')); ?> Design</p> 

    </div> 

    <?php endwhile; ?> 

    <?php portfoliopress_content_nav(); ?> 

    <?php else: ?> 

     <h2 class="title"><?php _e('Sorry, no posts matched your criteria.', 'portfoliopress') ?></h2> 

<?php endif; ?> 
+0

Полностью не связанный с вашей проблемой, но я преподаватель английского языка, поэтому я должен что-то сказать. Вы не используете запятую с & (или и). Он должен быть item, item, item & item. –

+0

@LeeLoftiss Не согласен, я большой поклонник Оксфордской запятой. Не то, чтобы «один предмет и элемент» был сбит с толку для одного составного элемента, но запятая устраняет двусмысленность. – user2990421

+0

Я только что вернулся и перечитал проблему. Я пропустил первый раз, когда вы говорили, что хотите серийную запятую или то, что вы называете запятой Оксфорда. Я уже видел это использование в Оксфорде, но всегда связывал его с каким-то странным британцем. В США большинство людей не используют его. - Кстати, если вы нашли один из полезных ответов, могли бы вы сделать это как ответ. Если нет, то я бы предложил функцию strrpos(). –

ответ

0

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

Чтобы вставить запятые, используйте implode(', ', $array), которая создает: красный, синий, зеленый

Если вы хотите добавить амперсанд, вы можете использовать array_pop($array) который удалит последний элемент. Просто проверьте, что размер массива не менее 3.

// Display categories tagged by the post. 
if (get_the_category()) { 

    // Add our categories to a new array 
    $category_list = array(); 

    // Sift through every category, optionally doing some maintenence. 
    foreach(get_the_category() as $cat) { 
    if ($cat->name == 'uncategorized') continue; // Skip uncategorized category 

    // Create an <a> element for our category 
    $category_list[] = sprintf('<a href="%s" title="View all posts in %s">%s</a>', 
     esc_attr(get_category_link($cat->term_id)), 
     esc_attr($cat->name), 
     $cat->name 
    ); 
    } 

    // If we have multiple categories, display a list 
    if (count($category_list) > 2) { 
     // Take the last category off, then add it on after an ampersand. 
     $last_category = array_pop($category_list); 

     echo sprintf('Categories: %s &amp; %s' 
      implode(', ', $category_list), 
      $last_category 
    ); 
    } else { 
     if (count($category_list) > 1) 
     echo 'Categories: ', implode(', ', $category_list); 
     elseif (count($category_list) == 1) 
     echo 'Category: ', $category_list[0]; 
    } 
} 
0

просмотрите список должностей дважды. Первый раз просто получить общее количество, без обработки данных. Во второй раз посмотрите счет. Когда вы переходите к следующему пункту, вместо использования ',' используйте '&'.

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