Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Задания программисту Метод сортировки для VirtueMart

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
OgecuT
Отправлено: 24 Ноября, 2014 - 14:30:26
Post Id


Новичок


Покинул форум
Сообщений всего: 10
Дата рег-ции: Нояб. 2014  


Помог: 0 раз(а)

[+]


cnm сайт каталог на virtuemart под управления joomla. Стандартно из админку можно задать сортировку по 1 полю для всего магазина некоторым категория нужно сделать свою сортировку. Для это нужно переопредилить шаблон вывода категорий(материалов) для этой категории это сделано. Дальше шаблон ссылается на стандартный метод сортировки
Код из шаблона:

CODE (htmlphp):
скопировать код в буфер обмена
  1. <div class="orderby-displaynumber">
  2.         <div class="width45 floatleft">
  3.                 <?php echo $this->orderByList['orderby']; ?>
  4.                 <?php echo $this->orderByList['manufacturer']; ?>
  5.                
  6.         </div>
  7.    
  8.         <div class="width15 floatleft display-number"><?php echo $this->vmPagination->getResultsCounter ();?><br/><?php echo $this->vmPagination->getLimitBox (); ?></div>
  9.         <div class="vm-pagination">
  10.                 <?php echo $this->vmPagination->getPagesLinks (); ?>
  11.                 <span style="float:right"><?php echo $this->vmPagination->getPagesCounter (); ?></span>
  12.         </div>
  13.  
  14.         <div class="clear"></div>
  15. </div> <!-- end of orderby-displaynumber -->


вот метод на который ссылаются

