2012-11-08 4 views
0

'상위 100 개 제품'이라는 카테고리가 있으며 지금은 컬렉션이 정상적으로 작동합니다. 그러나 내가하고 싶은 일은 목록에있는 100 개의 제품과 관련하여 각 제품이 무엇인지를 동적으로 결정하는 것입니다. 즉, 제품 1이 나열되면 제품 제목 옆에 "# 1"을 추가 할 수있는 값을 얻을 수 있습니다.Magento 컬렉션 문제. 반복에서 순서 결정

제품 # 74가 나열되면 동적으로 "# 74"라고 표시됩니다. getSize 함수를 사용하여 목록의 총 수를 계산할 수는 있지만 나열된 각 제품의 적절한 '시퀀스'번호를 빠져 나오기 위해 varible로 작업하는 방법을 모르겠습니다. getSize를 사용하는 이유는 페이징을 통해 개수를 보존 할 수 있기 때문입니다.

코드를 이해하려면 /catalog/product/list.phtml 템플릿을 참조하십시오. 목록 또는 그리드 모드에서 다음을 볼 수 있습니다 :

편집. 이 코드는 여기에 게시 할 수 없습니다. 그것은 미친 짓이야. 'foreach'제품 컨트 롤러 루프를 감싸는 while 루프를 얻는 방법을 알아야 할 때 while (x) < variable_with_total_products_counted를 사용할 수 있고 x ++가 제품 컨트롤러 내 루프에 있어야합니다. 이 작업을 시도 할 때마다 구문 오류가 발생합니다. 마치 제품 컨트롤러 루프 (for each loop)가 0-> 99 (상위 100 개 제품)에서 반복되는 while 루프 내에 있습니다.

+0

난 이해가 안 돼 .. 너 foreach하니? 왜 안에 카운터를 추가하지 않으시겠습니까? 페이징 기능 때문에 문제가 있습니까? 몇 가지 코드를 보여주고 더 잘 설명하십시오. –

+0

사실 해결책을 찾았을 수도 있습니다. 단순히 페이지 당 레코드 수를 세고 변수를 1로 반복하고 productController 배열에 대해 list.phtml과 함께 제공되는 foreach 루프를 반복합니다. x로 반복하면서 페이지 당 12 개의 레코드가 있으면 1-12를 표시합니다. 페이징의 '페이지 2'에서 첫 번째 레코드를 # 1로 다시 설정합니다. 따라서 페이지 당 레코드 수를 계산하고 페이지 번호를 찾아 'x'에 추가하면 100 개의 레코드 모두 1 ~ 100 증가분을 시뮬레이트합니다. 시간에 타이. 누군가가 원할 경우를 대비하여 나중에 코드를 게시 할 수 있습니다. 그냥 지금 디버깅. TY – Joel

+0

그리고 내가 틀렸다고 알았어. 나는 그것을 발견했을 때 해결책을 게시하겠다고 약속한다. 나는 이것이 어떤 점에서 누군가를 도울 수 있다고 생각한다. – Joel

답변

0

어떻게 이런 일에 대해 :

$count = $collection->getSize(); 
$counter = 1; 
foreach($collection as $item) { 
    // Process item 
    echo '<p>' . $item->getName . ' (' . $counter . ')</p>'; 
    $counter++; 
} 

당신이 제품에 할당 할 수 있습니다, 그 수는 지속적 보장하고이 스크립트/페이지의 기간 동안 할당 된 상태로 유지됩니다 :

$count = $collection->getSize(); 
$counter = 1; 
foreach($collection as $item) { 
    $item->setData('tmp_number', $counter); 
    $counter++; 
} 
// Work with products 
+0

고맙습니다. 나는 나의 지체에 대해 사과하고 싶다, 나는 지난 며칠 동안 떨어져 있었다. 이것은 아마도 효과가 있으며 앞으로 고려해야 할 것이지만이를 해결할 수있는 빠른 방법을 찾았습니다. 내가 한 것은 컬렉션의 총 제품 수를 계산하고, 1을 통해 셀 수있는 변수를 만들고 제품의 최종 합계를 계산하고 마지막 '페이지'에 있는지 여부를 계산하기 위해 수학을 사용하고, 해당 페이지의 남은 제품 수를 조정하고 적절한 값인 + '$ x'를 추가하여 적절한 결과를 만듭니다. 간단히 말해서, 나는 당신이 다음에 한 일을 시도 할 것입니다 :) – Joel