Pergunta

Eu preciso encontrar uma maneira de mostrar o valor de um atributo personalizado no lugar do "Nome do produto" mostrado na imagem abaixo.

produtos agrupados mesa
(fonte: magentocommerce.com )

Eu estou trabalhando com /app/design/frontend/default/defaultx/template/catalog/product/view/type/grouped.php

O código a seguir não funciona (o atributo personalizado é yearmade):

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

Qualquer ajuda seria apreciada.

EDIT: Então a resposta acabou por ser bastante simples. Você vê o que eu não mencionou acima era que não foi , de fato saída ... mas que era apenas um número (por exemplo: 52). Acontece que este era o ID para esse valor atributo personalizado (Era um tipo suspensa de atributo personalizado).

Então, em resumo
Isso funciona para atributos personalizados do tipo texto:

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

Mas para todos os outros tipos de atributo personalizado (eu acho), o seguinte deve ser utilizado:

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

Eu não teria descoberto isso sem a resposta mais excelente fornecido por Alan Storm, abaixo. Obrigado, senhor.

Foi útil?

Solução

modelos

Todos Magento tem um método "getData" disponíveis, que irá retornar um php-array de pares de chave / valor. Tente isto no topo do seu arquivo grouped.phtml (após $ _product é definido)

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

Você deve ver uma saída parecida com o seguinte.

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
...     

Assim, você pode pegar uma variedade de propriedades e basta puxar o para fora a chave. Você também pode usar a conveniência / mágicas getX e setX métodos de Magento. Em todos os modelos Magento, você pode acessar qualquer propriedade na matriz de dados chamando um método baseado na versão caso camelo do nome,

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

Assim, qualquer que seja o seu nome de atributo personalizado é, você deve ser capaz de chegar a ele usando o acima, e se você não tem certeza do print_r ou var_dump o conteúdo da matriz retornada pela getData ().

Finalmente, se o atributo personalizado está em um dos produtos relacionados produto simples, você quer algo mais parecido

$_associatedProducts[0]->getCreatedAt();

Outras dicas

Eu tive o mesmo problema.

  1. Você deve localizar grouped.phtml app/design/frontend/base/default/template/catalog/product/view/type/grouped.phtml

  2. Obter o item, exemplo $_item[units]

  3. Adicionar uma célula na tabela e colar eco $_item['units'];

  4. Isso é tudo:)

De ver. 1.3. e em 1,4, você também deve usar $ _ item não $ _ produto , para mim isso funciona bem na tabela agrupável também.

Exemplo:

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

Existem plugins que podem resolver a sua solução realmente facilmente. Você pode encontrar o plugin aqui que leva opções de produtos e apresenta-os em uma grade: http: // www.magemechanics.com/product-grid-options.html

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top