वास्तव में, कम PHP .phtml
बेहतर है, क्योंकि:
- PHP और HTML का मिश्रण व्यक्तिगत रूप से उनमें से प्रत्येक की तुलना में बहुत कठिन है, खासकर उन लोगों के लिए जो उनमें से केवल एक के साथ सहज हैं (जैसे फ्रंट-एंड डिजाइनर)
- यह ब्लॉक में सर्वर कोड के साथ इंटरैक्शन को रखने के लिए तार्किक समझ में आता है, जो ब्राउज़र में प्रस्तुत किया जाना है, उससे दूर है - यह मंत्र "चिंताओं का पृथक्करण" है।
Magento कोर फ़ाइल /app/design/frontend/base/default/template/catalog/product/price.phtml
बिंदु में एक दर्दनाक मामला है। यह HTML "प्रस्तुति" कोड एक मूल्य प्रदर्शित करता है। यह ४1१ रेखीय है! ज्यादातर PHP तर्क के कारण।
अपने .phtml
झुकाव और क्लीनर बनाने के लिए :
के अनावश्यक दृश्यों से बचें <?php … ?>
, उन्हें एक साथ एक साथ विखंडू में बंडल करें<?php … ?>
.phtml के बजाय ब्लॉक में जितना हो सके उतना PHP पुश करें
उपरोक्त के साथ मदद करने के लिए, ब्लॉक में .phtml के assign(‘myvar’,
[expression])
बिना संदर्भित किए जा सकने वाले $ चर बनाने के लिए
उपयोग करें $this->...
, ताकि आप वास्तव में संक्षिप्त हो सकें।<?php echo $myvar; ?>
Magento के लिए भविष्य में भी एक स्वच्छ क्लीनर के लिए टहनी अपनाने की इच्छा है
आइए ऊपर दिए गए उदाहरण के मूल कोड से एक स्निपेट पर लागू करें: /app/design/frontend/base/default/template/catalog/product/price.phtml
<?php if ($this->getDisplayMinimalPrice() && $_minimalPriceValue && $_minimalPriceValue < $_product->getFinalPrice()): ?>
<?php $_minimalPriceDisplayValue = $_minimalPrice; ?>
<?php if ($_weeeTaxAmount && $_weeeHelper->typeOfDisplay($_product, array(0, 1, 4))): ?>
<?php $_minimalPriceDisplayValue = $_minimalPrice+$_weeeTaxAmount; ?>
<?php endif; ?>
….
<?php echo $_coreHelper->currencyByStore($_minimalPriceDisplayValue, $_storeId, true, false) ?>
पहला कदम: <?php … ?>
कुछ इस तरह से आने की पुनरावृत्ति को दूर करें:
if ($this->getDisplayMinimalPrice() && $_minimalPriceValue && $_minimalPriceValue < $_product->getFinalPrice()) {
$_minimalPriceDisplayValue = $_minimalPrice;
if ($_weeeTaxAmount && $_weeeHelper->typeOfDisplay($_product, array(0, 1, 4))) {
$_minimalPriceDisplayValue = $_minimalPrice+$_weeeTaxAmount;
}
…
echo $_coreHelper->currencyByStore($_minimalPriceDisplayValue, $_storeId, true, false)
?>
उपरोक्त सभी PHP को कोड के एक ही ब्लॉब में रखता है।
2 + 3. कुछ बेहतर अभी भी विकसित करना, इस कोड को उसके ब्लॉक में ले जाएं:
protected function _prepareLayout() {
$this->assign(‘minPrice’, $this->calculateMinPrice(…));
}
protected function calculateMinPrice(…) {
if ($this->getDisplayMinimalPrice() && $_minimalPriceValue && $_minimalPriceValue < $_product->getFinalPrice()) {
// etc...
}
}
इस के लिए _prepareLayout()
और assign()
कार्यों के उपयोग पर ध्यान दें ।
अब .phtml के उस खंड को घटाकर इस सरल रेखा को कम किया जा सकता है:
<?php echo $minPrice; ?>
मुझे लगता है कि हम सब उसी के साथ रह सकते हैं!