2009-06-17 16 views
5

Potrzebuję znaleźć sposób na pokazanie wartości niestandardowego atrybutu w miejsce "Nazwa produktu" pokazanego na obrazku poniżej.Magento - Pokaż niestandardowe atrybuty w tabeli produktów zgrupowanych

Grouped products table http://www.magentocommerce.com/images/uploads/grouped_prod_front.gif

pracuję z /app/design/frontend/default/defaultx/template/catalog/product/view/type/grouped.php

Poniższy kod nie działa (atrybut niestandardowy jest tworzony rok):

<?php if (count($_associatedProducts)): ?> 
<?php foreach ($_associatedProducts as $_item): ?> 
    <tr> 
     <td><?php echo $this->htmlEscape($_item->getYearmade()) ?></td> 

Każda pomoc zostanie doceniona.

EDYCJA: Tak więc odpowiedź okazała się dość prosta. Widzisz, o czym nie wspomniałem powyżej, to, że w rzeczywistości było ... ale to była tylko liczba (np. 52). Okazuje się, że był to identyfikator dla tej niestandardowej wartości atrybutu (był to niestandardowy atrybut listy rozwijanej).

Tak w skrócie
Działa to dla niestandardowych atrybutów typu tekst:

echo $this->htmlEscape($_item->getYearmade()) 

Ale dla wszystkich innych typów atrybutu niestandardowego (myślę), powinny być stosowane następujące:

echo $this->htmlEscape($_item->getAttributeText('yearmade')) 

Nie odkryłbym tego bez doskonałej odpowiedzi dostarczonej przez Alana Storma, poniżej. Dziękuję Panu.

+0

Do tych, którzy wciąż udzielają odpowiedzi, należy pamiętać, że to pytanie zostało wysłane 3 lata temu. Odtąd baza kodów Magento ewoluowała, więc oczywiście twoje wyniki będą inne. –

Odpowiedz

3

Wszystkie modele Magento mają dostępną metodę "getData", która zwróci tablicę php z parami klucz/wartość. Spróbuj to u góry pliku grouped.phtml (po $ _product jest zdefiniowana)

print('<pre>');print_r($_product->getData());print('</pre>'); 

Powinieneś zobaczyć wyjście, które wygląda coś jak poniżej.

Array 
(
    [store_id] => 1 
    [entity_id] => 3437 
    [entity_type_id] => 4 
    [attribute_set_id] => 27 
    [type_id] => grouped 
    [sku] => 
    [category_ids] => 
    [created_at] => 2009-04-16 03:37:51 
...  

Można więc pobrać szereg właściwości i po prostu wyciągnąć klucz. Możesz także skorzystać z wygodnych/magicznych metod Magento getX i setX. We wszystkich modelach Magento, można uzyskać dostęp do dowolnej właściwości w tablicy danych poprzez wywołanie metody opartej na wersji camel sprawa nazwy,

$created_at = $_product->getCreatedAt(); 
$_product->setCreatedAt($date); 

Tak, bez względu na niestandardowy atrybut imię, powinieneś być w stanie uzyskać przy użyciu powyższego, a jeśli nie jesteś pewien, po prostu print_r lub var_dump zawartość tablicy zwróconej przez getData().

Wreszcie jeśli niestandardowy atrybut jest na jednym z produktów związanych prostego produktu, będziesz chce coś bardziej jak

$_associatedProducts[0]->getCreatedAt(); 
+0

Nie mogę uzyskać atrybutów niestandardowych z powyższym kodem. Robię coś złego? Mam niestandardową kategorię o nazwie "product_type" i chciałbym pokazać jej wartość na stronie grouped.phtml. – Landitus

+0

Jak tworzysz obiekt produktu? –

0

Od ver. 1.3. iw 1.4 też musisz użyć $ _item nie $ _product, dla mnie to działa dobrze również w tabeli grupowej.

Przykład:

<?php echo $_item->getAttributeText('your attribute'); ?> 
1

Miałem ten sam problem.

  1. Musisz zlokalizować grouped.phtml app/design/frontend/base/default/template/catalog/product/view/type/grouped.phtml

  2. Get element, przykład $_item[units]

  3. Dodaj komórkę w tabeli i wklej echa $_item['units'];

  4. to wszystko:)

Powiązane problemy