Модули для PrestaShop - 2 часть

Статус
В этой теме нельзя размещать новые ответы.
Сейчас сам тоже долблюсь над этой темой.... там не все версткой, там надо код менять product.tpl Впринципе получились кнопки, не хватает знаний как сделать условие(если товара нет на складе, то показывать другой стиль кнопки)

вот код файла product.tpl - замените эту секцию (код еще не оптимизирован грязно и в разработке)
<!-- attributes -->
<div id="attributes">
{foreach from=$groups key=id_attribute_group item=group}
{if $group.attributes|@count}
<p>
<label for="group_{$id_attribute_group|intval}">{$group.name|escape:'html':'UTF-8'} :</label>
{assign var="groupName" value="group_$id_attribute_group"}
<select style="display:none;" name="{$groupName}" id="group_{$id_attribute_group|intval}" onclick="javascript:findCombination();{if $colors|@count > 0}$('#wrapResetImages').show('slow');{/if};">
{foreach from=$group.attributes key=id_attribute item=group_attribute}
<option value="{$id_attribute|intval}"{if (isset($smarty.get.$groupName) && $smarty.get.$groupName|intval == $id_attribute) || $group.default == $id_attribute} selected="selected"{/if} title="{$group_attribute|escape:'html':'UTF-8'}">{$group_attribute|escape:'html':'UTF-8'}</option>
{/foreach}
</select>

{assign var="groupName" value="group_$id_attribute_group"}
<ul id="convert_group_{$id_attribute_group|intval}" class="convert_group convert_group_size">
{foreach from=$group.attributes key=id_attribute item=group_attribute}
{if (!$allow_oosp && $product->quantity <= 0)}
<li id="{$id_attribute|intval}" class="convertli" onclick="javascript:$('select#group_{$id_attribute_group|intval}').val({$id_attribute});findCombination();$('#wrapResetImages').show('slow');;removeSetlect('convert_{$id_attribute|intval}');$(this).addClass('selected');" style="cursor: pointer; color: red; border-color: rgb(72, 72, 72);">{$group_attribute|escape:'html':'UTF-8'}</li>
{else}
<li id="{$id_attribute|intval}" class="convertli" onclick="javascript:$('select#group_{$id_attribute_group|intval}').val({$id_attribute});findCombination();$('#wrapResetImages').show('slow');;removeSetlect('convert_{$id_attribute|intval}');$(this).addClass('selected');" style="cursor: pointer; color: black; border-color: rgb(72, 72, 72);">{$group_attribute|escape:'html':'UTF-8'}</li>
{/if}
{/foreach}
</ul>
</p>
{/if}
{/foreach}
</div>
[/spoil]

и в global.css добавьте ИЛИ замените следующее
[spoil]#primary_block div#attributes p,#quantity_wanted_p{clear:left;height:25px}
#primary_block div#attributes p,#minimal_quantity_wanted_p{clear:left;text-align:left}
#attributes,#availability_statut{float:left!important;width:100%;margin:20px 0}
#attributes .sizeguide{width:auto;float:right;padding-top:7px;text-align:right}
#attributes .sizeguide span#sizeguide{cursor:pointer}
#attributes .sizeguide span#sizeguide:hover{text-decoration:underline}
#attributes #sizeguidevalue{margin-top:7px;float:right}
#attributes .convert_group li{height:24px;line-height:24px;width:30px;border:1px solid #484848;margin-top:8px;margin-right:7px;
float:left;text-align:center;color:#121315;font-size:12px;font-weight:700;cursor:pointer}
#attributes .convert_group li.selected{background:#29d0ed;border:1px solid #ffffff;border:1px solid #484848;color:#fff !important}
#attributes .convert_group li:hover{background:#29d0ed;border:1px solid #484848;color:#fff !important;border:1px solid #484848}
#attributes .convert_group li.c{height:24px;line-height:24px;width:30px;border:1px solid #ffffff;margin-right:7px;float:left;
text-align:center;color:#121315;font-size:12px;font-weight:700;cursor:pointer}
#attributes .convert_group li.c.selected{background:#ffffff;border:1px solid #292929;border:1px solid #484848;color:#fff !important}
#attributes .convert_group li.c:hover{background:#ffffff;border:1px solid #ffffff;color:#fff !important;border:1px solid #484848}[/spoil]

