1

In Magento2 I need to show the "New Products" section in the homepage. Already did that, from admin I've created a widget and assign to it New Products Grid Template, as you can see down here.

The only two options were this one and New Products List Template.

enter image description here

Now I can see correctly the block in the homepage as I wished, but the template is from vendor/magento/module-catalog/view/frontend/templates/product/widget/new/content/new_grid.phtml.

<?php
/**
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */
?>
<?php
/**
 * Template for displaying new products widget
 *
 * @var $block \Magento\Catalog\Block\Product\Widget\NewWidget
 */

// phpcs:disable Magento2.Files.LineLength.MaxExceeded
// phpcs:disable Magento2.Templates.ThisInTemplate.FoundThis

if ($exist = ($block->getProductCollection() && $block->getProductCollection()->getSize())) {
    $type = 'widget-new-grid';

    $mode = 'grid';

    $image = 'new_products_content_widget_grid';
    $title = __('New Products');
    $items = $block->getProductCollection()->getItems();

    $showWishlist = true;
    $showCompare = true;
    $showCart = true;
    $templateType = \Magento\Catalog\Block\Product\ReviewRendererInterface::DEFAULT_VIEW;
    $description = false;
}
?>

<?php if ($exist) :?>
    <div class="block widget block-new-products <?= /* @noEscape */ $mode ?>">
        <div class="block-title">
            <strong role="heading" aria-level="2"><?= $block->escapeHtml($title) ?></strong>
        </div>
        <div class="block-content">
            <?= /* @noEscape */ '<!-- ' . $image . '-->' ?>
            <div class="products-<?= /* @noEscape */ $mode ?> <?= /* @noEscape */ $mode ?>">
                <ol class="product-items <?= /* @noEscape */ $type ?>">
                    <?php foreach ($items as $_item) :?>
                    <li class="product-item">
                        <div class="product-item-info">
                            <a href="<?= $block->escapeUrl($block->getProductUrl($_item)) ?>"
                               class="product-item-photo">
                                <?= $block->getImage($_item, $image)->toHtml() ?>
                            </a>
                            <div class="product-item-details">
                                <strong class="product-item-name">
                                    <a title="<?= $block->escapeHtml($_item->getName()) ?>"
                                       href="<?= $block->escapeUrl($block->getProductUrl($_item)) ?>"
                                       class="product-item-link">
                                        <?= $block->escapeHtml($_item->getName()) ?>
                                    </a>
                                </strong>
                                <?= $block->getProductPriceHtml($_item, $type); ?>

                                <?php if ($templateType) :?>
                                    <?= $block->getReviewsSummaryHtml($_item, $templateType) ?>
                                <?php endif; ?>

                                <?php if ($showWishlist || $showCompare || $showCart) :?>
                                    <div class="product-item-actions">
                                        <?php if ($showCart) :?>
                                            <div class="actions-primary">
                                                <?php if ($_item->isSaleable()) :?>
                                                    <?php if (!$_item->getTypeInstance()->isPossibleBuyFromList($_item)) :?>
                                                        <button class="action tocart primary"
                                                                data-mage-init='{"redirectUrl":{"url":"<?= $block->escapeUrl($block->getAddToCartUrl($_item)) ?>"}}'
                                                                type="button"
                                                                title="<?= $block->escapeHtmlAttr(__('Add to Cart')) ?>">
                                                            <span><?= $block->escapeHtml(__('Add to Cart')) ?></span>
                                                        </button>
                                                    <?php else :?>
                                                        <?php
                                                            $postDataHelper = $this->helper(Magento\Framework\Data\Helper\PostHelper::class);
                                                            $postData = $postDataHelper->getPostData(
                                                                $block->escapeUrl($block->getAddToCartUrl($_item)),
                                                                ['product' => (int) $_item->getEntityId()]
                                                            )
                                                        ?>
                                                        <button class="action tocart primary"
                                                                data-post='<?= /* @noEscape */ $postData ?>'
                                                                type="button"
                                                                title="<?= $block->escapeHtmlAttr(__('Add to Cart')) ?>">
                                                            <span><?= $block->escapeHtml(__('Add to Cart')) ?></span>
                                                        </button>
                                                    <?php endif; ?>
                                                <?php else :?>
                                                    <?php if ($_item->isAvailable()) :?>
                                                        <div class="stock available">
                                                            <span><?= $block->escapeHtml(__('In stock')) ?></span>
                                                        </div>
                                                    <?php else :?>
                                                        <div class="stock unavailable">
                                                            <span><?= $block->escapeHtml(__('Out of stock')) ?></span>
                                                        </div>
                                                    <?php endif; ?>
                                                <?php endif; ?>
                                            </div>
                                        <?php endif; ?>
                                        <?php if ($showWishlist || $showCompare) :?>
                                            <div class="actions-secondary" data-role="add-to-links">
                                                <?php if ($this->helper(Magento\Wishlist\Helper\Data::class)->isAllow() && $showWishlist) :?>
                                                    <a href="#"
                                                       data-post='<?= /* @noEscape */ $block->getAddToWishlistParams($_item) ?>'
                                                       class="action towishlist"
                                                       data-action="add-to-wishlist"
                                                       title="<?= $block->escapeHtmlAttr(__('Add to Wish List')) ?>">
                                                        <span><?= $block->escapeHtml(__('Add to Wish List')) ?></span>
                                                    </a>
                                                <?php endif; ?>
                                                <?php if ($block->getAddToCompareUrl() && $showCompare) :?>
                                                    <?php $compareHelper = $this->helper(Magento\Catalog\Helper\Product\Compare::class);?>
                                                    <a href="#" class="action tocompare"
                                                       data-post='<?= /* @noEscape */ $compareHelper->getPostDataParams($_item) ?>'
                                                       title="<?= $block->escapeHtmlAttr(__('Add to Compare')) ?>">
                                                        <span><?= $block->escapeHtml(__('Add to Compare')) ?></span>
                                                    </a>
                                                <?php endif; ?>
                                            </div>
                                        <?php endif; ?>
                                    </div>
                                <?php endif; ?>
                            </div>
                        </div>
                     </li>
                    <?php endforeach ?>
                </ol>
            </div>
            <?= $block->getPagerHtml() ?>
        </div>
    </div>
<?php endif;?>

Since I'm working on a new custom Hyva Theme I need that same template but from hyva-themes folder inside vendor.

The problem is, in that same module the path is not the same and new_grid.phtml is missing.

Or there's a way to convert this new_grid.phtml to hyva standards?

Thanks for helping guys!

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Browse other questions tagged or ask your own question.