Magento, различен фонов цвят за група от редове в задната мрежа

На административна страница в бекенда с решетка трябва да променя цвета на фона за групи от редове. Не редуване на цвят ред по ред по подразбиране, а оцветяване на групи според известна стойност на колона.

Разглеждах този SO въпрос: Подход за промяна на цвета на реда в мрежата за поръчки в администратор и други подобни страници. Но не мога да възпроизведа това, от което се нуждая, тъй като този въпрос се отнася до стойност в колона, която ще се повтаря.

Трябва или да използвам различни цветове за различните групи, или поне да използвам алтернативни цветове на тези групи.

Може би нещо подобно:

въведете описание на изображението тук


person Yaroslav    schedule 07.12.2012    source източник
comment
Искате ли да промените цвета на клетката или на целия ред?   -  person ceckoslab    schedule 08.12.2012
comment
Цяла група редове, които имат колона със същата стойност   -  person Yaroslav    schedule 08.12.2012
comment
Не съм сигурен, че изобщо го разбрах. Бихте ли добавили графика с обяснение или може да покажете само пример? Благодаря.   -  person ceckoslab    schedule 08.12.2012
comment
Между другото работя върху нещо подобно и ето напредъка ми досега: awesomescreenshot.com/0fcp2sn47   -  person ceckoslab    schedule 08.12.2012
comment
Е, може да е нещо подобно, ще трябва да го проверя. SO, който имам предвид във въпроса си, се опитва да реши нещо подобно на това, което правите. Ще се опитаме да видим в понеделник какво може да се направи. Ще използвам вашата екранна снимка, за да покажа пример за това, което искам, добре ли е за вас?   -  person Yaroslav    schedule 08.12.2012
comment
Разбира се :) Кой знае, може някой да отговори до понеделник.   -  person ceckoslab    schedule 08.12.2012
comment
Да...просто вкъщи нямам нищо инсталирано...знаеш ли, остави работата на работа ;)   -  person Yaroslav    schedule 08.12.2012
comment
Благодаря за визуализацията ... Бърз въпрос: Това за персонализиран модул на Magento ли е направен от вас или трябва да направите това за някои от съществуващите мрежи в административната област на Magento?   -  person ceckoslab    schedule 08.12.2012


Отговори (3)


За всеки, който търси решение. Използвах този урок на уебсайта на Inchoo: Добавяне на персонализирано изобразяване за персонализирана колона в мрежата на Magento. Има някои SO въпроси, които също помогнаха да се разбере решението.

Не успях да променя цвета на фона на целия ред, както първоначално исках, просто променям фона на клетката. Но в края е достатъчно да посочи на потребителя, че този ред е малко по-различен. Това, което направих, беше да добавя нова персонализирана колона. В свойството renderer посочих нов клас.

$this->addColumn('collision_type', array(
          'header'  => $helper->__('Collision'),
          'align'   => 'center',
          'index'   => 'collision_type',
          'type'    => 'action',
          'renderer'=> new Dts_Banners_Block_Adminhtml_Collisions_Grid_Renderer_Collisiontype(),
));

Поставих необходимия клас в ново поддърво:

Grid
  └─ Renderer
        └─ Collisiontype.php

И това е новият клас, който трябва да изобрази колоната. За да имате различни цветове, просто трябва да оцените променливата $value и да приложите различни цветови стилове за съответната стойност, това е, което правя сега.

<?php
class Dts_Banners_Block_Adminhtml_Collisions_Grid_Renderer_Collisiontype extends Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Abstract
{
    public function render(Varien_Object $row) {
        $value =  $row->getData($this->getColumn()->getIndex());
        return '<div style="color:#FFF;font-weight:bold;background:#F55804;border-radius:8px;width:100%">'.$value.'</div>';
    }
}
?>

И резултатът:

Екранна снимка на мрежа с изобразена колона

person Yaroslav    schedule 12.12.2012

В моя случай използвах горния кодов фрагмент. Трябваше да създам персонализирана радио колона в мрежата за категория. Така че поставих всички условия за това така.

public function render(Varien_Object $row) {
        $category = Mage::registry('current_category');
        $screenId = $category->getCategoryAttachedID();
        if($row->getId()==$screenId)$checked='checked="checked"';
        else $checked='';
        return '<input type="radio" name="screen_id" value="'.$row->getId().'" '.$checked.' >';
    }
person mandeepsinghn    schedule 23.06.2014

Отговорите по-горе са добри, но понякога искате да направите същото, без да създавате нов файл.
Ето друг начин да постигнете същия резултат, оставайки във файла с мрежата.

$this->addColumn('collision_type', array(
      'header'  => $helper->__('Collision'),
      'align'   => 'center',
      'index'   => 'collision_type',
      'type'    => 'action',
      'frame_callback' => [$this, '_formatCell']
));

след това в същия файл

public function _formatCell($value, Varien_Object $row, Mage_Adminhtml_Block_Widget_Grid_Column $column)
{
    $value =  $row->getData($column->getIndex());
    return '<div style="color:#FFF;font-weight:bold;background:#F55804;border-radius:8px;width:100%">'.$value.'</div>';
}
person Shadoweb    schedule 13.07.2018