Hi everyone can anyone help me to fix this problem

drishtiprak
Lv.5
Bronze Member
Iron Member
Joined
Jan 3, 2024
Messages
111
Reaction score
73
Credits
$10
Error filtering template: Warning: Invalid argument supplied for foreach() in /home/user/public_html/app/design/frontend/Sm/themecore/Magento_Catalog/templates/product/image_with_borders.phtml on line 36


the line 36

Code:
 <?php foreach ($block->getCustomAttributes() as $name => $value): ?>


and all code in this page image_with_borders.phtml

Code:
<?php
/**
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */
?>
<?php
/** @var $block \Magento\Catalog\Block\Product\Image */
/** @var $escaper \Magento\Framework\Escaper */
/** @var \Magento\Framework\View\Helper\SecureHtmlRenderer $secureRenderer */
/**
 * Enable lazy loading for images with borders and if variable enable_lazy_loading_for_images_without_borders
 * is enabled in view.xml. Otherwise small size images without borders may be distorted. So max-width is used for them
 * to prevent stretching and lazy loading does not work.
 */
$borders                         = (bool)$block->getVar('product_image_white_borders', 'Magento_Catalog');
$enableLazyLoadingWithoutBorders = (bool)$block->getVar(
    'enable_lazy_loading_for_images_without_borders',
    'Magento_Catalog'
);
$width                           = (int)$block->getWidth();
$paddingBottom                   = $block->getRatio() * 100;
$_config                         = $this->helper('Sm\Themecore\Helper\Data');
$enableLadyLoading               = $_config->getAdvanced('lazyload_group/enable_ladyloading');
$mediaSrc                        = $_config->getMediaUrl();
if ($enableLadyLoading) {
    $imgClass = 'lazyload';
} else {
    $imgClass = '';
}
?>
<span class="product-image-container product-image-container-<?= /* @noEscape */
$block->getProductId() ?>" style="width: <?php echo $width . "px"; ?>">
    <span class="product-image-wrapper">
        <img class="<?= $escaper->escapeHtmlAttr($block->getClass()) ?> <?php echo $imgClass; ?>"
            <?php foreach ($block->getCustomAttributes() as $name => $value): ?>
                <?= $escaper->escapeHtmlAttr($name) ?>="<?= $escaper->escapeHtmlAttr($value) ?>"
            <?php endforeach; ?>
        <?php if ($enableLadyLoading) { ?>
            src="<?php echo $mediaSrc . 'lazyloading/blank.png'; ?>"
            data-src="<?= $escaper->escapeUrl($block->getImageUrl()) ?>"
        <?php } else { ?>
            src="<?= $escaper->escapeUrl($block->getImageUrl()) ?>"
        <?php } ?>
            loading="lazy"
            <?php if ($borders || $enableLazyLoadingWithoutBorders): ?>
                width="<?= $escaper->escapeHtmlAttr($block->getWidth()) ?>"
                height="<?= $escaper->escapeHtmlAttr($block->getHeight()) ?>"
            <?php else: ?>
                max-width="<?= $escaper->escapeHtmlAttr($block->getWidth()) ?>"
                max-height="<?= $escaper->escapeHtmlAttr($block->getHeight()) ?>"
            <?php endif; ?>
            alt="<?= $escaper->escapeHtmlAttr($block->getLabel()) ?>"/></span>
</span>
<?php
$styles = <<<STYLE
/**
.product-image-container-{$block->getProductId()} {
    width: {$width}px;
}
*/
.product-image-container-{$block->getProductId()} span.product-image-wrapper {
    padding-bottom: {$paddingBottom}%;
}
STYLE;
//In case a script was using "style" attributes of these elements
$script = <<<SCRIPT
prodImageContainers = document.querySelectorAll(".product-image-container-{$block->getProductId()}");
/**
for (var i = 0; i < prodImageContainers.length; i++) {
    prodImageContainers[i].style.width = "{$width}px";
}
*/
prodImageContainersWrappers = document.querySelectorAll(
    ".product-image-container-{$block->getProductId()}  span.product-image-wrapper"
);
for (var i = 0; i < prodImageContainersWrappers.length; i++) {
    prodImageContainersWrappers[i].style.paddingBottom = "{$paddingBottom}%";
}
SCRIPT;
?>
<?= /* @noEscape */
$secureRenderer->renderTag('style', [], $styles, false) ?>
<?= /* @noEscape */
$secureRenderer->renderTag('script', ['type' => 'text/javascript'], $script, false) ?>
 
1.you need to check this config data .or save it at backend.
2.you can change here to first with is_array() to check this config data like
Code:
 <?php if is_array($block->getCustomAttributes()) :?>
 <?php foreach ($block->getCustomAttributes() as $name => $value): ?>
                <?= $escaper->escapeHtmlAttr($name) ?>="<?= $escaper->escapeHtmlAttr($value) ?>"
            <?php endforeach; ?>
 <?php endif; ?>
 
1.you need to check this config data .or save it at backend.
2.you can change here to first with is_array() to check this config data like
Code:
 <?php if is_array($block->getCustomAttributes()) :?>
 <?php foreach ($block->getCustomAttributes() as $name => $value): ?>
                <?= $escaper->escapeHtmlAttr($name) ?>="<?= $escaper->escapeHtmlAttr($value) ?>"
            <?php endforeach; ?>
 <?php endif; ?>
not work admin this error if i need add product to category if delete the product from category the error sloved
 
Top