Парни, может кто поможет до ума довести?
Вместо этого:

[spoil]
div id="attributes">
{* ON SALE *}
{if $product->on_sale}<span class="on_sale">{l s='On sale!'}</span>{elseif $product->specificPrice AND $product->specificPrice.reduction AND $productPriceWithoutRedution > $productPrice}<span class="discount">{l s='Reduced price!'}</span>{/if}
<div class="clearblock"></div>
{* attributes *}
{if isset($groups)}
{foreach from=$groups key=id_attribute_group item=group}
{if $group.attributes|@count}
<p>
{assign var="groupName" value="group_$id_attribute_group"}
<select name="{$groupName}" id="group_{$id_attribute_group|intval}" onchange="javascript:findCombination();{if $colors|@count > 0}$('#wrapResetImages').show('slow');{/if};">
{foreach from=$group.attributes key=id_attribute item=group_attribute}
<option value="{$id_attribute|intval}"{if (isset($smarty.get.$groupName) && $smarty.get.$groupName|intval == $id_attribute) || $group.default == $id_attribute} selected="selected"{/if} title="{$group_attribute|escape:'htmlall':'UTF-8'}">{$group_attribute|escape:'htmlall':'UTF-8'}</option>
{/foreach}
</select>
<label for="group_{$id_attribute_group|intval}">{$group.name|escape:'htmlall':'UTF-8'}:</label>
</p>
{/if}
{/foreach}
{/if}
</div>
 
Может кому будет интересно:
Добавляем кнопки (например с размерами) вместо выпадающего списка....как тут Для просмотра ссылки Войди или Зарегистрируйся
в файле product.tpl скрываем изменяем секцию выпадающего списка

было примерно так:
{if isset($groups)}
<!-- attributes -->
<div id="attributes">
{foreach from=$groups key=id_attribute_group item=group}
{if $group.attributes|@count}
<label for="group_{$id_attribute_group|intval}">{$group.name|escape:'html':'UTF-8'} :</label>
{assign var="groupName" value="group_$id_attribute_group"}
<select name="{$groupName}" id="group_{$id_attribute_group|intval}" onclick="javascript:findCombination();{if $colors|@count > 0}$('#wrapResetImages').show('slow');{/if};">
{foreach from=$group.attributes key=id_attribute item=group_attribute}
<option value="{$id_attribute|intval}"{if (isset($smarty.get.$groupName) && $smarty.get.$groupName|intval == $id_attribute) || $group.default == $id_attribute} selected="selected"{/if} title="{$group_attribute|escape:'html':'UTF-8'}">{$group_attribute|escape:'html':'UTF-8'}</option>
{/foreach}
</select>
{/if}
{/foreach}
</div>
{/if}

стало так:

{if isset($groups)}
<!-- attributes -->
<div id="attributes">
{foreach from=$groups key=id_attribute_group item=group}
{if $group.attributes|@count}
<label style="line-height: 45px;width: 40%;" for="group_{$id_attribute_group|intval}">{$group.name|escape:'html':'UTF-8'} :</label>
{assign var="groupName" value="group_$id_attribute_group"}
<select style="display:none;" name="{$groupName}" id="group_{$id_attribute_group|intval}" onclick="javascript:findCombination();{if $colors|@count > 0}$('#wrapResetImages').show('slow');{/if};">
{foreach from=$group.attributes key=id_attribute item=group_attribute}
<option value="{$id_attribute|intval}"{if (isset($smarty.get.$groupName) && $smarty.get.$groupName|intval == $id_attribute) || $group.default == $id_attribute} selected="selected"{/if} title="{$group_attribute|escape:'html':'UTF-8'}">{$group_attribute|escape:'html':'UTF-8'}</option>
{/foreach}
</select>
<ul id="convert_group_{$id_attribute_group|intval}" class="convert_group convert_group_size">
{foreach from=$group.attributes key=id_attribute item=group_attribute}
{if $group.is_color_group != 1}
<li id= "attr_{$id_attribute|intval}" class="convertli {if (isset($smarty.get.$groupName) && $smarty.get.$groupName|intval == $id_attribute) || $group.default == $id_attribute}selected{/if}" onclick="javascript:$('select#group_{$id_attribute_group|intval}').val({$id_attribute|intval});findCombination();{if $colors|@count > 0}$('#wrapResetImages').show('slow');{/if};removeSetlect('convert_group_{$id_attribute_group|intval}');$(this).addClass('selected');">{$group_attribute|escape:'htmlall':'UTF-8'}</li>
{/if}
{/foreach}
</ul>
{/if}
{/foreach}
</div>
{/if}
[/spoil]

