4

管理者が Magento の cms ページに画像を追加し、画像のサイズを変更すると、フロントエンドの画像は元のサイズを保持しますが、スケーリングされます。

ページを保存するときに画像を小さいサイズで保存する解決策はありますか?

4

1 に答える 1

3

デフォルトのマジェントでこれが起こる方法はありません。ただし、cms ページに保存されたデータを監視するモジュールをまとめることができます。たとえば、次のイベントを取り上げます。

cms_page_prepare_save

パラメータ付き:

array(’page’ ⇒ $model, ‘request’ ⇒ $this→getRequest())

次の 3 つのファイルのみからモジュールを作成できます。

/app/etc/Electricjesus_Cms.xml:

<?xml version="1.0" encoding="UTF-8"?>
<config>
    <modules>
        <Electricjesus_Cms>
            <active>true</active>
            <codePool>local</codePool>
        </Electricjesus_Cms>
    </modules>
</config>

/app/code/local/Electricjesus/Cms/etc/config.xml:

<?xml version="1.0"?>
<config>
    <modules>
        <Electricjesus_Cms>
            <version>0.1.0</version>
        </Electricjesus_Cms>
    </modules>
    <global>
        <models>
            <cms>
                <class>Electricjesus_Cms_Model</class>
            </cms>
        </models>
        <events>
            <cms_page_prepare_save>
                <observers>
                    <prepareSave>
                        <class>cms/observer</class>
                        <method>prepareSave</method>
                    </prepareSave>
                </observers>
            </cms_page_prepare_save>
        </events>        
    </global>
</config>

/app/code/local/Electricjesus/Cms/Model/Observer.php:

<?php
class Electricjesus_Cms_Model_Observer {
    function prepareSave ( $observer ) {
       $request = $observer->getRequest();
       $params = $request->getParams();
       // scan the request and params for stuff related with the images.. 
       // find out scaling and pass into a good resizer like TimThumb or
       // Zend_Filter_ImageSize etc.
    }
}

上記の回答は完全ではありませんが、ここから始めるのが良いでしょう。もっと時間があれば、いつでも完全なソリューションを開発しようとします。

別の方法:

上でTimThumbについて言及したので、これを magento ルートにデプロイして、通常の WYSIWYG エディターの代わりに HTML エディターを介して画像の追加を開始することもできます。ウェブサイトのルート ディレクトリに thumb.php をインストールする場合は、次のように使用できます。

<img src="/thumb.php?src=images/image.jpg&w=100&h=50" alt="Hey" />

幸運を!

于 2012-04-20T00:07:34.617 に答える