2012-11-06 26 views
11

Tôi muốn vượt qua một biến với mã khối như kiểu JSON trong Magento,Làm thế nào để vượt qua tham số với nội dung hình thức khối từ các trang cms trong Magento

{{block type="multibanners/multibanners" category_id="9" name="multibanners" alias="multibanners" template="multibanners/multibanners.phtml"}} 

từ cms trang khu vực nội dung, nhưng tôi don' t nhận được bất kỳ điều gì.
Nếu tôi sử dụng phương pháp chặn với hành động hơn là tôi dễ dàng nhận được giá trị của mình. Bất cứ ai cũng biết làm thế nào tôi có thể vượt qua biến với khối tùy chỉnh của tôi?

Trả lời

25

Tôi không chắc chắn 100% những gì bạn đang yêu cầu, nhưng nếu bạn đang cố gắng để vượt qua một biến để multibanners.phtml từ mã trên sau đó bạn có thể tạo ra thuộc tính khác tương tự như category_id="9" và trong multibanners.phtml bạn có thể nhận được giá trị sử dụng $this->getData("category_id");

ví dụ

{{block ... my_var="value here" ... template="multibanners/multibanners.phtml"}} 

Trong multibanners.phtml:

$this->getData('my_var'); 
+0

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. –

+0

Bạn có bật bộ nhớ cache và bạn đang sử dụng phiên bản Magento nào không? –

+0

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. –

0

Khi thêm khối trên một trang cms loại bỏ phong cách từ mã khối.

{{block type="multibanners/multibanners" name="multibanners" alias="multibanners" template="multibanners/multibanners.phtml" category_id="8"}} 

Để lấy category_id trong phtml hoặc Chặn sử dụng $this->getCategoryId().

2

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!

+0

Chỉ cần tự hỏi tại sao ai đó bỏ phiếu này xuống? Có lẽ tôi đã hiểu lầm mục đích của các diễn đàn này nhưng tôi nghĩ rằng chia sẻ kinh nghiệm của chúng tôi là một phần của nó? – PedroKTFC

+1

PedroKTFC, tôi hoàn toàn đồng ý với bạn. Tôi đoán ghét sẽ ghét. Cá nhân, tôi thấy câu trả lời của bạn hữu ích; lemme đẩy phiếu bầu lên +1;) – Jongosi

+1

Cảm ơn Jongosi! : o) – PedroKTFC

3

Tôi nghĩ rằng vấn đề ở đây xuất phát từ loại khối bạn đang gọi. Khi bạn định nghĩa một kiểu, bạn đang yêu cầu Magento tải mô hình đó và chuyển nó vào dữ liệu thích hợp - mà sau đó chỉ cho thấy các hàm được định nghĩa trên mô hình cụ thể đó.

Một giải pháp tốt hơn có thể là tham khảo loại lõi "lõi/mẫu" hiển thị phương thức -> getData(), sau đó tải mô hình "multibanners/multibanners" để làm việc và xuất dữ liệu.

{{block type="core/template" category_id="9" name="multibanners" alias="multibanners" template="multibanners/multibanners.phtml"}} 

Tôi không chắc cú pháp thích hợp là tải 'multibanners', nhưng trong multibanners.phtml sẽ có dạng như sau:

<?php 

$catId = $this->getData('category_id'); 
$multibanner = Mage::getModel('multibanners/multibanners')->load($catId); 

/** 
** Generate some output here. 
*/ 

?> 
Các vấn đề liên quan