В статическом блоке вызовите файл.phtml для определенного идентификатора продукта


У меня есть шаблон, который использует баннеры на главной странице, эти баннеры заполняются статическим блоком, как показано ниже:

<div class="col-sm-6">
    <a href="{{store url=''}}women.html">
    <img src="{{skin url='images/banner-3.jpg'}}" alt="" />
    <span class="s-desc">
        <span>
            <h1>Product ABC</h1>
            <h2>$99,99</h2>
            <span class="banners-button">Buy Now</span>
        </span>
    </span>
    </a>
</div>

Однако это статично, так как мне нужно вставить изображение и записать название продукта и так далее вручную. То, что я хотел бы получить из блока статистики, выглядит примерно так:

<div class="col-sm-6">
    {{block type="core/template" name="product_id" pid="1" template="myfolder/product_id.phtml"}}
</div>

А затем у меня есть файл .phtml, в котором я получаю идентификатор продукта из статического блока следующим образом:

<?php echo $this->getPid();?>

, А затем создайте входные данные для баннер там, чтобы я мог просто изменить pid в статическом блоке, потому что, насколько я знаю, я не могу получить изображение, цену продукта и название продукта и URL-адрес в статическом блоке или нет?

ОБНОВЛЕНИЕ

Мне также нужно было бы передать флаг в файл шаблона, чтобы различать два типа продуктов и URL-адрес

Author: Klettseb, 2016-06-02

1 answers

Ну, если вы знаете эти данные, вы определенно можете сделать что-то вроде этого:

<div class="col-sm-6">
    {{block type="core/template" name="product_id" pid="1" pimage="imageurl" template="myfolder/product_id.phtml"}}
</div>

Затем вызовите

<?php echo $this->getPimage(); ?>

Но это было бы болезненно, и вам придется менять несколько аргументов каждый раз, когда вы используете этот блок для другого продукта.

Что вы можете сделать, так это получить эти данные непосредственно в вашем шаблоне, используя pid:

Либо загрузив продукт (не рекомендуется, загрузка всего продукта для получения всего нескольких атрибутов очень плоха в условия выполнения):

$_product = Mage::getModel('catalog/product')->load($this->getPid());
$_productImage = Mage::helper('catalog/image')->init($_product, 'image');
$_productName = $_product->getName();
$_productPrice = $_product->getPrice();

Или с использованием коллекции (больше кода, но намного лучше с точки зрения производительности):

$_collection = Mage::getResourceModel('catalog/product_collection')
    ->addAttributeToSelect('name')
    ->addAttributeToSelect('price')
    ->joinAttribute('image', 'catalog_product/image', 'entity_id', null, 'left')
    ->addAttributeToFilter('entity_id', $this->getPid())
    ->setPageSize(1);

if ($_collection->getSize()) {
    $_product = $_collection->getFirstItem();
    $_productImage = Mage::helper('catalog/image')->init($_product, 'image');
    $_productName = $_product->getName();
    $_productPrice = $_product->getPrice();
}
 1
Author: Raphael at Digital Pianism, 2016-06-02 13:24:41