Wie entfernen Sie die Exportoption aus Verkaufs-/Bestellnetz?
-
16-10-2019 - |
Frage
Ich möchte Folgendes aus dem Verkaufsnetz entfernen:
- Neue Order RSS
- Exportieren nach:
- Massaktionsblock
Für eine bestimmte Administratorrolle.
Ich benutze derzeit adminhtml_block_html_before
Ereignis zum Entfernen des Massaktionsblocks:
Meine Beobachtermethode:
public function salesOrderVendorLayout($evt){
$tabBlock = $evt->getBlock();
if($tabBlock instanceof Mage_Adminhtml_Block_Sales_Order_Grid){
$tabBlock->setMassactionIdField('');
}
}
Meine Fragen:
- Ist dies der richtige Weg, um Massenaktionsblock zu entfernen?
- Wie kann ich die verbleibenden zwei Blöcke entfernen?
Lösung
Ich glaube nicht, dass es eine Möglichkeit gibt, den RSS -Link und die Exporttypen durch einen Beobachter zu entfernen.
Der Code, der die Exporttypen anzeigt, lautet beispielsweise Folgendes:
<?php if($this->getExportTypes()): ?>
<td class="export a-right">
<img src="<?php echo $this->getSkinUrl('images/icon_export.gif') ?>" alt="" class="v-middle"/> <?php echo $this->__('Export to:') ?>
<select name="<?php echo $this->getId() ?>_export" id="<?php echo $this->getId() ?>_export" style="width:8em;">
<?php foreach ($this->getExportTypes() as $_type): ?>
<option value="<?php echo $_type->getUrl() ?>"><?php echo $_type->getLabel() ?></option>
<?php endforeach; ?>
</select>
<?php echo $this->getExportButtonHtml() ?>
</td>
<?php endif; ?>
Die einzige Möglichkeit, es nicht zu machen, ist zu machen getExportTypes
Rückkehr null
oder false
Und die Methode sieht so aus:
public function getExportTypes()
{
return empty($this->_exportTypes) ? false : $this->_exportTypes;
}
_exportTypes
ist geschützt und die einzigen öffentlichen Methoden, die darauf zugreifen getExportTypes
zum Abrufen und addExportType
zum Hinzufügen eines neuen Exporttyps. Es gibt keine Möglichkeit, sie zu entfernen. Gleiches gilt für RSS -Listen.
Hier ist, was ich in Ihrem Fall tun würde. Ich würde den Bestellblock neu schreiben Mage_Adminhtml_Block_Sales_Order_Grid
und fügen Sie die folgenden Methoden hinzu:
public function getExportTypes(){
return false;
}
public function getRssLists(){
return false;
}
protected function _prepareMassaction(){
return $this;
}
Noch besser, ich würde eine Möglichkeit implementieren, sie noch anzeigen zu können, indem ich eine Konfigurationseinstellung im Backend ändern kann (falls erforderlich).
public function getExportTypes(){
if (!Mage::getStoreConfigFlag('some/config/path')){ //if some flag is not set let it behave as default.
return parent::getExportTypes();
}
return false;
}
Andere Tipps
Ich sehe drei Möglichkeiten:
Das einfache: CSS
Fügen Sie einfach eine neue CSS -Datei hinzu und verstecken Sie alles, was Sie wollen,
Ändern Sie die Vorlage
Es gibt eine Standardvorlage, die für jedes Raster und seinen Behälter verwendet wird:
/app/design/adminhtml/default/default/template/widget/grid/container.phtml
/app/design/adminhtml/default/default/template/widget/grid.phtml
Ändern Sie einfach die Vorlage in Ihrer eigenen layout.xml
Datei filen, die Vorlage kopieren und die gewünschten Teile entfernen
Schreiben Sie den Block neu
Schreiben Sie den Block neu \Mage_Adminhtml_Block_Catalog_Product_Grid
und ändern Sie die Methode \Mage_Adminhtml_Block_Catalog_Product_Grid::_prepareMassaction
nichts tun
Hier ist was ich getan habe:
class Mynamespace_Mymodule_Block_Adminhtml_Sales_Order_Grid extends Mage_Adminhtml_Block_Sales_Order_Grid{
protected $_idArray = array();
public function __construct()
{
parent::__construct();
$this->_idArray = Mage::helper('mymodule')->getUserInfo();
}
public function getExportTypes(){
if($this->_idArray['user_role'] == 'xyz'){
return false;
} else{
return $this->_exportTypes;
}
}
public function getRssLists(){
if($this->_idArray['user_role'] == 'xyz'){
return false;
} else{
return $this->_rssLists;
}
}
protected function _prepareMassaction(){
if($this->_idArray['user_role'] == 'xyz'){
return $this;
} else{
parent::_prepareMassaction();
}
}
}
wo getUserInfo()
ist meine Helferklassenmethode, die das bekommt Benutzeridentifikation und Benutzer-Rolle aus Admin/Sitzung.