Wie kann ich das Vorschau -Image größer machen?
-
16-10-2019 - |
Frage
Ich mache ein Modul, das mit dem Katalog-Produktmanager so ziemlich das gleiche macht. In meinem Modul muss ich ein Bild hochladen. Alles ist bisher in Ordnung. Das Problem ist, dass ich keinen Weg finden kann, wenn ich ein Bild hochladen und dieses Produkt bearbeiten kann. Das Bild ist 22x22 PX.
Mein Feld befindet sich in der Form so:
$fieldset->addField('imagebook', 'image', array(
'label' => Mage::helper('books')->__('Image'),
'required' => false,
'name' => 'imagebook',
));
Meine Frage stammt also aus dem Bild unten.Wie kann ich dieses Bild größer machen? Wenn ich das CSS bearbeite, das Magento verwendet, ändern Sie alle Vorschau -Bilder für die gesamte Website.
Vielen Dank im Voraus für Ihre Zeit.
Lösung
Sie können HTML -Inhalte nach Ihrem Element hinzufügen und folgende verwenden:
$field = $fieldset->addField('imagebook', 'image', array(
'label' => Mage::helper('books')->__('Image'),
'required' => false,
'name' => 'imagebook',
));
$imageUrl = Mage::registry('model')->getImageUrl();
$field->setAfterElementHtml(
"<img src='$imageUrl' class='some_class'/> "
);
Hier $imageUrl
Ist ein Link zum hochgeladenen Bild, ich bekomme es von meinem Modell, aber Ihr kann unterschiedlich sein. Sie können es mit eigener Logik erhalten. Und fügen Sie auch einige CSS -Regeln für hinzu some_class
.
Andere Tipps
Das von Ihnen angegebene Bild wird über die hinzugefügt Mage_Adminhtml_Block_Catalog_Product_Helper_Form_Image
Klasse, der wiederum die verwendet Varien_Data_Form_Element_Image
Wenn Sie in die Funktion schauen getElementHtml
an Varien_Data_Form_Element_Image
Sie werden die hart codierte Höhe und Breite sehen.
/**
* Return element html code
*
* @return string
*/
public function getElementHtml()
{
$html = '';
if ((string)$this->getValue()) {
$url = $this->_getUrl();
if( !preg_match("/^http\:\/\/|https\:\/\//", $url) ) {
$url = Mage::getBaseUrl('media') . $url;
}
$html = '<a href="' . $url . '"'
. ' onclick="imagePreview(\'' . $this->getHtmlId() . '_image\'); return false;">'
. '<img src="' . $url . '" id="' . $this->getHtmlId() . '_image" title="' . $this->getValue() . '"'
. ' alt="' . $this->getValue() . '" height="22" width="22" class="small-image-preview v-middle" />'
. '</a> ';
}
$this->setClass('input-file');
$html .= parent::getElementHtml();
$html .= $this->_getDeleteCheckbox();
return $html;
}
Ich würde vorschlagen, dass Sie die neu schreiben könnten Mage_Adminhtml_Block_Catalog_Product_Helper_Form_Image
Klasse und erstellen a getElementHtml
Funktion, die die gewünschte Breite und Höhe festlegt.
Alternativ können Sie das Ereignis nutzen adminhtml_catalog_product_edit_element_types
und erstellen Sie einen benutzerdefinierten Typ Handler. Sie müssten dann den Feldtyp aktualisieren, wenn Sie von Hinzufügen von hinzufügen image
zu etwas wie new_image
.
$response = $observer->getEvent()->getResponse();
$types = $response->getTypes();
$types['new_image'] = Mage::getConfig()->getBlockClassName('new_image/element_image');
$response->setTypes($types);
Ich habe die Antwort von @MageUz akzeptiert und es funktioniert, aber ich habe auch diese Lösung gefunden, die schneller und einfacher ist, denke ich. Wenn Sie eine CSS -Datei in Skin/AdminHtml/Standard/Standard/yourfile.css hinzufügen, macht es den Trick:
#imagebook_image {
display: block;
max-width: 200px;
max-height: 200px;
width: auto;
height: auto;
padding-bottom: 10px;
}
ImageBook_Image wird von Ihrem Spaltennamen und Typ gemacht. Ich habe nichts gefunden, um kaputt zu sein.