Показать сообщение отдельно
  #1 (permalink)  
Старый 28.08.2013, 10:04
Аспирант
Отправить личное сообщение для Round Посмотреть профиль Найти все сообщения от Round
 
Регистрация: 08.04.2012
Сообщений: 49

Ajax и цикл foreach - нужна помощь
Уже сам зациклился с этим аякс-циклом... может кто то свежим глазом глянет и скажет где я накосячил? Please!

В глобальную переменную ($woocommerce) из страницы закидываются данные для "корзины покупок". Мне нужно эти данные выдернуть в цикле и вывести на этой же странице без перезагрузки страницы.

Вот код скрипта:

// Ensure cart contents update when products are added to the cart via AJAX

add_filter('add_to_cart_fragments', 'woocommerce_header_add_to_cart_fragment');
 
function woocommerce_header_add_to_cart_fragment( $fragments ) {
	global $woocommerce;
	
	ob_start();
	
	?>

	<b class="cart-contents"><?php echo sprintf(_n('%d item', '%d items', $woocommerce->cart->cart_contents_count, 'woothemes'), $woocommerce->cart->cart_contents_count);?> - <?php echo $woocommerce->cart->get_cart_total(); ?></b>

<?php 
		foreach ($woocommerce->cart->cart_contents as $cart_item_key => $cart_item) :
			
			$i++;
			if ( $i == 1 ) :				
				$rowclass = ' class="cart_oddrow"';			
			else :
				$rowclass = ' class="cart_evenrow"';
				$i = 0;
			endif;
	
			$_product = $cart_item['data'];
			
			if ($_product->exists() && $cart_item['quantity']>0) :
				echo '<li'.$rowclass.'>';
				
				echo '<div class="dropdowncartproduct">';
				echo '<a href="'.get_permalink($cart_item['product_id']).'">';				
				echo apply_filters('woocommerce_cart_widget_product_title', $_product->get_title(), $_product).'</a>';				
				if ($_product instanceof woocommerce_product_variation && is_array($cart_item['variation'])) :
        			echo woocommerce_get_formatted_variation( $cart_item['variation'] );
   				endif;
				echo '</a>';
				echo '</div>';
				
				echo '<div class="dropdowncartquantity">';				
				echo '<span class="quantity">' .$cart_item['quantity'].' &times; '.woocommerce_price($_product->get_price()).'</span>';
				echo '</div>';
				echo '<div class="clear"></div>';
				
				echo '</li>';
				
			endif;
		endforeach; 

	
	$fragments['.cart-contents'] = ob_get_clean();
	
	return $fragments;
	
}


Косяк в том что новый цикл выводится на странице вместе с предыдущим циклом. Каждый новый цикл добавляется к предыдущему, а не заменяет его.

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

Подскажите где ошибка?

Вот то что лежит на странице:

<div class="span3">

	<b class="cart-contents"><?php echo sprintf(_n('%d item', '%d items', $woocommerce->cart->cart_contents_count, 'woothemes'), $woocommerce->cart->cart_contents_count);?> - <?php echo $woocommerce->cart->get_cart_total(); ?></b>

<?php 
		foreach ($woocommerce->cart->cart_contents as $cart_item_key => $cart_item) :
			
			$i++;
			if ( $i == 1 ) :				
				$rowclass = ' class="cart_oddrow"';			
			else :
				$rowclass = ' class="cart_evenrow"';
				$i = 0;
			endif;
	
			$_product = $cart_item['data'];
			
			if ($_product->exists() && $cart_item['quantity']>0) :
				echo '<li'.$rowclass.'>';
				
				echo '<div class="dropdowncartproduct">';
				echo '<a class="cart-contents" href="'.get_permalink($cart_item['product_id']).'">';				
				echo apply_filters('woocommerce_cart_widget_product_title', $_product->get_title(), $_product).'</a>';				
				if ($_product instanceof woocommerce_product_variation && is_array($cart_item['variation'])) :
        			echo woocommerce_get_formatted_variation( $cart_item['variation'] );
   				endif;
				echo '</a>';
				echo '</div>';
				
				echo '<div class="dropdowncartquantity">';				
				echo '<span class="quantity">' .$cart_item['quantity'].' &times; '.woocommerce_price($_product->get_price()).'</span>';
				echo '</div>';
				echo '<div class="clear"></div>';
				
				echo '</li>';
				
			endif;
		endforeach; 

?>    
    
              </div>
Ответить с цитированием