в самый конец этого же файла добавляем скрипт
[spoil]
<script type="text/javascript">
$(document).ready(function(){
var more_info = $('#more_info_sheets #more_info_content');
var data_sheet = $('#more_info_sheets #data_sheet_content');
var about = $('#more_info_sheets #about_content');

$('#more_info_tab_more_info').click(function(){
if(more_info.css('display') == 'none') {
data_sheet.hide();
about.hide();
more_info.fadeIn('slow');
$(this).addClass("selected");
$('#more_info_tab_data_sheet').removeClass("selected");
$('#more_info_tab_about').removeClass("selected");
$('#more_info_block').addClass("line");
} else {
$('#more_info_sheets #more_info_content').fadeOut('slow');
$(this).removeClass("selected");
$('#more_info_block').removeClass("line");
}
});
$('#more_info_tab_data_sheet').click(function(){
if(data_sheet.css('display') == 'none') {
more_info.hide();
about.hide();
data_sheet.fadeIn('slow');
$(this).addClass("selected");
$('#more_info_tab_more_info').removeClass("selected");
$('#more_info_tab_about').removeClass("selected");
$('#more_info_block').addClass("line");
} else {
$('#more_info_sheets #data_sheet_content').fadeOut('slow');
$(this).removeClass("selected");
$('#more_info_block').removeClass("line");
}
});
$('#more_info_tab_about').click(function(){
if(about.css('display') == 'none') {
data_sheet.hide();
more_info.hide();
about.fadeIn('slow');
$(this).addClass("selected");
$('#more_info_tab_more_info').removeClass("selected");
$('#more_info_tab_data_sheet').removeClass("selected");
$('#more_info_block').addClass("line");
} else {
$('#more_info_sheets #about_content').fadeOut('slow');
$(this).removeClass("selected");
$('#more_info_block').removeClass("line");
}
});
});

function removeSetlect(id)
{
var convertul = $('#'+id);
convertul.find('li').each(function(){
$(this).removeClass('selected');
});

};

function removeSetlectName(name)
{
var convertul = $('ul[name='+name+']');
convertul.find('li').each(function(){
$(this).removeClass('selected');
});

};
</script>
[/spoil]
в файле product.css добавляем снизу строки
[spoil]
#attributes,#availability_statut{float:left!important;width:100%;margin:20px 0;}
#attributes .sizeguide{width:auto;float:right;padding-top:7px;text-align:right}
#attributes .sizeguide span#sizeguide{cursor:pointer;}
#attributes .sizeguide span#sizeguide:hover{text-decoration:underline}
#attributes #sizeguidevalue{margin-top:7px;float:right}
#attributes .convert_group li{height:24px;line-height:24px;width:30px;border:1px solid #484848;margin-top: 8px; margin-right:7px;float:left;text-align:center;color:#121315;font-size:12px;font-weight:700;cursor:pointer}
#attributes .convert_group li.selected{background:#29d0ed;border:1px solid #ffffff;border:1px solid #484848;color:#fff !important;}
#attributes .convert_group li:hover{background:#29d0ed;border:1px solid #484848;color:#fff !important;border:1px solid #484848;}

#attributes .convert_group li.c{height:24px;line-height:24px;width:30px;border:1px solid #ffffff;margin-right:7px;float:left;text-align:center;color:#121315;font-size:12px;font-weight:700;cursor:pointer}
#attributes .convert_group li.c.selected{background:#ffffff;border:1px solid #292929;border:1px solid #484848;color:#fff !important;}
#attributes .convert_group li.c:hover{background:#ffffff;border:1px solid #ffffff;color:#fff !important;border:1px solid #484848;}

Готово) наслаждайтесь :)
 
