ЕСЛИ (ThisProduct В ЛЮБОМ ConfigurableProduct) перенаправление (ThatConfigurableProduct) - PullRequest
0 голосов
/ 04 мая 2011

Это почти то, что я пытаюсь сделать.Все мои простые продукты являются частью, по большей части, одного конфигурируемого продукта, так что проблем там нет.

Это необходимо, потому что я хочу, чтобы мои простые товары (подушка в дизайне X, цвет Y) отображались в поиске, каталоге, но мне нужно, чтобы пользователь знал, что дизайн существует в разных цветах, как только они нажимают (вероятно, потому чтоим нравится дизайн X, но они не обязательно продаются в цвете Y).Кроме того, моя реализация Color Swatches (расширение) заставляет мои простые продукты (которые являются частью конфигурируемых) вести себя смешно при прямом доступе.

Спасибо за любую помощь.

Редактировать:

Вот код, который я использовал в итоге.Я не очень хороший кодер, поэтому обязательно улучшите его перед развертыванием ... (~ В app / design / frontend / blah / blah / template / catalog / product / view.media.phtml)

<?php
/* THIS BLOCK ADDED BY __ ON 5/5/2011 */

$thisProductId = $_product['entity_id'];

$thisProductParentId = Mage::getResourceSingleton('catalog/product_type_configurable')->getParentIdsByChild($thisProductId);

if (!$thisProductParentId)
{
?>
<div class="more-views">
    <h2><?php echo $this->__('More Views') ?></h2>
    <ul>
    <?php foreach ($this->getGalleryImages() as $_image): ?>
        <li>
            <a href="#" onclick="popWin('<?php echo $this->getGalleryUrl($_image) ?>', 'gallery', 'width=300,height=300,left=0,top=0,location=no,status=yes,scrollbars=yes,resizable=yes'); return false;" title="<?php echo $this->htmlEscape($_image->getLabel()) ?>"><img src="<?php echo $this->helper('catalog/image')->init($this->getProduct(), 'thumbnail', $_image->getFile())->resize(56); ?>" width="56" height="56" alt="<?php echo $this->htmlEscape($_image->getLabel()) ?>" /></a>
        </li>
    <?php endforeach; ?>
    </ul>
</div>
<?php 
}
else if ($thisProductParentId)
{
    $_product_temp = Mage::getModel('catalog/product')->load($thisProductParentId);

        if($_product_temp->getStatus()==1)
        {       
            $_categories = $_product_temp->getCategoryIds();
            $_category = Mage::getModel('catalog/category')->load($_categories[0]);
            $url = $this->getUrl($_category->getUrlPath()).$_product_temp->getUrlPath();
            echo '<h1><a style="color:red;" href="'.$url.'">Click here to view this pillow design in different colors and styles.</a></h1>';
            // redirect disabled because it won't preload the new color on the configurable image page anyway. (haven't attempted)
            /* echo '<script type="text/javascript">
                <!--
                    window.location = "'.$url.'"
                //-->
            </script>'; */
        }
}
// -- end --
?>

Перезапись бита галереи «Дополнительные изображения» - это индивидуальная настройка проекта, так что имейте это в виду.

Ответы [ 2 ]

1 голос
/ 04 мая 2011

Я пошел и написал кучу кода, чтобы попытаться сделать это, и забыл, что это уже простой вариант использования, и Magento написал его для вас:

Mage::getResourceSingleton('catalog/product_type_configurable')
        ->getParentIdsByChild($childId);

Этот фрагмент должен дать вамвсе родительские продукты для ребенка.Если есть, перенаправьте на него.В противном случае визуализируйте страницу в соответствии с запросом.

1 голос
/ 04 мая 2011

у вас есть две опции:

  1. добавить каталог форм правил перезаписи> управление перезаписью URL
  2. запрограммировать расширение, которое выполняет необходимую проверку базы данных продукта и выполняет перенаправление
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...