1

Тема: Нужен подобный функционал (выбор цвета и размера)

http://img9.tempfile.ru/13254/231a0e237d/456b90018e5b216fafa9116a.png
В одном из реализованных сайтов командой readyscript (если не ошибаюсь) http://nefertiti-gsfr.ru/product/plat-e-p-223-1-30198/ увидел возможность выбора цвета и размера одежды. Думаю, многим было бы интересно узнать как реализовать подобное? Если это штука сложная, то сколько стоила бы разработка подобного функционала?

Re: Нужен подобный функционал (выбор цвета и размера)

Я описывал подобное, вот здесь. Скрипт отвечающий за выборку при желании можно выкачать с сайта нефертити.

Re: Нужен подобный функционал (выбор цвета и размера)

Стоимость примерно 3000 руб. под вашу тему.

4 Отредактировано Александр (16.09.2014 15:20:11)

Re: Нужен подобный функционал (выбор цвета и размера)

Кстати вот код страницы товара нефертити

{addcss file="jquery.jqzoom.css"}
{addjs file="jquery.changeoffer.js"}
{addjs file="jquery.jqzoom-core.js"}
{addjs file="jquery.lightbox.min.js" basepath="common"}
{addcss file="common/jquery.lightbox.packed.css" basepath="common"}
{modulegetvars name="\Colors\Controller\BlockValues" var="colors"}
{assign var=properties value=$product->fillProperty()}

