В статическом блоке вызовите файл.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-адрес
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();
}