Approach on changing row color on orders grid in admin

社会主义新天地 提交于 2020-01-10 03:14:34

问题


I need to change row color in magento orders grid based on order status. For start I don't want a complex solution with configurable interface. I just want to know where to start.

What is the best approach ?


回答1:


Full, working solution:

Copy js/mage/adminhtml/grid.js to js/colors/adminhtml/grid.js

Make the file 666 and the folders (js/colors & js/colors/adminhtml) 777.

Edit it and after line 208 (before the line containing }.bind(this)) add:

colorize();

At the end of the file add:

function colorize () {
    $$('td').each(function(macguffin) {
       if(macguffin.innerHTML.strip()=="Processing") macguffin.parentNode.setStyle({backgroundColor: 'Orange' });
        if(macguffin.innerHTML.strip()=="Pending") macguffin.parentNode.setStyle({backgroundColor: 'Gold', color:'Black' });
        if(macguffin.innerHTML.strip()=="Payment Review") macguffin.parentNode.setStyle({backgroundColor: 'LightPink' });
        if((macguffin.innerHTML.strip()=="On Hold")||(macguffin.innerHTML.strip()=="Payment Review")) macguffin.parentNode.setStyle({backgroundColor: 'HotPink' });
        if(macguffin.innerHTML.strip()=="Suspected Fraud") macguffin.parentNode.setStyle({backgroundColor: 'Red' });
        if((macguffin.innerHTML.strip()=="Closed")||(macguffin.innerHTML.strip()=="Canceled")||(macguffin.innerHTML.strip()=="Cancelled")) macguffin.parentNode.setStyle({backgroundColor: 'LightBlue', fontStyle: 'italic' });
        if(macguffin.innerHTML.strip()=="Complete") macguffin.parentNode.setStyle({backgroundColor: 'Green' });
  });
}
document.observe("dom:loaded", colorize);

Now create or edit the admin local.xml file in app/design/adminhtml/default/default/layout/local.xml

Edit it to include:

<?xml version="1.0"?>
<layout version="0.1.0">
  <default>
    <reference name="head">
        <action method="removeItem"><type>js</type><name>mage/adminhtml/grid.js</name></action>
        <action method="addItem"><type>js</type><name>colors/adminhtml/grid.js</name></action> 
    </reference>
  </default>
</layout>

The orders grid will now be in vibrant colours and you should be able to clearly see what orders need attention.

The colorize() function can be edited to suit your order states and preferred colour scheme.



来源:https://stackoverflow.com/questions/6569386/approach-on-changing-row-color-on-orders-grid-in-admin

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!