{if $product->isOffersUse()}
    {addjs file="product_offer.js"}
{/if}
    
    <div class="separator-line mb10 product-right-top-margin">
        <span class="menu_gradient pink"></span>
        <span class="title">{$product.title}</span>
    </div> 
    
    <div class="product productItem" data-id="{$product.id}">      
        <div class="photoblock">
            <div class="bigpicture">
                <a href="{$product->getMainImage(1000, 1111, 'xy')}" id="big_pic" rel="gallery"><img src="{$product->getMainImage(408, 450, 'xy')}">
                    <div class="zoom"></div>
                    {if $product->inDir('newest')}<div class="newest"></div>{/if}
                </a>
            </div>
            {assign var=images value=$product->getImages()}
            {if count($images)>1}
            <div class="pictures">   
                {foreach from=$images item=img}
                <a href="{$img->getUrl(1000, 1111, 'xy')}" rel="{ gallery: 'gallery', smallimage: '{$img->getUrl(347,382, 'xy')}', largeimage: '{$img->getUrl(1000, 1111, 'xy')}'}"><img src="{$img->getUrl(102,111, 'axy')}"></a>
                {/foreach}
            </div>
            {/if}
            <div style="display:none" id="gallery-list">
                {foreach from=$images item=img}
                    <a href="{$img->getUrl(800,881, 'xy')}" data-link="{$img->getUrl(1000, 1111, 'xy')}"></a>
                {/foreach}                
            </div>
        </div>        
        
        <div class="info">
            <div class="nomarg">
                {*<span class="title">{$product.title}</span><br>*}
                <span class="brand">{$product->getPropertyValueByTitle('Бренд')}</span><br>
            </div>
            <div class="title">
                {$product.title}
            </div>
            <div class="barcode">
                <b>Артикул:</b> {$product.barcode}
            </div>
            <div class="">
                <span class="rating">
                    <b>Рейтинг:</b> <div class="stars_na" title="Средняя оценка: {$product->getRatingBall()}">
                         <div style="width:{$product->getRatingPercent()}%"></div>
                    </div>
                </span>
                <a href="#feedback" class="feedback-link">Отзывы покупателей</a>
            </div>
            
            
            <div class="description">
                {$product.description}
            </div>
            
                                   
            <div class="colors propsContainer">
                    {if $product->isOffersUse()}
                            <div class="allHiddenOffers" data-info='{literal}{"offers":["Цвет","Размер"],"names":["color","size"]}{/literal}'>
                            {if count($product.offers.items)>0}
                             
                                {foreach from=$product.offers.items key=key item=offer name=offers}
                                    <input type="hidden" class="hidden_offers" data-id="{$key}" data-num="{$offer.num}" data-size="{$offer.propsdata['Размер']}" data-color="{$offer.propsdata['Цвет']}" data-title="{$offer.title}"  data-change-cost='{ ".price .value": "{$product->getCost(null, $key)}", ".price .before-value": "{$product->getCost('Старая цена', $key)}"}'/>
                                {/foreach}                                      
                                                     
                            {/if}
                            </div>
                    {/if}
                
                    <input type="hidden" name="offer" value="0"/>
                    {foreach from=$properties item=data}
                        {foreach from=$data.properties item=property}
                    
                            {if !empty($property.value)}
                                {assign var=has_properties value=true}                        
                                {if !in_array($property.title, ['Бренд'])}
                                    <div class="props">
                                    {if $property.title == 'Цвет'}
                                        {if $product->isOffersUse()}
                                            <div class="color-select">
                                                <span class="key">ЦВЕТ:</span>
                                                <ul class="color-box">
                                                    {foreach from=$property.value key=key item=value}
                                                    <li>
                                                        <div class="box{if $value=='Разноцвет'} multicolor{/if} offer_cell" style="background-color:{$colors.colors[$value].color}" data-id="{$property.id}" data-value="{$value}" data-name="color" data-type="Цвет" title="{$value}"><i></i></div>
                                                    </li>
                                                    {/foreach}
                                                </ul>   
                                            </div>                     
                                        {/if}    
                                    {else}
                                        <div class="product_properties">
                                            <span class="key">{if $property.title=='Размер'}{if $product->isOffersUse()}РАЗМЕР:{/if}{else}{$property.title}:{/if}</span> {if $property.title!=='Размер'}{$property->textView()}{/if}
                                            {if $property.title=='Размер'}
                                                <span class="open_sizes">
                                                    <a href="/Tablica-razmerov/?ajax=1" class="inDialog">Определить свой размер</a>
                                                </span>
                                            {/if}
                                        </div>
                                        {if $property.title=='Размер'}
                                            {if $product->isOffersUse()}
                                                {static_call var=sizes callback=['NefertitiCustom\Model\Api','getSizesFromString'] params=[$property->textView()]}
                                               
                                                {if !empty($sizes)}
                                                    <ul class="sizes-box">
                                                        {foreach from=$sizes item=size}
                                                            {assign var=size value=trim($size)}
                                                            <li><a href="#size{$size}" class="offer_cell" data-id="{$property.id}"  data-value="{$size}" data-name="size" data-type="Размер">{$size}</a></li>
                                                        {/foreach}
                                                    </ul>
                                                {/if}
                                            {/if}
                                        {/if}
                                    {/if}
                                    </div>
                                {/if}
                            {/if}
                        {/foreach}
                    {/foreach}
            </div>
            
            
            <div class="bold-border " style="margin-top:0"></div>
            <div class="priceWrap">
                <div class="price">
                    {if $product->getCost('Старая цена')>0}
                        <span class="before-value">{$product->getCost('Старая цена')}</span> <span class="before-currency">{$product->getCurrency()}</span>
                    {/if}
                    <span class="value">{$product->getCost()}</span> <span class="currency">{$product->getCurrency()}</span>
                </div>
            </div>
            {if $product.num && $product->isOffersUse()}
                <div class="addToCartContainer" data-cart-url="{$router->getUrl('shop-front-cartpage')}">
                    <a href="{$router->getUrl('shop-front-cartpage', ["add" => $product.id])}" class="buyButton addToCart noShowCart" data-product-page="1">В корзину</a>
                </div>
            {else}
                <p>Нет в наличии</p>
            {/if}
        </div>
    </div> <!-- .product -->
    
    <a name="feedback"></a>
    {* Комментарии *}
    {moduleinsert name="\Comments\Controller\Block\Comments" type="Catalog\Model\CommentType\Product"}
    
    {* Последние просмотренные товары *}
    {moduleinsert name="\Catalog\Controller\Block\LastViewed" pageSize="3"}
    
    {assign var=recomended value=$product->getRecommended()}
    {if count($recomended)}    
    <div class="separator bm20">
        <span class="title">С ЭТИМ ТОВАРОМ ОБЫЧНО ПОКУПАЮТ</span>
    </div>
    
    <div class="products">
        {foreach from=$recomended item=item}
            {$item->fillProperty()}
            {include file="%catalog%/one_product.tpl" product=$item}
        {/foreach}
    </div>
    {/if}
    {literal}        
    <script type="text/javascript">
        
        $(window).load(function() {
            $('#big_pic').jqzoom({
                preloadText: 'Загрузка...',
                title: false,
                zoomWidth:322,
                zoomHeight:382,
                xOffset:10
            });                                    
            
            $('#gallery-list a').lightBox({
                imageLoading:            '/resource/img/lightbox/loading.gif',
                imageBtnPrev:            '/resource/img/lightbox/prev.gif',   
                imageBtnNext:            '/resource/img/lightbox/next.gif',   
                imageBtnClose:           '/resource/img/lightbox/close.gif', 
                imageBlank:              '/resource/img/lightbox/blank.gif',                    
            });
            
            $('#big_pic').click(function() {
                var link = $(this).attr('href');
                $('#gallery-list a[data-link="'+link+'"]').click();
            });
            
            $('#big_pic').bind('mouseenter', function() {
                $('.zoom').hide();
            });
            $('#big_pic').bind('mouseleave', function() {
                $('.zoom').show();
            });                                    
        });
    {/literal}
       {if $product->isOffersUse()} 
        {literal}
            $(function() {
                $('.propsContainer').propSelector();
            });
        {/literal}
       {/if}
    {literal}  
        </script> 
    {/literal}   

Собственно остаётся настроить под себя.

Re: Нужен подобный функционал (выбор цвета и размера)

Ну что получается?

6 Отредактировано Sergey T. (18.09.2014 10:53:36)

Re: Нужен подобный функционал (выбор цвета и размера)

Еще не пробовал, пока занимаюсь оформлением сайта. Сегодня-завтра до этого дойду, буду пробовать. Спасибо за вашу отзывчивость wink

7

Re: Нужен подобный функционал (выбор цвета и размера)

Александр пишет:

Ну что получается?

это реализовано вместе с модулем Цвет? или просто достаточно подправить под себя приведенный код товара выше?

Re: Нужен подобный функционал (выбор цвета и размера)

Да вместе с модулем Цвет