Panowie,
stawiając pierwsze kroki w Magento z przyzwyczajenia napakowałem wszystkiego jak leci do jednego pliku. Nie do końca rozumiem idee więc chciałbym zasięgnąć języka i może podpowiedzi jak powinienem to rozbić do postaci bardziej "Magento-podobnej" czyli co powinienem wrzucić do Model, co do Controller, Helper itd.
Oczywiście kod z pewnością pozostawia wiele do życzenia ale jak wspomniałem dopiero zacząłem (jakieś 3 tygodnie temu (IMG:
style_emoticons/default/smile.gif) .. od zera).
<?php
/*
* @category AMBeR
* @package AMBeR_Checkbox
* @author AMBR
* @date 12-07-2016
* @last edit 12-07-2016
* @copyright Copyright 2016 AMBeR
it
*/
class Amber_Checkbox_Adminhtml_FutureController extends Mage_Adminhtml_Controller_Action
{
public function indexAction()
{
$this->loadLayout();
$ajax = "<script src='https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js'></script>
<script> jQuery(document).ready(function(){
var total = $(this).find(\"input[class=tramp]:checked\").length;
jQuery(\".caret input[type='checkbox']\").change(function(){
if($(this).is(':checked')){
var value= true;
}else{
var value = false;
}
var brand = $(this).data('brand');
data = {brand: brand, value: value}
jQuery.ajax({
data: data,
url: 'checkbox/adminhtml/ajax',
method: 'POST',
success: function(result){
console.log(data, total);
}});
});
});
</script>";
$style = "<style>a{display: block;}.pico{width:150px;height:50px; background-color: #FF6700;color: #00a;}.inline:hover{box-shadow: #888888 3px 3px 3px;}.inline{display: flex; border-radius:5px;margin-bottom: 5px;margin-right: 5px;width: 170px; float: left;font-family: Verdana; font-size: 16px;}.tiname{position: relative;text-align: center;border-top-left-radius: 5px;border-bottom-left-radius: 5px;padding:10px;border: 1px solid rgba(100,120,100,0.5); height: 145px;width: 110px;}.sub{ border-top-right-radius: 5px;border-bottom-right-radius: 5px;text-align: center;padding:10px;border: 1px solid rgba(100,120,100,0.5);width: 20px; }.pic{z-index:2;width:100px;height:auto;}.sub{ border-top-right-radius: 5px;border-bottom-right-radius: 5px;text-align: center;padding:10px;border: 1px solid rgba(100,120,100,0.5);width: 20px; }</style>";
$brandbox = $ajax.$style."<h2>Other brands</h2><div class='bobo'>";
$favourite = $style."<h2>Favourites</h2><div class='bobo'>";
$attribute = Mage::getModel('eav/entity_attribute')->loadByCode('catalog_product', 'manufacturer');
$collection = Mage::getResourceModel('eav/entity_attribute_option_collection')->setAttributeFilter($attribute->getData('attribute_id'))->setStoreFilter(0, false);
$a = 0;
foreach($collection as $value) {
$brand = Mage::getModel('catalog/category')->load($value['option_id']);
$image = '../../../../../../media/catalog/category/'.$brand->getData('thumbnail');
$url = Mage::getUrl().$brand->getRequestPath();
$state = $value['show_brand'];
if($value['show_brand']==1 && $value['attribute_id']==81){
$state = 'checked';
$favourite .= "<a href='".$url."'><div class='inline'><div class='tiname'><img class='pic' src='{$image}'/>" . $value['value'] ."</div></a><div class='sub caret'><input id='".$value['option_id']."' class='tramp' name='check[]' data-brand=".$value['option_id']." type='checkbox' {$state}/></div></div>";
}else{
$state = '';
$brandbox .= "<a href='".$url."'><div class='inline'><div class='tiname'><img class='pic' src='{$image}'/>" . $value['value'] . "</div></a><div class='sub caret'><input id='".$value['option_id']."' class='tramp' name='check[]' data-brand=".$value['option_id']." type='checkbox' {$state}/></div></div>";
}
$a++;
//if($a==35){
//break;
//}
}
$favourite .="</div>";
$brandbox .="</div>";
$this->_addLeft($this->getLayout()->createBlock('core/text')->setText($favourite));
$this->_addContent($this->getLayout()->createBlock('core/text')->setText($brandbox));
$this->renderLayout();
}
}
?>
Trochę zamotane (IMG:
style_emoticons/default/wink.gif)
bo powinienem utworzyć layout i template albo block i tam wetknąć co nieco a tylko pobieranie danych i ich obróbkę do model i controller.
Szukam przykładów (v1.9) na podstawie których mógłbym co nieco rozkminić.
Niemniej, jesli ktoś mogłby mi podpowiedziećjak to przerobić ?
Pozdrawiam