代码之家  ›  专栏  ›  技术社区  ›  dimabagow

在新网格中获取产品属性值。phtml magento

  •  1
  • dimabagow  · 技术社区  · 7 年前

    我在新网格中获取属性值时遇到问题。phtml。如果我这样做:

    <?php $_product = $block->getProduct()
    echo $_product->getData('attr_name') ?>
    

    页面生成到这个地方,之后只是空白页面。

    这是新网格中的位置。phtml:

    <div class="product-img-block">
    <a href="<?php /* @escapeNotVerified */ echo $block->getProductUrl($_item) ?>" class="product-item-photo">
    <?php echo $block->getImage($_item, $image)->toHtml(); ?>
    
    /* my code: */
    <?php $_product = $block->getProduct() ?>
    <img src="<?php echo $_product->getData('attr_name') ?>" />
    </a>
    

    它是custom_home的代码。xml

    <container name="header.container" as="header_container" label="Page Header Container"  htmlTag="header" htmlClass="page-header" before="main.content"/>
    <block class="Magento\Framework\View\Element\Template" name="test_file" template="Magento_Theme::html/front-slider.phtml" before="main.content"/>
    
    <container name="main.content" htmlTag="main" htmlId="maincontent" htmlClass="page-main">
    <container name="columns.top" label="Before Main Columns"/>
    
    <container name="columns" htmlTag="div" htmlClass="columns">
                    <container name="main" label="Main Content Container" htmlTag="div" htmlClass="column main"/>
                </container>
    </container>
    

    在前滑块中。phtml我得到了新的_网格。phtml代码:

    <?php echo $this->getLayout()->createBlock("Magento\Catalog\Block\Product\Widget\NewWidget")->setDisplayType("all_products")->setProductsCount("6")->setTemplate("product/widget/new/content/new_grid.phtml")->toHtml(); ?>
    

    1例外情况:

    异常0(Magento\Framework\Exception\LocalizedException):区号已设置 0/chroot/home/host/domain。com/html/app/design/frontend/central/central-theme/Magento_Catalog/templates/product/widget/new/content/new_grid。phtml(52):Magento\Framework\App\State->setAreaCode(“前端”) 1/chroot/home/host/domain。com/html/vendor/magento/framework/View/TemplateEngine/Php。php(59):包括('/chroot/home/au…') 2/chroot/home/host/domain。com/html/vendor/magento/framework/View/Element/Template。php(255):Magento\Framework\View\TemplateEngine\php->渲染(对象(Magento\Catalog\Block\Product\Widget\NewWidget\Interceptor),“/chroot/home/au…”,阵列) 3/chroot/home/host/domain。com/html/var/generation/Magento/Catalog/Block/Product/Widget/NewWidget/Interceptor。php(518):Magento\Framework\View\Element\Template->fetchView('/chroot/home/au…') 4/chroot/home/host/domain。com/html/vendor/magento/framework/View/Element/Template。php(279):Magento\Catalog\Block\Product\Widget\NewWidget\Interceptor->fetchView('/chroot/home/au…') 5/chroot/home/host/domain。com/html/vendor/magento/framework/View/Element/AbstractBlock。php(659):Magento\Framework\View\Element\Template->_toHtml() 6/chroot/home/host/domain。com/html/var/generation/Magento/Catalog/Block/Product/Widget/NewWidget/Interceptor。php(830):Magento\Framework\View\Element\AbstractBlock->toHtml() 7/chroot/home/host/domain。com/html/app/design/frontend/central/central-theme/Magento_-theme/templates/html/front-slider。phtml(81):Magento\Catalog\Block\Product\Widget\NewWidget\Interceptor->toHtml() 8/chroot/home/host/domain。com/html/vendor/magento/framework/View/TemplateEngine/Php。php(59):包括('/chroot/home/au…') 10/chroot/home/host/domain。com/html/vendor/magento/framework/View/Element/Template。php(279):Magento\Framework\View\Element\Template->fetchView('/chroot/home/au…') 11/chroot/home/host/domain。com/html/vendor/magento/framework/View/Element/AbstractBlock。php(659):Magento\Framework\View\Element\Template->_toHtml() 12/chroot/home/host/domain。com/html/vendor/magento/framework/View/Layout。php(542):Magento\Framework\View\Element\AbstractBlock->toHtml() 13/chroot/home/host/domain。com/html/vendor/magento/framework/View/Layout。php(518):Magento\Framework\View\Layout->_renderBlock('test_file') 14/chroot/home/host/domain。com/html/var/generation/Magento/Framework/View/Layout/Interceptor。php(206):Magento\Framework\View\Layout->renderNonCachedElement('test\u file') 15/chroot/home/host/domain。com/html/vendor/magento/framework/View/Layout。php(472):Magento\Framework\View\Layout\Interceptor->renderNonCachedElement('test\u file') 16/chroot/home/host/domain。com/html/var/generation/Magento/Framework/View/Layout/Interceptor。php(193):Magento\Framework\View\Layout->渲染('test_file',true) 17/chroot/home/host/domain。com/html/vendor/magento/framework/View/Layout。php(569):Magento\Framework\View\Layout\Interceptor->渲染('test_file') 18/chroot/home/host/domain。com/html/vendor/magento/framework/View/Layout。php(520):Magento\Framework\View\Layout->_renderContainer('页面包装器') 19/chroot/home/host/domain。com/html/var/generation/Magento/Framework/View/Layout/Interceptor。php(206):Magento\Framework\View\Layout->renderNonCachedElement('page.wrapper') 20/chroot/home/host/domain。com/html/vendor/magento/framework/View/Layout。php(472):Magento\Framework\View\Layout\Interceptor->renderNonCachedElement('page.wrapper') 21/chroot/home/host/domain。com/html/var/generation/Magento/Framework/View/Layout/Interceptor。php(193):Magento\Framework\View\Layout->渲染('page.wrapper',true) 22/chroot/home/host/domain。com/html/vendor/magento/framework/View/Layout。php(569):Magento\Framework\View\Layout\Interceptor->渲染('page.wrapper') 23/chroot/home/host/domain。com/html/vendor/magento/framework/View/Layout。php(520):Magento\Framework\View\Layout->_renderContainer('根') 24/chroot/home/host/domain。com/html/var/generation/Magento/Framework/View/Layout/Interceptor。php(206):Magento\Framework\View\Layout->renderNonCachedElement('根') 26/chroot/home/host/domain。com/html/var/generation/Magento/Framework/View/Layout/Interceptor。php(193):Magento\Framework\View\Layout->渲染('root',true) 27/chroot/home/host/domain。com/html/vendor/magento/framework/View/Layout。php(938):Magento\Framework\View\Layout\Interceptor->渲染(“根”) 29/chroot/home/host/domain。com/html/var/generation/Magento/Framework/View/Layout/Interceptor。php(494):Magento\Framework\View\Layout\Interceptor->___callPlugins('getOutput',Array,Array) 31/chroot/home/host/domain。com/html/vendor/magento/framework/View/Result/Layout。php(164):Magento\Framework\View\Result\Page->渲染(对象(Magento\Framework\App\Response\Http\Interceptor)) 32/chroot/home/host/domain。com/html/vendor/magento/framework/Interception/Interceptor。php(74):Magento\Framework\View\Result\Layout->renderResult(对象(Magento\Framework\App\Response\Http\Interceptor)) 33/chroot/home/host/domain。com/html/vendor/magento/framework/Interception/Chain/Chain。php(70):Magento\Framework\View\Result\Page\Interceptor->___callParent('renderResult',数组) 34/chroot/home/host/domain。com/html/vendor/magento/framework/Interception/Chain/Chain。php(63):Magento\Framework\Interception\Chain\Chain->invokeNext('Magento\Framewo…','renderResult',对象(Magento\Framework\View\Result\Page\Interceptor),数组,'Result varnish-…') 35/chroot/home/host/domain。com/html/vendor/magento/module-page-cache/Model/Controller/Result/VarnishPlugin。php(74):Magento\Framework\Interception\Chain\Chain->Magento\Framework\Interception\Chain{closure}(对象(Magento\Framework\App\Response\Http\Interceptor)) 36/chroot/home/host/domain。com/html/vendor/magento/framework/Interception/Chain/Chain。php(67):Magento\PageCache\Model\Controller\Result\VarnishPlugin->aroundRenderResult(对象(Magento\Framework\View\Result\Page\Interceptor)、对象(Closure)、对象(Magento\Framework\App\Response\Http\Interceptor)) 38/chroot/home/host/domain。com/html/vendor/magento/module-page-cache/Model/Controller/Result/BuiltinPlugin。php(67):Magento\Framework\View\Result\Page\Interceptor->Magento\Framework\Interception{closure}(对象(Magento\Framework\App\Response\Http\Interceptor)) 39/chroot/home/host/domain。com/html/vendor/magento/framework/Interception/Interceptor。php(142):Magento\PageCache\Model\Controller\Result\BuiltinPlugin->aroundRenderResult(对象(Magento\Framework\View\Result\Page\Interceptor)、对象(Closure)、对象(Magento\Framework\App\Response\Http\Interceptor)) 40/chroot/home/host/domain。com/html/var/generation/Magento/Framework/View/Result/Page/Interceptor。php(130):Magento\Framework\View\Result\Page\Interceptor->___callPlugins('renderResult',Array,Array) 41/chroot/home/host/domain。com/html/vendor/magento/framework/App/Http。php(139):Magento\Framework\View\Result\Page\Interceptor->renderResult(对象(Magento\Framework\App\Response\Http\Interceptor)) 42/chroot/home/host/domain。com/html/vendor/magento/framework/App/Bootstrap。php(258):Magento\Framework\App\Http->启动() 43/chroot/home/host/domain。com/html/index。php(39):Magento\Framework\App\Bootstrap->运行(对象(Magento\Framework\App\Http)) 44{main}

    关于此代码:

    $objectManager =  \Magento\Framework\App\ObjectManager::getInstance();        
    $appState = $objectManager->get('\Magento\Framework\App\State');
    $appState->setAreaCode('frontend');
    $registry = $objectManager->get('\Magento\Framework\Registry');
    $_product= $registry->registry('current_product');
    $attribute_code = 'attr_name';
    echo  $_product->getResource()->getAttribute($attribute_code)-
    >getFrontend()->getValue($_product);
    
    6 回复  |  直到 7 年前
        1
  •  1
  •   Александр Acabar    6 年前

    尝试将此代码自适应到您的代码

        @var $block \Magento\Catalog\Block\Product\Widget\NewWidget 
        if ($exist = ($block->getProductCollection() 
        && $block->getProductCollection()->getSize())) 
        {
            $items = $block->getProductCollection()->getItems();
        }
        <?php foreach ($items as $_item): ?>
            <img src="<?php echo $_item->getData("nameofattribute") ?>" />
        <?php endforeach ?>
    

    如果您不知道属性的名称,可以使用$\u item->getData()并获取当前项的所有列表数据。

        2
  •  0
  •   Arun    7 年前
    getResource()->getAttribute($attribute\u代码)->getFrontend()->getValue($_项);
    ?&燃气轮机;
        3
  •  0
  •   Parth Trivedi    7 年前
    $_product = $block->getProduct();
    print_r($_product->getData);
    

    首先,若你们得到了合适的数组,你们需要检查产品数据是否可用,然后你们只需要从下面的代码中调用产品属性。

    echo  $_product->getResource()->getAttribute('ATTRIBUTE_CODE')->getFrontend()->getValue($_product);
    
        4
  •  0
  •   Parth Trivedi    7 年前
    $productModel = Mage::getModel('catalog/product');
    $_product = $productModel->load(42); // Add your product ID
    $attribute_code = 'attr_name'; // Add your attribute name
    echo  $_product->getResource()->getAttribute($attribute_code)->getFrontend()->getValue($_product);
    

    根据您上面的评论,请尝试这样做,正如我上面提到的那样,只需更改产品id和属性代码

        5
  •  0
  •   TBI    7 年前

    首先,请验证您是否已在适当的属性集中添加了自定义属性,并将该属性集分配给要为其添加此代码的产品,然后最后使用以下代码获取其值。

    $objectManager =  \Magento\Framework\App\ObjectManager::getInstance();        
    $appState = $objectManager->get('\Magento\Framework\App\State');
    //$appState->setAreaCode('frontend');
    $registry = $objectManager->get('\Magento\Framework\Registry');
    $_product= $registry->registry('current_product');
    $attribute_code = 'attr_name';
    echo  $_product->getResource()->getAttribute($attribute_code)->getFrontend()->getValue($_product);
    

        6
  •  0
  •   Arun    7 年前