Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Magento - manufacturers - problem
phpamator
post
Post #1





Grupa: Zarejestrowani
Postów: 328
Pomógł: 3
Dołączył: 10.07.2016
Skąd: UK-raine

Ostrzeżenie: (0%)
-----


Witajcie,

Pisząc a właściwie dopisując fragment do istniejącego kodu miałem w założeniu jako efekt końcowy dostać listę 10 losowo wybranych ID spośród kilkuset spełniających wymagania, coś jednak nie za bardzo mi wyszło bo zamiast 10 dostaję jeden albo wcale ....
nie moge dojść dlaczego tak się dzieje.
Oto kod:

  1. Witajcie,
  2.  
  3. Pisząc ten kod a właściwie dopisując jego fragment miałem w założeniu jako efekt końcowy dostać listę 10 losowo wybranych ID spośród kilkuset spełniających wymagania, coś jednak nie za bardzo mi wyszło bo zamiast 10 dostaję jeden albo wcale ....
  4. nie moge dojść dlaczego tak się dzieje.
  5. Oto kod:
  6.  
  7. [php]
  8. <?php
  9.  
  10. class EDPA_MegaNavigation_Block_Navigation extends Infortis_UltraMegamenu_Block_Navigation{
  11.  
  12. ....
  13.  
  14. // tu zaczynamy
  15. // dodajemy element menu
  16.  
  17. if($level_0_name == 'Brands'){
  18. $output .= "<li class='level0 nav-{$level_0_counter} level-top {$position} {$active} parent'>";
  19. $output .= "<a href='" . Mage::getBaseUrl().$data_level_0->getRequestPath(). "' class='level-top'><span>{$level_0_name}</span></span><span class='caret'> </span></a>";
  20. $subcategories = Mage::getModel('catalog/category')
  21. ->load($data_level_0->getId())
  22. //->setSort('id','asc')
  23. ->getChildren();
  24. // dostaję listę id's
  25. $cat_ids = explode(',', $subcategories);
  26.  
  27. $brand = array();
  28. // pobieram listę id's dla attribute = 'manufacturers'
  29. $attribute = Mage::getModel('eav/entity_attribute')
  30. ->loadByCode('catalog_product', 'manufacturer');
  31. $brands = Mage::getResourceModel('eav/entity_attribute_option_collection')
  32. ->setAttributeFilter($attribute->getData('attribute_id'))
  33. ->setStoreFilter(0, false);
  34.  
  35. // buduję listę brands których atrybute_id = 81
  36.  
  37. foreach($brands as $brand){
  38. // && $brand['show_hide'] == 0
  39. if($brand['attribute_id'] != 81){
  40. // jeśli różne od 81 idzie do osobnej listy - w ramach testu
  41. $other[] = ($brand['option_id']);
  42. }else{
  43. $allbrands[] = ($brand['option_id']);
  44. }
  45. }
  46. // wybieram losowo 10 sposrod id's
  47. $favbrands = array_rand($allbrands,10);
  48. $selected = Mage::getModel();
  49. $output .= "<ul class='level0 brands-ul'>";
  50. $a = '';
  51. foreach($cat_ids as $id) {
  52. // wpuszczam w petle i wybieram kolejno z listy $favbrand - tu powinno ich być 10 .... i jest ale magicznie nie wszystkie beda pokazane
  53. if (in_array($id, $favbrand)) {
  54. $brand = Mage::getModel('catalog/category')->load($id);
  55. $image = Mage::getUrl("media/catalog/category/") . $brand->getThumbnail();
  56. $url = Mage::getUrl().$brand->getRequestPath();
  57. $id = $this->getId();
  58. $output .= "<li class='brands-subnavigation'>";
  59. $output .= "<a href='{$url}'><img src='{$image}'></a>";
  60. $output .= "<div>".$id."</div>";
  61. $output .= "</li>";
  62.  
  63. }
  64. }
  65.  
  66. $output .= "<li style='' class='see-all-brands'><a href='".Mage::getBaseUrl().$data_level_0->getRequestPath()."'>See All</a></li>";
  67. $output .= "</ul>";
  68.  
  69. }elseif($level_0_name == 'Summer Sale'){
  70. $output .= "<li {$class}>";
  71. $output .= "<a href='" . Mage::getBaseUrl().$data_level_0->getRequestPath(). "' class='level-top red'><span>{$level_0_name}</span>{$caret}</a>";
  72.  
  73. }else {
  74.  
  75. $output .= "<li {$class} >";
  76. $output .= "<a href='" . $level_0_url . "' class='level-top '><span>{$level_0_name}</span>{$caret}</a>";
  77. // jako efekt działania wyświetlona zostanie lista manufacturers'ów w postaci ich znakow firmowych (logo)
  78.  
  79. }
  80.  
  81. ...


Ten post edytował PHPRexio 26.08.2016, 08:48:03
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
darko
post
Post #2





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Spróbuj dodać nieco losowości zapytaniu:

  1. $attribute = Mage::getModel('eav/entity_attribute')->loadByCode(Mage_Catalog_Model_Product::ENTITY, 'manufacturer');
  2. /** @var $attribute Mage_Eav_Model_Entity_Attribute */
  3. $collection = Mage::getResourceModel('eav/entity_attribute_option_collection')
  4. ->setAttributeFilter($attribute->getId())
  5. ->setStoreFilter(0, false);
  6. $collection->getSelect()->order(new Zend_Db_Expr('RAND()'));


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
Rysh
post
Post #3





Grupa: Zarejestrowani
Postów: 821
Pomógł: 111
Dołączył: 11.09.2006
Skąd: Biała Podlaska

Ostrzeżenie: (0%)
-----


Cytat(darko @ 27.08.2016, 13:45:00 ) *
Spróbuj dodać nieco losowości zapytaniu:

  1. $attribute = Mage::getModel('eav/entity_attribute')->loadByCode(Mage_Catalog_Model_Product::ENTITY, 'manufacturer');
  2. /** @var $attribute Mage_Eav_Model_Entity_Attribute */
  3. $collection = Mage::getResourceModel('eav/entity_attribute_option_collection')
  4. ->setAttributeFilter($attribute->getId())
  5. ->setStoreFilter(0, false);
  6. $collection->getSelect()->order(new Zend_Db_Expr('RAND()'));

Od kiedy jestem tutaj na forum, zawszę słyszę nigdy nie stosować ORDER BY RAND() - nie sądzę aby coś się zmieniło od tamtej pory.


--------------------
Go to the top of the page
+Quote Post
darko
post
Post #4





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


@Rysh - Nie przesadzaj, wydajność w tym przypadku nie ma kluczowego znaczenia, potrzeba 10 losowych rekordów spośród "kilkuset spełniających wymagania". Poza tym powodzenia z kolekcjami magento i wymyślaniem w jaki sposób wyciągnąć 10 losowych rekordów w inny sposób.


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 00:31