한글 - Magento에서 제품의 이미지를 얻는 방법?




download commerce (11)

버전 1.3.2.1에서 실행 중이지만 클라이언트의 서버에서 Magento 1.3.0을 사용했기 때문에 이전 버전의 코드를 사용하여 로컬 사본,

echo $this->helper('catalog/image')->init($_product)->resize(163, 100);

, 클라이언트 설치시 작동하지 않습니다.

Magento에서 반환 한 결과를 보면 버전 1.3.0이 실제로 스킨의 미디어 폴더를 가리 키지 만 URL을 반환합니다.

이미지의 절대 이미지 경로를 얻을 수있는 방법이 있습니까?
또는 미디어 디렉토리가 루트에 있어야한다고 Magento에게 알려주는 다른 곳에서 변경해야합니까?


Answers

제품 ID를 사용하여 Magento에서 제품 이미지를 얻으십시오.

    $product_id = $_POST['product_id'];
    $storeId    = Mage::app()->getStore()->getId();
    $loadpro    = Mage::getModel('catalog/product')->load($product_id);

    $mediaApi      =  Mage::getModel("catalog/product_attribute_media_api");
    $mediaApiItems = $mediaApi->items($loadpro->getId());
    foreach ($mediaApiItems as $item) {
            //for getting existing Images
            echo $item['file'];
            }

(string)Mage::helper('catalog/image')->init($product, 'image');

이 이미지는 CDN에서 호스팅되는 경우에도 이미지 URL을 제공합니다.


어떤 경우에는 $this-> Mage:: 를 대체하려고 할 수 있습니다. 문자열로 변환해야합니다.

내 경우에는 DirectResize 확장 (직접 링크)을 사용 하고 있으므로 내 코드는 다음과 같습니다.

(string)Mage::helper('catalog/image')->init($_product, 'image')->directResize(150,150,3)

비율 옵션 (세 번째 매개 변수)은 다음과 같습니다.

  • 비례하지 않습니다. 이미지의 너비 및 높이 값의 크기가 조정됩니다.
  • 비례, 너비 값에 따라 2
  • 비례, 높이 값 3 기준
  • 새 이미지의 비례는 너비 및 높이 값에 맞을 수 있습니다. 4
  • 비례항. 새 이미지는 너비와 높이 값이있는 영역을 포함합니다.

업데이트 : here 다른 정보 및 버전

플러그인이없는 일반적인 방법 은 다음과 같습니다.

(string)Mage::helper('catalog/image')->init($_product, 'image')->resize(150)

'이미지'를 '작은 이미지'또는 '미리보기'로 바꿀 수 있습니다.


<img src='.$this->helper('catalog/image')->init($product, 'small_image')->resize(225, 225).' width=\'225\' height=\'225\'/>

echo $_product->getImageUrl();

이 Product 클래스의 메서드는 당신을 위해 트릭을 수행해야합니다.


$model = Mage::getModel('catalog/product'); //getting product model
$_products = $model->getCollection(); //getting product object for particular product id
foreach($_products as $_product) { ?>
    <a href = '<?php echo $model->load($_product->getData("entity_id"))->getUrl_path(); ?>'> <img src= '<?php echo $model->load($_product->getData("entity_id"))->getImageUrl();  ?>' width="75px" height="75px"/></a>
     <?php echo "<br/>".$model->load($_product->getData("entity_id"))->getPrice()."<br/>". $model->load($_product->getData("entity_id"))->getSpecial_price()."<br/>".$model->load($_product->getData("entity_id"))->getName()?>
<?php 

이미지 유형을 설정해야합니다 : small_image 또는 image

echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(163, 100);

나는 최근에 이것도 할 필요가 있었다. .. 내가 그것을 얻었던 방법은 여기에서있다 :

$_product->getMediaGalleryImages()->getItemByColumnValue('label', 'LABEL_NAME')->getUrl();

희망이 당신을 돕는다!


먼저 Magento 관리자에서 기본, 작고 축소판 이미지를 선택했는지 확인해야합니다.

관리 -> 카탈로그 -> 제품 -> 제품 -> 이미지 관리

그런 다음 이미지 역할 (기본, 작게, 미리보기)을 선택하십시오.

다음을 사용하여 이미지를 호출합니다.

echo $ this-> helper ( 'catalog / image') -> init ($ _ product, 'small_image') -> resize (163, 100);

희망이 당신을 도와줍니다.


다음은 컬렉션의 모든 제품에 대한 모든 이미지 데이터를로드하는 방법입니다. 그 순간 Mage :: getModel에서 Mage :: helper로 전환하여 제품을 다시로드해야하는 이유가 확실하지 않지만 완료되어야합니다. 나는 magento image soap api에서이 코드를 리버스 엔지니어링했습니다. 그래서 나는 그 코드가 정확하다고 확신합니다.

나는 '39'와 동일한 벤더 코드로 제품을로드하도록 설정했지만 모든 속성으로 변경하거나 모든 제품을로드하거나 원하는 컬렉션을로드 할 수 있습니다 (현재있는 제품을 보여주는 phtml 파일의 컬렉션 포함). 화면!)

$collection = Mage::getModel('catalog/product')->getCollection();
$collection->addFieldToFilter(array(
    array('attribute'=>'vendor_code','eq'=>'39'),
));

$collection->addAttributeToSelect('*');

foreach ($collection as $product) {

    $prod = Mage::helper('catalog/product')->getProduct($product->getId(), null, null);

    $attributes = $prod->getTypeInstance(true)->getSetAttributes($prod);

    $galleryData = $prod->getData('media_gallery');

    foreach ($galleryData['images'] as &$image) {
        var_dump($image);
    }

}

@ 조나단 데이 의 대답은 훌륭하고 대단히 도움이되었습니다. 그러나 setup 클래스를 Mage_Customer_Model_Entity_Setup setup 하면 Magento가 모든 작업을 수행 할 수 있습니다.

<!-- config.xml Example -->
<?xml version="1.0"?>
<config>
    <global>
        <resources>
            <acme_module_setup>
                <setup>
                    <module>Acme_Module</module>
                    <class>Mage_Customer_Model_Entity_Setup</class>
                </setup>
                <connection>
                    <use>core_setup</use>
                </connection>
            </acme_module_setup>
        </resources>
    </global>
</config>

다음은 mysql4-install-XXXphp 파일입니다.

<?php

$installer = $this;
/* @var $installer Mage_Customer_Model_Entity_Setup */

$installer->startSetup();

$installer->addAttribute(
    'customer',
    'acme_imported',
    array(
        'group'                => 'Default',
        'type'                 => 'int',
        'label'                => 'Imported into Acme',
        'input'                => 'select',
        'source'               => 'eav/entity_attribute_source_boolean',
        'global'               => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_STORE,
        'required'             => 0,
        'default'              => 0,
        'visible_on_front'     => 1,
        'used_for_price_rules' => 0,
        'adminhtml_only'       => 1,
    )
);

$installer->endSetup();

위의 adminhtml_onlyused_in_forms 논리를 모두 처리합니다. 또한 정의 group 은 그것을 정의하여 속성 그룹에 할당합니다.





magento