Я работаю над своим первым развертыванием Magento. Создана довольно настраиваемая тема... теперь исправлены некоторые нестандартные настройки -:
Одним из моих основных типов продуктов является офисный стул, который я настроил как комплектный продукт. Для этого типа продукта доступно много вариантов (около 100 вариантов ткани, стиль подлокотников, поясничный отдел, подголовник и т. д. ), и мне нужно показать изображение для каждого из них на странице каталога/продукта/просмотра.
Поскольку это продукт в комплекте (, и я воздержусь от каких-либо дискуссий о том, был ли это правильный тип продукта -, мы ходили по кругу, обсуждая между конфигурируемым и пакетным)-каждое изделие собирается из ряда простых изделий (в качестве вариантов ). В эти простые продукты можно загружать изображения, что я и сделал. Теперь я хочу получить URL-адреса из папки мультимедиа...
После некоторой охоты -они кажутся основными элементами :
. тема/../шаблон/каталог/продукт/представление/options.phtml
<?php $_options = Mage::helper('core')->decorateArray($this->getOptions()) ?>
<dl>
<?php foreach($_options as $_option): ?>
<?php echo $this->getOptionHtml($_option) ?>
<?php endforeach; ?>
</dl>
theme/../template/bundle/catalog/product/view/type/bundle/option/select.phtml
<?php /* @var $this Mage_Bundle_Block_Catalog_Product_View_Type_Bundle_Option_Select */ ?>
<?php $_option = $this->getOption(); ?>
<?php $_selections = $_option->getSelections(); ?>
Я нашел, наконец, нашелgetSelections()
в:
class Mage_Bundle_Model_Resource_Price_Index extends Mage_Core_Model_Resource_Db_Abstract
{...
/**
* Retrieve bundle options with selections and prices by product
*
* @param int $productId
* @return array
*/
public function getSelections($productId)
{
$options = array();
$read = $this->_getReadAdapter();
$select = $read->select()
->from(
array('option_table' => $this->getTable('bundle/option')),
array('option_id', 'required', 'type')
)
->join(
array('selection_table' => $this->getTable('bundle/selection')),
'selection_table.option_id=option_table.option_id',
array('selection_id', 'product_id', 'selection_price_type',
'selection_price_value', 'selection_qty', 'selection_can_change_qty')
)
->join(
array('e' => $this->getTable('catalog/product')),
'e.entity_id=selection_table.product_id AND e.required_options=0',
array()
)
->where('option_table.parent_id=:product_id');
$query = $read->query($select, array('product_id' => $productId));
while ($row = $query->fetch()) {
if (!isset($options[$row['option_id']])) {
$options[$row['option_id']] = array(
'option_id' => $row['option_id'],
'required' => $row['required'],
'type' => $row['type'],
'selections' => array()
);
}
$options[$row['option_id']]['selections'][$row['selection_id']] = array(
'selection_id' => $row['selection_id'],
'product_id' => $row['product_id'],
'price_type' => $row['selection_price_type'],
'price_value' => $row['selection_price_value'],
'qty' => $row['selection_qty'],
'can_change_qty' => $row['selection_can_change_qty']
);
}
return $options;
}
поэтому мы возвращаем массив с selection_id
, product_id
, price_type
и т. д.... но ничего не ссылается на URL-адрес изображения для этого выбора...
Учитывая, что:
class Mage_Catalog_Helper_Product extends Mage_Core_Helper_Url
{...
public function getImageUrl($product)
{
$url = false;
if (!$product->getImage()) {
$url = Mage::getDesign()->getSkinUrl('images/no_image.jpg');
}
elseif ($attribute = $product->getResource()->getAttribute('image')) {
$url = $attribute->getFrontend()->getUrl($product);
}
return $url;
}
Я пытаюсь создать объект js со ссылками на URL-адрес изображения каждого выбора, например, в theme/../template/bundle/catalog/product/view/type/bundle/option/select.phtml
var option_set_<?php echo $_option->getId() ?> = {};
<?php foreach ($_selections as $_selection): ?>
option_set_<?php echo $_option->getId() ?>._<?php echo $_selection->getSelectionId() ?> = '<?php echo $_selection->getImageUrl(); ?>';
<?php endforeach; ?>
Но $_selection
, очевидно, напечатано неправильно, потому что оно просто возвращает меня к рисунку-заполнителю.
Если предположить, что эти параметры можно ввести как Product (или как-то получить простой продукт из выбора _id , похоже, что-то подобное может работать. Я не уверен, что именно так я хочу управлять этой функцией, но если я смогу просто получить стопку URL-адресов -, тогда я буду в деле
Как ни странно, в инете практически ничего на эту тему нет. По-видимому, никому не нужно показывать изображения для своих вариантов продукта (или, скорее, единственным решением являются платные расширения -, которые будут последним средством ).
Как я могу понять это?
Иисус отбивает чечетку Христу. Может ли маг быть сложнее?
Обновление
Получил, чтобы это работало как таковое:
<?php echo $this->helper('catalog/image')->init($_selection, 'small_image')->resize(40,40); ?>
Выбранный мной ответ также будет работать нормально, если кому-то понадобится это исправление.