Aslında, ne kadar az PHP .phtml
o kadar iyidir, çünkü:
- PHP ve HTML karışımının her birinin ayrı ayrı deşifre edilmesi çok daha zordur, özellikle sadece bir tanesiyle rahat olanlar için (örn. ön uç tasarımcıları)
- tarayıcıda sunulacak olandan uzak, blokta sunucu koduyla etkileşim kurmak mantıklıdır - bu eski "endişelerin ayrılması" mantrasıdır.
Magento çekirdek dosyası /app/design/frontend/base/default/template/catalog/product/price.phtml
, acı verici bir durumdur. Bu HTML "sunum" kodu bir fiyat görüntüler. 471 satır uzunluğunda! Çoğunlukla PHP mantığı nedeniyle.
Daha .phtml
yalın ve daha temiz hale getirmek için :
gereksiz dizilerden kaçının <?php … ?>
, bunları tek bir parça halinde toplayın<?php … ?>
.phtml yerine Blok içine mümkün olduğunca çok PHP itin
Yukarıdakilere yardımcı olmak için , Blokta .phtml'de assign(‘myvar’,
[expression])
belirtilmeyen $ değişkenleri oluşturmak
için yararlanın $this->...
, böylece gerçekten özlü olabilirsiniz<?php echo $myvar; ?>
Magento'nun gelecekte daha temiz bir görünüm için Twig'i benimsemesini diliyorum
Yukarıdakileri, yukarıda verilen örneğin orijinal kodundan bir pasaja uygulayalım: /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) ?>
İlk adım: <?php … ?>
şunun gibi bir şeye ulaşmak için tekrarını kaldırın :
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)
?>
Yukarıdaki tüm PHP tek bir kod bloğu koyar.
2 + 3. Daha iyi bir şeye dönüşerek, bu kodu bloğuna taşıyın:
protected function _prepareLayout() {
$this->assign(‘minPrice’, $this->calculateMinPrice(…));
}
protected function calculateMinPrice(…) {
if ($this->getDisplayMinimalPrice() && $_minimalPriceValue && $_minimalPriceValue < $_product->getFinalPrice()) {
// etc...
}
}
Bunun _prepareLayout()
ve assign()
işlevlerinin kullanımına dikkat edin .
Şimdi .phtml dosyasının kıvrımlı kısmı sadece bu basit çizgiye indirgenebilir:
<?php echo $minPrice; ?>
Sanırım hepimiz bununla yaşayabiliriz!