Как добавить логотип на вариант доставки?

Я клонировал способ доставки по табличной цене, чтобы иметь другой вариант (быстрый курьер). Я везде проверял, как добавить логотип при отображении вариантов доставки.

Что я сделал: в публичную функцию collectRates внутри моей модели доставки я добавил

$method->setLogo( $this->getShipmentImageSrc('postaromana') );
$result->append($method);

Итак, теперь у меня есть путь к логотипу, проблема в том, что я не знаю, как его назвать. Я полагаю, что звонок сделан в

/app/design/frontend/base/default/template/checkout/onepage/shipping_method/available.phtml

Есть идеи, как это решить?


person Ovidiu    schedule 14.06.2011    source источник
comment
Вы должны предоставить свое решение в качестве ответа, а не внутри вашего вопроса. Затем примите его как правильный ответ (даже если это ваш собственный). Вы сможете принять его через заранее определенный период времени (думаю, через два дня)   -  person Robert Koritnik    schedule 15.06.2011
comment
в следующий раз не задавайте свой вопрос в своем ответе, добавьте ответ и отметьте его как правильный ответ, чтобы каждый, кто ищет, мог легко его найти.   -  person balexandre    schedule 15.06.2011
comment
Спасибо за совет. Извини за это. Буду иметь ввиду в будущем.   -  person Ovidiu    schedule 15.06.2011


Ответы (1)


Решение моего вопроса.

Я делюсь своим решением, если оно кому-то нужно.

В app/code/core/Mage/Shipping/etc/system.xml добавьте это к своему новому оператору связи

<logo>
    <label>Logo</label>
    <frontend_type>image</frontend_type>
    <backend_model>adminhtml/system_config_backend_image</backend_model>
    <upload_dir config="system/filesystem/media" scope_info="0">freeshippingtimisoara/logo</upload_dir>
    <base_url type="media" scoope_info="0">freeshippingtimisoara/logo</base_url>
    <sort_order>3</sort_order>
    <show_in_default>1</show_in_default>
    <show_in_website>1</show_in_website>
    <show_in_store>1</show_in_store>
</logo>

Добавьте эту функцию на модель носителя от /app/code/core/Mage/Shipping/Model/Carrier

public function getShipmentImageSrc($shipping)
{
    $logo = $this->getConfigData('logo');
    $imageFilepath = DS . $shipping . DS . $_code . 'logo' . DS . $logo;
    if( file_exists(Mage::getBaseDir('media').$imageFilepath) ){
        return Mage::getBaseUrl('media').$imageFilepath;
    }
    return false;
}

Клонируйте /app/code/core/Mage/Checkout/Block/Onepage/Shipping/Method/Available.php на локальный и добавьте эту функцию:

public function getCarrierLogo($carrierCode)
{
    if ($logo = Mage::getStoreConfig('carriers/'.$carrierCode.'/logo')) 
    {
        $carrierModel = Mage::getModel('shipping/carrier_' . $carrierCode);
        $logo = $carrierModel->getShipmentImageSrc($carrierCode);
        return $logo;
    }
    //$shippingModel = Mage::getModel('shipping/shipping');
    //$carrier = $shippingModel->getShipmentImageSrc($carrierCode);
    //Mage::helper('firephp')->debug( $carrier );
}

Используйте это в app/design/frontend/default/sex/template/checkout/onepage/shipping_method/available.phtml У меня есть этот файл в моем шаблоне, лучше всего скопировать его в свой шаблон, если вы хотите изменить.

<?php if($this->getCarrierLogo($code)): ?>
    <span class="carrier-desc" style="margin:0 10px">
        <img src="<?php echo $this->getCarrierLogo($code) ?>" alt="<?php echo $_code; ?>" />
    </span>
<?php endif; ?>
person Ovidiu    schedule 15.06.2011
comment
не забудьте сделать этот ответ правильным ответом, нажмите значок «ОК» под значками голосования «за» / «против». - person balexandre; 16.06.2011