Как назвать изображение в представлении товара magento? - PullRequest
2 голосов
/ 18 декабря 2011

Я хочу вызвать изображение, которое загружается в большую область просмотра на странице продукта magento.

На странице просмотра продукта при нажатии появляется больше изображений, оно показывает изображение в увеличенном виде, а не во всплывающем окне по умолчанию.Я хочу назвать полноразмерное изображение любого изображения, загруженного в большую область просмотра.Может кто-нибудь сказать мне, как мне это сделать?

Я провел поиск и нашел

echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(163, 100);

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

Ответы [ 4 ]

2 голосов
/ 18 декабря 2011

попробуйте этот код

$this->helper('catalog/image')->init($_product, 'image')

, и вы получите изображение на странице просмотра продукта.

1 голос
/ 19 декабря 2011

хорошо, я думаю, это может спасти твою проблему.Это чертовски просто

Допустим, ваша основная область изображения <img id="main-image" src="main-image.jpg" />

 <?php foreach ($this->getGalleryImages() as $_image): ?>
<li>
    <a class="grouped_elements" href="<?php echo $this->helper('catalog/image')->init($this->getProduct(), 'image', $_image->getFile())->constrainOnly(TRUE)->keepAspectRatio(TRUE)->keepFrame(FALSE)->resize(260,null) ?>"
       title="<?php echo $this->htmlEscape($_image->getLabel()) ?>" rel="group1">

        <img src="<?php echo $this->helper('catalog/image')->init($this->getProduct(), 'thumbnail', $_image->getFile())->constrainOnly(TRUE)->keepAspectRatio(TRUE)->keepFrame(FALSE)->resize(70,null) ?>"
             width="70"  alt="<?php echo $this->htmlEscape($_image->getLabel()) ?>" />
    </a>
</li>
<script type="text/javascript">
//<![CDATA[
    jQuery("a.grouped_elements").click(function(){

           $('#main-image').attr('src', this.attr('href'));

    });

//]]>
</script>

Надеюсь, это должно помочь ...

0 голосов
/ 19 декабря 2011

Я получил желаемый результат, добавив кнопку на media.phtml

<a class="fullscreen" href="#image" onclick="document.getElementById('image').style.width='100%'; return false; " > <img  src="<?php echo $this->getSkinUrl('images/zoom_full.jpg') ?>" alt="<?php echo $this->__('Full Screen') ?>" title="<?php echo $this->__('Full Screen') ?>" /></a>

<script type="text/javascript">  j(document).ready(function() {
j(".fullscreen").fancybox({ 'transitionIn': 'fade', 'transitionOut':
'none', 'overlayColor': '#fff', 'overlayOpacity':1,
'hideOnOverlayClick':false }); </script>
0 голосов
/ 18 декабря 2011

Я думаю, вы должны проверить файл

приложение \ дизайн \ оболочка \ базы \ умолчанию \ шаблон \ каталог \ продукт \ вид

& объявлено как в

<block type="catalog/product_view_media" name="product.info.media" as="media" template="catalog/product/view/media.phtml"/>

этот файл дает вам основное изображение, а также изображения галереи. Конечно, вы получите только включенные изображения. Итак, что я понимаю из последующих комментариев. Вам нужны эти изображения в необычной коробке. Там должно быть что-то слайд-шоу, прежде чем следующий и т. д. правильно ??

хорошо, вот что ты можешь сделать. Создайте новый файл под

app \ design \ frontend \ base \ default \ template \ catalog \ product \ view \ fancy.media.phtml

(или вы можете использовать вашу папку тем вместо base / default)

в ур catalog.xml добавить этот блок в

<block type="catalog/product_view_media" name="product.info.media" as="media" template="catalog/product/view/media.phtml"/>

<block type="catalog/product_view_media" name="fancy.media" template="catalog/product/view/fancy.media.phtml"/>

теперь в media.phtml вы получите все изображения и URL-адреса. код fancybox и передать URL-адрес изображения к нему. & и да, не забудьте вызвать этот блок на странице вашего продукта, т.е. приложение \ дизайн \ оболочка \ базы \ умолчанию \ шаблон \ каталог \ продукт \ view.phtml

по echo $this->getChilHtml('fancy.media')

Я надеюсь, что это должно решить проблему

ОБНОВЛЕНИЕ:

попробуйте это в fancy.media.phtml:

 <?php foreach ($this->getGalleryImages() as $_image): ?>
    <li>
        <a class="grouped_elements" href="<?php echo $this->helper('catalog/image')->init($this->getProduct(), 'image', $_image->getFile())->constrainOnly(TRUE)->keepAspectRatio(TRUE)->keepFrame(FALSE)->resize(260,null) ?>"
           title="<?php echo $this->htmlEscape($_image->getLabel()) ?>" rel="group1">

            <img src="<?php echo $this->helper('catalog/image')->init($this->getProduct(), 'thumbnail', $_image->getFile())->constrainOnly(TRUE)->keepAspectRatio(TRUE)->keepFrame(FALSE)->resize(70,null) ?>"
                 width="70"  alt="<?php echo $this->htmlEscape($_image->getLabel()) ?>" />
        </a>
    </li>
<?php   endforeach;     ?>

<script type="text/javascript">
//<![CDATA[
    $("a.grouped_elements").fancybox();

//]]>
</script>

Пожалуйста, обратитесь к документации fancybox, fancybox, как

Я думаю, что ваше требование заключается в том, что если кто-то нажмет на страницу «Больше видов» на странице продукта, она должна открыться в fancybox. Правильно?? так что вы можете поместить этот код в media.phtml также. нет необходимости создавать новый файл и не нужно редактировать catalog.xml.

Если вы заставите это работать, не стесняйтесь принять мой ответ.

...