пятница, 9 января 2015 г.

Много пустого места вокруг иконок с изображением товара

Или сами иконки слишком мелкие, реально 180 х 180 пикселов — ну куда это годится для современных мониторов?

Код простой, в файле XLite\Module\DAG\MaayaSkin\View\ItemsList\Product\Customer\ACustomer.php вашего модуля-скина пишем следующее:

 <?php

namespace XLite\Module\DAG\MaayaSkin\View\ItemsList\Product\Customer;

abstract class ACustomer extends \XLite\View\ItemsList\Product\Customer\ACustomer implements \XLite\Base\IDecorator
{

    public static function getIconSizes()

    {
        return array(
            static::WIDGET_TYPE_SIDEBAR . '.' . static::DISPLAY_MODE_STHUMB => array(180, 180),
            static::WIDGET_TYPE_SIDEBAR . '.' . static::DISPLAY_MODE_BTHUMB => array(180, 180),
            static::WIDGET_TYPE_CENTER . '.' . static::DISPLAY_MODE_GRID => array(220, 220)
            static::WIDGET_TYPE_CENTER . '.' . static::DISPLAY_MODE_LIST => array(220, 220),
            'other' => array(110, 110),
        );
    }
}
Уверен, что где прописать размеры иконок продуктов - понятно :) где какие иконки - понятно не сразу, но разобраться не сложно.

Сложнее другое. Эти иконки общие и используются и в других модулях, дизайн которых портится после изменения размена иконок. Так, например "рекомендуемые товары" в модуле Add2CartPopup начинают наползать друг на друга. И что делать?

Нужно найти ВСЕ такие проблемные модули и декорировать их классы, указав, что виджет должен оперировать "старым" размером изображений товаров. Для Add2CartPopup я в своем модуле-скине добавил файл XLite\Module\DAG\MaayaSkin\View\Products.php со следующим кодом (использование именно этого метода класса Products спорно, но почему бы и нет?):

<?php
// vim: set ts=4 sw=4 sts=4 et:

namespace XLite\Module\DAG\MaayaSkin\View;

class Products extends \XLite\Module\XC\Add2CartPopup\View\Products implements \XLite\Base\IDecorator
{

    protected function getMaxCount()
    {
        $this->widgetParams[self::PARAM_ICON_MAX_WIDTH]->setValue(180);
        $this->widgetParams[self::PARAM_ICON_MAX_HEIGHT]->setValue(180);

        return static::PARAM_MAX_PRODUCT_COUNT;
    }

}
Перезагружаем магазин и видим, что все ОК.

Я подозреваю, что явно указывая вместо self нужный класс виджета (в нашем случае это \XLite\Module\XC\Add2CartPopup\View\Products)- можно менять его параметры из другого виджета, не затрагивая кода самого класса.

обсуждение этой темы на офф форуме X-Cart доступно по ссылке

Комментариев нет:

Отправить комментарий