Atributos apresentação personalizada na tabela agrupada produto - Magento
-
05-07-2019 - |
Pergunta
Eu preciso encontrar uma maneira de mostrar o valor de um atributo personalizado no lugar do "Nome do produto" mostrado na imagem abaixo.
(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.
Solução
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.
-
Você deve localizar grouped.phtml
app/design/frontend/base/default/template/catalog/product/view/type/grouped.phtml
-
Obter o item, exemplo
$_item[units]
-
Adicionar uma célula na tabela e colar eco
$_item['units'];
-
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