Olarf!
Vou dar o papo de como personalizar esse caraaqui para colocar dados específicos!
Bom isso foi necessário porque a loja tem atributos muito relevantes para o mkt mas que não são capturados por padrão, o dramalhão é o seguinte:
O tipo da pedra é muito relevante, além disso o formato do cristal também é essencial.
Imagina assim, faz mkt de um anel (o formato) para alguém que tá buscando pedra bruta, não vai funfar bem né? então por isso vamos lá, já parando de enrolar!
A primeira treta é que os gringos do módulo só conhecem funções do tipo privado o.O
E aí lá vou eu abrir a PR e esperar ela entrar! tranquilis,aceitaram! e eu também aproveitei para fazer o módulo parar de quebrar o layout. de nada!
Mas agora com o módulo atualizado é hora de partir para os plugins o que é doce doce, não vou detalhar todos porque senão vai ter gente me criticando (e vão tbm por não detalhar), mas então pega o que quero dizer:
1º Informar quais os atributos vão estar visíveis ao catálogo:
<?xml version="1.0"?><config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Catalog:etc/catalog_attributes.xsd"> <group name="quote_item"> <attribute name="tipo_de_pedra"/> <attribute name="formato_do_cristal"/> </group> <group name="order_item"> <attribute name="tipo_de_pedra"/> <attribute name="formato_do_cristal"/> </group></config>
2º pegar esse monte de classes para fazer o plugin de fato:
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd"> <type name="Stape\Gtm\ViewModel\Category"> <plugin name="add_custom_item_data" type="O2TI\ExtendedStape\Plugin\Stape\ViewModel\CategoryPlugin" sortOrder="1" /> </type> <type name="Stape\Gtm\ViewModel\Cart"> <plugin name="add_custom_item_data" type="O2TI\ExtendedStape\Plugin\Stape\ViewModel\CartPlugin" sortOrder="1" /> </type> <type name="Stape\Gtm\ViewModel\Checkout"> <plugin name="add_custom_item_data" type="O2TI\ExtendedStape\Plugin\Stape\ViewModel\CheckoutPlugin" sortOrder="1" /> </type> <type name="Stape\Gtm\ViewModel\Product"> <plugin name="add_custom_item_data" type="O2TI\ExtendedStape\Plugin\Stape\ViewModel\ProductPlugin" sortOrder="1" /> </type> <type name="Stape\Gtm\ViewModel\Success"> <plugin name="add_custom_item_data" type="O2TI\ExtendedStape\Plugin\Stape\ViewModel\SuccessPlugin" sortOrder="1" /> </type> <preference for="Magento\Checkout\CustomerData\DefaultItem" type="O2TI\ExtendedStape\Plugin\Magento\Checkout\CustomerData\DefaultItemPlugin"/> <type name="O2TI\ExtendedStape\Plugin\Magento\Checkout\CustomerData\DefaultItemPlugin"> <arguments> <argument name="attributeRepository" xsi:type="object">Magento\Catalog\Api\ProductAttributeRepositoryInterface</argument> </arguments> </type></config>
3º E então lá vai um around nesse trem:
<?phpnamespace O2TI\ExtendedStape\Plugin\Stape\ViewModel;use Stape\Gtm\ViewModel\Cart as ViewModelCart;use O2TI\ExtendedStape\Helper\Data;class CartPlugin{ /** * @var Data */ protected $helper; /** * Define class dependencies * * @param Data $helper */ public function __construct( Data $helper ) { $this->helper = $helper; } /** * Plugin method to enhance prepareItems functionality * * @param ViewModelCart $subject * @param callable $proceed * @param \Magento\Quote\Model\Quote $quote * @return array */ public function aroundPrepareItems(ViewModelCart $subject, callable $proceed, \Magento\Quote\Model\Quote $quote) { $items = $proceed($quote); $itemData = []; /** @var \Magento\Quote\Model\Quote\Item $item */ foreach ($quote->getAllVisibleItems() as $item) { $tipoPedraValue = $item->getProduct()->getTipoDePedra(); $tipoPedraLabel = $this->helper->getAttributeOptions('tipo_de_pedra', $tipoPedraValue); $formatoValue = $item->getProduct()->getFormatoDoCristal(); $formatoLabel = $this->helper->getAttributeOptions('formato_do_cristal', $formatoValue); $itemData[$item->getProductId()] = [ 'item_tipo_de_pedra' => $tipoPedraLabel, 'item_formato_do_cristal' => $formatoLabel, ]; } foreach ($items as $key => $item) { $itemId = $item['item_id']; if (isset($itemData[$itemId])) { $items[$key] = array_merge($item, $itemData[$itemId]); } } return $items; }}
Detalhando:
- pega a saída original com os outros detalhes dos itens
- faz um laço para pegar os nossos atributos especiais e coloca no array
- agora é só achar o item do original e pronto!
prontinho?
Sim, agora o amadinho do cara de mkt tem os dados necessários para ser um pokémon!
Página de categoria:
Página de sucesso:
e tem outras mas eu cansei, adeus!
Top comments(0)
For further actions, you may consider blocking this person and/orreporting abuse