Автор Тема: ID метода доставки  (Прочитано 1095 раз)

07 Март 2013, 17:56:55
  • Пользователь
  • **
  • Сообщений: 65
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля


Подскажите, как правильно сделать, чтобы в зависимости от ID метода доставки, выводились разные надписи. Мне нужно что бы в графе забрать в магазине стояло напротив слово БЕСПЛАТНО.

 Пробывал прописать в order-carrier.tpl {if ($this->id_carrier==23)} {l s='Free!'}{/if} не помогает, заполняет этим словом все колоки.
07 Март 2013, 23:24:14
Ответ #1
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86543
  • Репутация: +25419/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В колонке Цена показывае цены на доставку, если нет цены то текст Free (перевод можно поставить любой). Т.е. для всех методов доставки без цены - один и тотже текст.
<div class="delivery_option_price">
{if $option.total_price_with_tax && !$free_shipping}
{if $use_taxes == 1}
{convertPrice price=$option.total_price_with_tax} {l s='(tax incl.)'}
{else}
{convertPrice price=$option.total_price_without_tax} {l s='(tax excl.)'}
{/if}
{else}
{l s='Free!'}
{/if}
</div>
Цитировать
Пробывал прописать в order-carrier.tpl {if ($this->id_carrier==23)} {l s='Free!'}{/if} не помогает
Ид метода доставки :
{$carrier.instance->id}Можно тогда попробывать так:
<div class="delivery_option_price">
{if $option.total_price_with_tax && !$free_shipping}
{if $use_taxes == 1}
{convertPrice price=$option.total_price_with_tax} {l s='(tax incl.)'}
{else}
{convertPrice price=$option.total_price_without_tax} {l s='(tax excl.)'}
{/if}
{else}
        {if $carrier.instance->id == '23'}
                {l s='Бесплатно'}
        {else}
        {l s='Free!'}
{/if}       
{/if}
</div>
Но лучше переопределить класс OrderCarrier.php, добавить возможность менять текст при бесплатной доставке.
08 Март 2013, 07:31:35
Ответ #2
  • Пользователь
  • **
  • Сообщений: 65
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Попробовал, не получилось >:(
08 Март 2013, 19:02:28
Ответ #3
  • Пользователь
  • **
  • Сообщений: 65
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
У меня сейчас так, пока результата нет
<table id="carrierTable" class="std" {if !isset($carriers) || !$carriers || !count($carriers)}style="display:none;"{/if}>
<thead>
<tr>
<th class="carrier_action first_item"></th>
<th class="carrier_name item">{l s='Carrier'}</th>
<th class="carrier_infos item">{l s='Information'}</th>
<th class="carrier_price last_item">{l s='Price'}</th>
</tr>
</thead>
<tbody>
{if isset($carriers)}
{foreach from=$carriers item=carrier name=myLoop}
<tr class="{if $smarty.foreach.myLoop.first}first_item{elseif $smarty.foreach.myLoop.last}last_item{/if} {if $smarty.foreach.myLoop.index % 2}alternate_item{else}item{/if}">
<td class="carrier_action radio">
<input type="radio" name="id_carrier" value="{$carrier.id_carrier|intval}" id="id_carrier{$carrier.id_carrier|intval}"  {if $opc}onclick="updateCarrierSelectionAndGift();"{/if} {if !($carrier.is_module AND $opc AND !$isLogged)}{if $carrier.id_carrier == $checked || $carriers|@count == 1}checked="checked"{/if}{else}disabled="disabled"{/if} />
</td>
<td class="carrier_name">
<label for="id_carrier{$carrier.id_carrier|intval}">
{if $carrier.img}<img src="{$carrier.img|escape:'htmlall':'UTF-8'}" alt="{$carrier.name|escape:'htmlall':'UTF-8'}" />{else}{$carrier.name|escape:'htmlall':'UTF-8'}{/if}
</label>
</td>


<td class="carrier_infos">{$carrier.delay|escape:'htmlall':'UTF-8'}</td>
<td class="carrier_price">


{if $carrier.price}
<span class="price">
{if $priceDisplay == 1}{convertPrice price=$carrier.price_tax_exc}{else}{convertPrice price=$carrier.price}{/if}
</span>
{if $use_taxes}{if $priceDisplay == 1} {l s='(tax excl.)'}{else} {l s='(tax incl.)'}{/if}{/if}
{else}

{* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*}

 {if {$carrier.instance->id} == 23)} {l s='Free!'} {/if}

{* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*}

{/if}
</td>
</tr>
{/foreach}
<tr id="HOOK_EXTRACARRIER">{$HOOK_EXTRACARRIER}</tr>
{/if}
</tbody>
</table>
10 Март 2013, 14:38:40
Ответ #4
  • Администратор
  • Ветеран
  • *****
  • Сообщений: 102479
  • Репутация: +34219/-0
    • Просмотр профиля
Цитата: Riva
Попробовал, не получилось >:(
У вас не стандарный шаблон, поэтому код нужно адаптировать под используемый шаблон.
Ид метода доставки у вас :
$carrier.id_carrierа не
$carrier.instance->id
10 Март 2013, 15:53:58
Ответ #5
  • Пользователь
  • **
  • Сообщений: 65
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
может кому то будет ещё нужно, заработало так
{if $carrier.id_carrier == 23} {l s='Free!'}
{else}
    {l s='Ask manager for details'} {/if}