Нормальный расчёт стоимости вряд ли кто-то сделает, там всё зависит от приёмщика товара, неизвестно какой вес он посчитает - массу или объёмный вес. Т.е. модуль будет считать одно, а приёмщик другое, если конечно у вас однотипный товар со строгой массой и размерами, то рассчитать точно вполне реально.
Тот модуль, которым на престадев барыжат, абсолютно бесполезен, других не видел.
Вот выбор города и номера отделения Новой почты при оформлении заказа или регистрации клиента в магазине на основе API был бы полезен многим.


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

В том-то и дело, что стоимость можно и потом рассчитать, а вот номер склада выбрать так, чтоб не лазить на сайт Новой Почты... У них есть все необходимое API в относительно открытом доступе, но реализовать должным образом пока ни у кого не получилось. Я видела на одном сайте, там не Prestashop вроде, но модуль реализован как надо. Город-Склад выбирается на ура.
 

Вложения

  • Новая почта.jpg
    Новая почта.jpg
    50,6 KB · Просмотры: 109
Может кому будет интересно:
Добавляем кнопки (например с размерами) вместо выпадающего списка....как тут Для просмотра ссылки Войди или Зарегистрируйся
в файле product.tpl скрываем изменяем секцию выпадающего списка

было примерно так:
{if isset($groups)}
<!-- attributes -->
<div id="attributes">
{foreach from=$groups key=id_attribute_group item=group}
{if $group.attributes|@count}
<label for="group_{$id_attribute_group|intval}">{$group.name|escape:'html':'UTF-8'} :</label>
{assign var="groupName" value="group_$id_attribute_group"}
<select name="{$groupName}" id="group_{$id_attribute_group|intval}" onclick="javascript:findCombination();{if $colors|@count > 0}$('#wrapResetImages').show('slow');{/if};">
{foreach from=$group.attributes key=id_attribute item=group_attribute}
<option value="{$id_attribute|intval}"{if (isset($smarty.get.$groupName) && $smarty.get.$groupName|intval == $id_attribute) || $group.default == $id_attribute} selected="selected"{/if} title="{$group_attribute|escape:'html':'UTF-8'}">{$group_attribute|escape:'html':'UTF-8'}</option>
{/foreach}
</select>
{/if}
{/foreach}
</div>
{/if}

стало так:

{if isset($groups)}
<!-- attributes -->
<div id="attributes">
{foreach from=$groups key=id_attribute_group item=group}
{if $group.attributes|@count}
<label style="line-height: 45px;width: 40%;" for="group_{$id_attribute_group|intval}">{$group.name|escape:'html':'UTF-8'} :</label>
{assign var="groupName" value="group_$id_attribute_group"}
<select style="display:none;" name="{$groupName}" id="group_{$id_attribute_group|intval}" onclick="javascript:findCombination();{if $colors|@count > 0}$('#wrapResetImages').show('slow');{/if};">
{foreach from=$group.attributes key=id_attribute item=group_attribute}
<option value="{$id_attribute|intval}"{if (isset($smarty.get.$groupName) && $smarty.get.$groupName|intval == $id_attribute) || $group.default == $id_attribute} selected="selected"{/if} title="{$group_attribute|escape:'html':'UTF-8'}">{$group_attribute|escape:'html':'UTF-8'}</option>
{/foreach}
</select>
<ul id="convert_group_{$id_attribute_group|intval}" class="convert_group convert_group_size">
{foreach from=$group.attributes key=id_attribute item=group_attribute}
{if $group.is_color_group != 1}
<li id= "attr_{$id_attribute|intval}" class="convertli {if (isset($smarty.get.$groupName) && $smarty.get.$groupName|intval == $id_attribute) || $group.default == $id_attribute}selected{/if}" onclick="javascript:$('select#group_{$id_attribute_group|intval}').val({$id_attribute|intval});findCombination();{if $colors|@count > 0}$('#wrapResetImages').show('slow');{/if};removeSetlect('convert_group_{$id_attribute_group|intval}');$(this).addClass('selected');">{$group_attribute|escape:'htmlall':'UTF-8'}</li>
{/if}
{/foreach}
</ul>
{/if}
{/foreach}
</div>
{/if}
[/spoil]

в самый конец этого же файла добавляем скрипт
[spoil]
<script type="text/javascript">
$(document).ready(function(){
var more_info = $('#more_info_sheets #more_info_content');
var data_sheet = $('#more_info_sheets #data_sheet_content');
var about = $('#more_info_sheets #about_content');

$('#more_info_tab_more_info').click(function(){
if(more_info.css('display') == 'none') {
data_sheet.hide();
about.hide();
more_info.fadeIn('slow');
$(this).addClass("selected");
$('#more_info_tab_data_sheet').removeClass("selected");
$('#more_info_tab_about').removeClass("selected");
$('#more_info_block').addClass("line");
} else {
$('#more_info_sheets #more_info_content').fadeOut('slow');
$(this).removeClass("selected");
$('#more_info_block').removeClass("line");
}
});
$('#more_info_tab_data_sheet').click(function(){
if(data_sheet.css('display') == 'none') {
more_info.hide();
about.hide();
data_sheet.fadeIn('slow');
$(this).addClass("selected");
$('#more_info_tab_more_info').removeClass("selected");
$('#more_info_tab_about').removeClass("selected");
$('#more_info_block').addClass("line");
} else {
$('#more_info_sheets #data_sheet_content').fadeOut('slow');
$(this).removeClass("selected");
$('#more_info_block').removeClass("line");
}
});
$('#more_info_tab_about').click(function(){
if(about.css('display') == 'none') {
data_sheet.hide();
more_info.hide();
about.fadeIn('slow');
$(this).addClass("selected");
$('#more_info_tab_more_info').removeClass("selected");
$('#more_info_tab_data_sheet').removeClass("selected");
$('#more_info_block').addClass("line");
} else {
$('#more_info_sheets #about_content').fadeOut('slow');
$(this).removeClass("selected");
$('#more_info_block').removeClass("line");
}
});
});

function removeSetlect(id)
{
var convertul = $('#'+id);
convertul.find('li').each(function(){
$(this).removeClass('selected');
});

};

function removeSetlectName(name)
{
var convertul = $('ul[name='+name+']');
convertul.find('li').each(function(){
$(this).removeClass('selected');
});

};
</script>
[/spoil]
в файле product.css добавляем снизу строки
[spoil]
#attributes,#availability_statut{float:left!important;width:100%;margin:20px 0;}
#attributes .sizeguide{width:auto;float:right;padding-top:7px;text-align:right}
#attributes .sizeguide span#sizeguide{cursor:pointer;}
#attributes .sizeguide span#sizeguide:hover{text-decoration:underline}
#attributes #sizeguidevalue{margin-top:7px;float:right}
#attributes .convert_group li{height:24px;line-height:24px;width:30px;border:1px solid #484848;margin-top: 8px; margin-right:7px;float:left;text-align:center;color:#121315;font-size:12px;font-weight:700;cursor:pointer}
#attributes .convert_group li.selected{background:#29d0ed;border:1px solid #ffffff;border:1px solid #484848;color:#fff !important;}
#attributes .convert_group li:hover{background:#29d0ed;border:1px solid #484848;color:#fff !important;border:1px solid #484848;}

#attributes .convert_group li.c{height:24px;line-height:24px;width:30px;border:1px solid #ffffff;margin-right:7px;float:left;text-align:center;color:#121315;font-size:12px;font-weight:700;cursor:pointer}
#attributes .convert_group li.c.selected{background:#ffffff;border:1px solid #292929;border:1px solid #484848;color:#fff !important;}
#attributes .convert_group li.c:hover{background:#ffffff;border:1px solid #ffffff;color:#fff !important;border:1px solid #484848;}

Готово) наслаждайтесь :)


в моей теме нет product.css, есть global.css.
Подскажите - это только под 1.5?
Если не сложно, можно посмотреть файлы, добавил. но изменений не обнаружил.
 

Вложения

  • File.rar
    23,1 KB · Просмотры: 12
перекомпиляция смарти в настройках включена? Кеш смарти чистили?
 
В том-то и дело, что стоимость можно и потом рассчитать, а вот номер склада выбрать так, чтоб не лазить на сайт Новой Почты... У них есть все необходимое API в относительно открытом доступе, но реализовать должным образом пока ни у кого не получилось. Я видела на одном сайте, там не Prestashop вроде, но модуль реализован как надо. Город-Склад выбирается на ура.

Вот в принципе то, что доктор прописал, стоимость по факту на НП пусть считают, ее платит покупатель, а вот сразу получить город-склад- в этом есть необходимость.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху