Tôi thấy điều này rất hữu ích và tôi nghĩ rằng tôi sẽ giải thích những gì tôi đã làm trong trường hợp nó giúp bất cứ ai khác.
Tôi có một vài khối tĩnh mà tôi sử dụng để xây dựng một số trang tĩnh với thông tin không thay đổi cơ bản (các trang loại chúng tôi) bao gồm một số ảnh. Các bức ảnh rất lớn (đối với một trang web) và tôi muốn sử dụng cơ sở thay đổi kích thước của Magento. Cách duy nhất tôi có thể làm việc để làm điều này là sử dụng các ý tưởng ở đây. Tôi bây giờ có một khối tôi có thể bao gồm trên bất kỳ cms trang tĩnh/khối khi tôi muốn có một hình ảnh thay đổi kích cỡ với một số tham số. Nó giống như một chương trình con (tôi có được phép nói điều đó không?) O). Dù sao, đây là những gì tôi đã làm.
Khối:
{{block type="core/template" name="display_resized_img" gimg="IMG_0559.JPG" gsize="300" gpath="/wysiwyg/ShopFront/" gclass="about-us" galt="The shop" template="utilities/display_resized_img.phtml"}}
và tập tin mã phtml:
<?php
/*
* Displays and resizes an image as requested from the block.
* The image is only resized if it hasn't been already.
*/
$img = $this->getData('gimg');
$size = $this->getData('gsize');
$path = $this->getData('gpath');
$class = $this->getData('gclass');
$alt = $this->getData('galt');
$resizePath = Mage::getBaseDir ('media') . $path . "resized/" . $size . $img;
if (!file_exists($resizePath)):
$imagePath = Mage::getBaseDir('media') . $path . $img;
$imageObj = new Varien_Image($imagePath);
$imageObj->constrainOnly(TRUE);
$imageObj->keepAspectRatio(TRUE);
$imageObj->keepFrame(FALSE);
$imageObj->resize($size, null);
$imageObj->save($resizePath);
endif;
$resizeUrl = Mage::getBaseUrl ('media') . $path . "resized/" . $size . $img;
?>
<img class="<?php echo $class; ?>" src="<?php echo $resizeUrl ?>" alt="<?php echo $alt; ?>">
Lưu ý tôi lưu hình ảnh thay đổi kích cỡ của tôi trong một thư mục thay đổi kích cỡ và thêm kích thước mới cho tên tập tin hình ảnh vì vậy tôi có thể dễ dàng xem những gì đang xảy ra và quản lý các tệp.
Cảm ơn bạn đã đọc!
Ok hãy để tôi giải thích thêm chi tiết. tôi muốn vượt qua biến như category_id từ khối nhưng tôi không thể nhận được giá trị trong phtml hoặc khối bằng cách sử dụng $ this-> getData ('my_var') hoặc $ this-> getMyVar() .Tôi đã thử mã của bạn nhưng không có gì xảy ra. Hy vọng bạn có những gì tôi muốn làm. –
Bạn có bật bộ nhớ cache và bạn đang sử dụng phiên bản Magento nào không? –
Tôi vô hiệu hóa tất cả các loại bộ nhớ cache do developemnt và tôi đang sử dụng Magento ver. 1.7.0.0. –