PHP:
скопировать код в буфер обмена
  1. function getOrderByList ($virtuemart_category_id = FALSE) {
  2.  
  3.                 $getArray = (JRequest::get ('get'));
  4.                 $link = '';
  5.                 $fieldLink = '';
  6.                 // remove setted variable
  7.                 unset ($getArray['globalCurrencyConverter'], $getArray['virtuemart_manufacturer_id'], $getArray['order'], $getArray['orderby']);
  8.  
  9.                 // foreach ($getArray as $key => $value )
  10.                 // $fieldLink .= '&'.$key.'='.$value;
  11.                 //vmdebug('getOrderByList',$getArray);
  12.                 foreach ($getArray as $key => $value) {
  13.                         if (is_array ($value)) {
  14.                                 foreach ($value as $k => $v) {
  15.                                         $fieldLink .= '&' . $key . '[' . $k . ']' . '=' . $v;
  16.                                 }
  17.                         }
  18.                         else {
  19.                                 if($key=='dir' or $key=='orderby') continue;
  20.                                 if(empty($value)) continue;
  21.                                 $fieldLink .= '&' . $key . '=' . $value;
  22.                         }
  23.                 }
  24.                 $fieldLink[0] = "?";
  25.                 $fieldLink = 'index.php' . $fieldLink;
  26.  
  27.                 $orderDirLink = '';
  28.                 $orderDirConf = VmConfig::get ('prd_brws_orderby_dir');
  29.                 $orderDir = JRequest::getWord ('dir', $orderDirConf);
  30.                 if ($orderDir != $orderDirConf ) {
  31.                         $orderDirLink .= '&dir=' . $orderDir;   //was '&order='
  32.                 }
  33.  
  34.                 $orderbyTxt = '';
  35.                 $orderby = JRequest::getVar ('orderby', VmConfig::get ('browse_orderby_field'));
  36.                 $orderby = $this->checkFilterOrder ($orderby);
  37.  
  38.                 $orderbyCfg = VmConfig::get ('browse_orderby_field');
  39.                 if ($orderby != $orderbyCfg) {
  40.                         $orderbyTxt = '&orderby=' . $orderby;
  41.                 }
  42.  
  43.                 $manufacturerTxt = '';
  44.                 $manufacturerLink = '';
  45.                 if (VmConfig::get ('show_manufacturers')) {
  46.  
  47.                         // manufacturer link list
  48.                         $virtuemart_manufacturer_id = JRequest::getInt ('virtuemart_manufacturer_id', '');
  49.                         if ($virtuemart_manufacturer_id != '') {
  50.                                 $manufacturerTxt = '&virtuemart_manufacturer_id=' . $virtuemart_manufacturer_id;
  51.                         }
  52.  
  53.                         // if ($mf_virtuemart_product_ids) {
  54.                         $query = 'SELECT DISTINCT l.`mf_name`,l.`virtuemart_manufacturer_id` FROM `#__virtuemart_manufacturers_' . VMLANG . '` as l';
  55.                         $query .= ' JOIN `#__virtuemart_product_manufacturers` AS pm using (`virtuemart_manufacturer_id`)';
  56.                         $query .= ' LEFT JOIN `#__virtuemart_products` as p ON p.`virtuemart_product_id` = pm.`virtuemart_product_id` ';
  57.                         $query .= ' LEFT JOIN `#__virtuemart_product_categories` as c ON c.`virtuemart_product_id` = pm.`virtuemart_product_id` ';
  58.                         $query .= ' WHERE p.`published` =1';
  59.                         if ($virtuemart_category_id) {
  60.                                                 $catscont = array();
  61.                                                 $this->untreeCat($virtuemart_category_id, $catscont);
  62.                                                 $qkat = ' AND c.`virtuemart_category_id` IN('.$virtuemart_category_id;
  63.                                                 foreach ($catscont as &$kat){
  64.                                                    $qkat .= ', '.$kat;
  65.                                                 }        
  66.                                                 $qkat .= ')';
  67.                                                 $query .= $qkat;
  68.                                         }
  69.                         $query .= ' ORDER BY l.`mf_name`';
  70.                         $this->_db->setQuery ($query);
  71.                         $manufacturers = $this->_db->loadObjectList ();
  72.                         //              vmdebug('my manufacturers',$this->_db->getQuery());
  73.                         $manufacturerLink = '';
  74.                         if (count ($manufacturers) > 0) {
  75.                                 $manufacturerLink = '<div class="orderlist">';
  76.                                 if ($virtuemart_manufacturer_id > 0) {
  77.                                         $manufacturerLink .= '<div><a title="" href="' . JRoute::_ ($fieldLink . $orderbyTxt . $orderDirLink , FALSE) . '">' . JText::_ ('COM_VIRTUEMART_SEARCH_SELECT_ALL_MANUFACTURER') . '</a></div>';
  78.                                 }
  79.                                 if (count ($manufacturers) > 1) {
  80.                                         foreach ($manufacturers as $mf) {
  81.                                                 $link = JRoute::_ ($fieldLink . '&virtuemart_manufacturer_id=' . $mf->virtuemart_manufacturer_id . $orderbyTxt . $orderDirLink,FALSE);
  82.                                                 if ($mf->virtuemart_manufacturer_id != $virtuemart_manufacturer_id) {
  83.                                                         $manufacturerLink .= '<div><a title="' . $mf->mf_name . '" href="' . $link . '">' . $mf->mf_name . '</a></div>';
  84.                                                 }
  85.                                                 else {
  86.                                                         $currentManufacturerLink = '<div class="title">' . JText::_ ('COM_VIRTUEMART_PRODUCT_DETAILS_MANUFACTURER_LBL') . '</div><div class="activeOrder">' . $mf->mf_name . '</div>';
  87.                                                 }
  88.                                         }
  89.                                 }
  90.                                 elseif ($virtuemart_manufacturer_id > 0) {
  91.                                         $currentManufacturerLink = '<div class="title">' . JText::_ ('COM_VIRTUEMART_PRODUCT_DETAILS_MANUFACTURER_LBL') . '</div><div class="activeOrder">' . $manufacturers[0]->mf_name . '</div>';
  92.                                 }
  93.                                 else {
  94.                                         $currentManufacturerLink = '<div class="title">' . JText::_ ('COM_VIRTUEMART_PRODUCT_DETAILS_MANUFACTURER_LBL') . '</div><div class="Order"> ' . $manufacturers[0]->mf_name . '</div>';
  95.                                 }
  96.                                 $manufacturerLink .= '</div>';
  97.                         }
  98.                         // }
  99.                 }
  100.  
  101.                 /* order by link list*/
  102.                 $orderByLink = '';
  103.                 $fields = VmConfig::get ('browse_orderby_fields');
  104.                 if (count ($fields) > 1) {
  105.                         $orderByLink = '<div class="orderlist">';
  106.                         foreach ($fields as $field) {
  107.                                 if ($field != $orderby) {
  108.  
  109.                                         $dotps = strrpos ($field, '.');
  110.                                         if ($dotps !== FALSE) {
  111.                                                 $prefix = substr ($field, 0, $dotps + 1);
  112.                                                 $fieldWithoutPrefix = substr ($field, $dotps + 1);
  113.                                                 //                              vmdebug('Found dot '.$dotps.' $prefix '.$prefix.'  $fieldWithoutPrefix '.$fieldWithoutPrefix);
  114.                                         }
  115.                                         else {
  116.                                                 $prefix = '';
  117.                                                 $fieldWithoutPrefix = $field;
  118.                                         }
  119.  
  120.                                         $text = JText::_ ('COM_VIRTUEMART_' . strtoupper ($fieldWithoutPrefix));
  121.  
  122.                                         $field = explode('.',$field);
  123.                                         if(isset($field[1])){
  124.                                                 $field = $field[1];
  125.                                         } else {
  126.                                                 $field = $field[0];
  127.                                         }
  128.                                         $link = JRoute::_ ($fieldLink . $manufacturerTxt . '&orderby=' . $field,FALSE);
  129.  
  130.                                         $orderByLink .= '<div><a title="' . $text . '" href="' . $link . '">' . $text . '</a></div>';
  131.                                 }
  132.                         }
  133.                         $orderByLink .= '</div>';
  134.                 }
  135.  
  136.  
  137.                 if($orderDir == 'ASC'){
  138.                         $orderDir = 'DESC';
  139.                 } else {
  140.                         $orderDir = 'ASC';
  141.                 }
  142.  
  143.                 if ($orderDir != $orderDirConf ) {
  144.                         $orderDirLink = '&dir=' . $orderDir;    //was '&order='
  145.                 } else {
  146.                         $orderDirLink = '';
  147.                 }
  148.  
  149.                 //$orderDirTxt = JText::_ ('COM_VIRTUEMART_SEARCH_ORDER_'.$orderDir);
  150.                 $orderDirTxt = JText::_ ('COM_VIRTUEMART_'.$orderDir);
  151.  
  152.                 $link = JRoute::_ ($fieldLink . $orderbyTxt . $orderDirLink . $manufacturerTxt,FALSE);
  153.  
  154.                 // full string list
  155.                 if ($orderby == '') {
  156.                         $orderby = $orderbyCfg;
  157.                 }
  158.                 $orderby = strtoupper ($orderby);
  159.  
  160.  
  161.                 $dotps = strrpos ($orderby, '.');
  162.                 if ($dotps !== FALSE) {
  163.                         $prefix = substr ($orderby, 0, $dotps + 1);
  164.                         $orderby = substr ($orderby, $dotps + 1);
  165.                         //                              vmdebug('Found dot '.$dotps.' $prefix '.$prefix.'  $fieldWithoutPrefix '.$fieldWithoutPrefix);
  166.                 }
  167.                 else {
  168.                         $prefix = '';
  169.                         //              $orderby = $orderby;
  170.                 }
  171.  
  172.                 $orderByList = '<div class="orderlistcontainer"><div class="title">' . JText::_ ('COM_VIRTUEMART_ORDERBY') . '</div><div class="activeOrder"><a title="' . $orderDirTxt . '" href="' . $link . '">' . JText::_ ('COM_VIRTUEMART_' . $orderby) . ' ' . $orderDirTxt . '</a></div>';
  173.                 $orderByList .= $orderByLink . '</div>';
  174.  
  175.                 $manuList = '';
  176.                 if (VmConfig::get ('show_manufacturers')) {
  177.                         if (empty ($currentManufacturerLink)) {
  178.                                 $currentManufacturerLink = '<div class="title">' . JText::_ ('COM_VIRTUEMART_PRODUCT_DETAILS_MANUFACTURER_LBL') . '</div><div class="activeOrder">' . JText::_ ('COM_VIRTUEMART_SEARCH_SELECT_MANUFACTURER') . '</div>';
  179.                         }
  180.                         $manuList = ' <div class="orderlistcontainer">' . $currentManufacturerLink;
  181.                         $manuList .= $manufacturerLink . '</div><div class="clear"></div>';
  182.  
  183.                 }
  184.  
  185.                 return array('orderby'=> $orderByList, 'manufacturer'=> $manuList);
  186.         }


нужно написать маленький метод без возможности управления с админки и других параметров сортировки просто что бы он сортировал товары рендомом. помогите пожалуйста
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« FreeLance »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB