2012-11-06 7 views
11

में सेमी पन्नों से ब्लॉक प्रपत्र सामग्री के साथ पैरामीटर पारित करने के लिए मैं Magento में JSON प्रकार की तरह ब्लॉक कोड के साथ एक चर पास करना चाहते हैं,कैसे Magento

{{block type="multibanners/multibanners" category_id="9" name="multibanners" alias="multibanners" template="multibanners/multibanners.phtml"}} 
सेमी पृष्ठों सामग्री क्षेत्र से

, लेकिन मैं डॉन ' कुछ भी प्राप्त नहीं करते हैं।
यदि मैं आसानी से अपना मूल्य प्राप्त करने के बजाय कार्रवाई विधि के साथ ब्लॉक का उपयोग करता हूं। कोई भी जानता है कि मैं अपने कस्टम ब्लॉक के साथ चर कैसे पारित कर सकता हूं?

उत्तर

25

मैं% नहीं 100 सुनिश्चित करें कि आप क्या कह रहे हैं, लेकिन आप कोड से multibanners.phtml करने के लिए एक चर पारित करने के लिए ऊपर तो आपको एक और category_id="9" के समान गुण और multibanners.phtml में आप $this->getData("category_id"); का उपयोग कर परिणाम प्राप्त हो सकते बना सकते हैं कोशिश कर रहे हैं, तो

उदाहरण

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

multibanners.phtml में:

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

ठीक है मुझे और विवरण समझाएं। मैं ब्लॉक से श्रेणी_आईडी की तरह वैरिएबल पास करना चाहता हूं लेकिन मुझे $-- getData ('my_var') या $-- getMyVar() प्राप्त करने के लिए phtml या ब्लॉक में मान नहीं मिल सकते हैं। मैंने आपके कोड को आजमाया है लेकिन कुछ भी नहीं हुआ है। आशा है कि आपको वह मिल गया जो मैं करना चाहता हूं। –

+0

क्या आपके पास कैश सक्षम है और आप किस Magento का उपयोग कर रहे हैं? –

+0

मैं developemnt के कारण सभी प्रकार के कैश को अक्षम करता हूं और मैं Magento ver का उपयोग कर रहा हूं। 1.7.0.0। –

0

जब एक सेमी पृष्ठों पर ब्लॉक जोड़ने ब्लॉक कोड से शैली को हटा दें।

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

अपने phtml में category_id प्राप्त करने के लिए या ब्लॉक $this->getCategoryId() का उपयोग करें।

2

मुझे यह बहुत उपयोगी पाया और मैंने सोचा कि मैं समझाऊंगा कि अगर मैंने किसी और की मदद की तो मैंने क्या किया।

मेरे पास कुछ स्थिर ब्लॉक हैं जिनका उपयोग मैं बुनियादी गैर-बदलती जानकारी (लगभग-हमारे प्रकार के पृष्ठों) के साथ कुछ स्थिर पृष्ठों को बनाने के लिए करता हूं जिनमें कुछ फ़ोटो शामिल हैं। तस्वीरें बहुत बड़ी हैं (एक वेब पेज के लिए) और मैं Magento की आकार बदलने की सुविधा का उपयोग करना चाहता था। ऐसा करने का एकमात्र तरीका मैं यहां विचारों का उपयोग करना था। अब मेरे पास एक ब्लॉक है जिसमें मैं किसी भी सीएमएस स्थिर पृष्ठ/ब्लॉक पर शामिल कर सकता हूं जब मैं कई मानकों के साथ एक आकार बदलना चाहता हूं। यह एक subroutine की तरह है (क्या मुझे यह कहने की अनुमति है ?!; ओ)। वैसे भी, मैंने यह किया है।

ब्लॉक:

{{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"}} 

और 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; ?>"> 

नोट मैं एक आकृति परिवर्तन फ़ोल्डर में मेरी आकृति परिवर्तन छवियों को बचाने और छवि फ़ाइल नाम के लिए नया आकार जोड़ने तो मैं आसानी से देख सकते हैं कि क्या हो रहा है और फ़ाइलों का प्रबंधन।

पढ़ने के लिए धन्यवाद!

+0

बस सोच रहा है कि किसी ने इसे क्यों वोट दिया? हो सकता है कि मैंने इन मंचों के उद्देश्य को गलत समझा है, लेकिन मैंने सोचा कि हमारे अनुभव साझा करना इसका हिस्सा था? – PedroKTFC

+1

पेड्रोकेटीएफसी, मैं पूरी तरह से आपसे सहमत हूं। मुझे लगता है कि शत्रु नफरत करेंगे। व्यक्तिगत रूप से, मैंने आपका उत्तर उपयोगी पाया; lemme वोट ऊपर +1 धक्का;) – Jongosi

+1

धन्यवाद जोंगोसी! : ओ) – PedroKTFC

3

मुझे लगता है कि यहां समस्या उस ब्लॉक प्रकार से उत्पन्न होती है जिसे आप बुला रहे हैं। जब आप किसी प्रकार को परिभाषित करते हैं, तो आप Magento को उस मॉडल को लोड करने और उचित डेटा को पास करने के लिए कह रहे हैं - जो तब उस विशिष्ट मॉडल पर परिभाषित कार्यों का खुलासा करता है।

कोर ब्लॉक प्रकार "कोर/टेम्पलेट" का संदर्भ देने के लिए एक बेहतर समाधान हो सकता है जो -> getData() विधि का खुलासा करता है, और फिर डेटा के साथ काम करने और आउटपुट करने के लिए "मल्टीबैनर्स/मल्टीबैनर्स" मॉडल लोड करता है।

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

मुझे यकीन नहीं है कि 'मल्टीबैनर्स' लोड करने के लिए उचित वाक्यविन्यास क्या है, लेकिन मल्टीबैनर्स में।phtml इस तरह कुछ होगा:

<?php 

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

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

?>