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.

Preview image

Vielen Dank im Voraus für Ihre Zeit.

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top