БЛОГОДЖУМЛА - БЛОГ О ДЖУМЛА

Как вывести "Количество товаров на странице" не select-ом, а ссылками

  • Категория: Virtuemart 1
  • Автор:
  • Просмотров: 8201

joomla pagination products select virtuemart

Возникла необходимость сделать красивое переключение "Количество товаров на странице"

Открываем файл /administrator/components/com_virtuemart/classes/pageNavigation.class.php и в начале функции getLimitBox пишем:

 

 




	$Itemid = vmGet( $_REQUEST, 'Itemid', null );

	$manufacturer_id = vmGet( $_REQUEST, 'manufacturer_id', null );

	$limit = vmGet( $_REQUEST, 'limit', null );

	if($limit=='10000') $limit='Все';

	if(empty($limit)) $limit='20';

	$category_id = vmGet( $_REQUEST, 'category_id', null );

	$link = $mm_action_url."index.php?option=com_virtuemart&Itemid=$Itemid&category_id=$category_id&page=shop.browse";

	$link .= empty($manufacturer_id) ? '' : "&manufacturer_id=$manufacturer_id";

далее перед return $html;

пишем

 




	$html='';

	foreach ($limits as $key => $value) {

	if($limit==$value) {$class='limitbox active';} else {$class='limitbox';}

	$html .= '<a class="'.$class.'" href="'.$key.'">'.$value.'</a>&nbsp;';

	}

В итоге мы получили выбор количества товаров на странице ссылками. Остается только оформить стилями по вкусу по ТЗ. Каждая сылка имеет класс 'limitbox', активная - 'limitbox active'.

Наслаждаемся...

P.S. Для того чтобы наш хак работал только на frontend и не ломал нам админку, функция должен выглядеть вот так:

	
/* @return string The html for the limit # input box */
 function getLimitBox ( $link = '')
 {
 $limits = array();
 if (vmGet( $_REQUEST, 'pshop_mode', null )=='admin') {
 if (!empty($link) && strpos( 'limitstart=', $link) === false) { // insert limitstart in url if missing
 $link .= '&limitstart='.$this->limitstart;
 }
 for ($i=5; $i <= 30; $i+=5) {
 if (empty( $link)) {
 $limits[$i] = $i;
 } else {
 $limits[vmRoute($link.'&limit='.$i)] = $i;
 }
 }
 if (empty( $link)) {
 $limits[50] = 50;
 } else {
 $limits[vmRoute($link.'&limit=50')] = 50;
 }
 // build the html select list
 if (empty( $link)) {
 $html = ps_html::selectList( 'limit', $this->limit, $limits, 1, '', 'onchange="this.form.submit();"' );
 } else {
 $current = vmRoute($link.'&limit='.$this->limit);
 $html = ps_html::selectList( 'limit', $current, $limits, 1, '', 'onchange="location.href=this.value"' );
 }
 $html .= "\n<input type=\"hidden\" name=\"limitstart\" value=\"$this->limitstart\" />";
 } else {
 $Itemid = vmGet( $_REQUEST, 'Itemid', null );
 $manufacturer_id = vmGet( $_REQUEST, 'manufacturer_id', null );
 $limit = vmGet( $_REQUEST, 'limit', null );
 if($limit=='10000') $limit='Все';
 if(empty($limit)) $limit='20';
 $category_id = vmGet( $_REQUEST, 'category_id', null );
 $link = $mm_action_url."index.php?option=com_virtuemart&amp;Itemid=$Itemid&amp;category_id=$category_id&amp;page=shop.browse";
 $link .= empty($manufacturer_id) ? '' : "&amp;manufacturer_id=$manufacturer_id";
 if (!empty($link) && strpos( 'limitstart=', $link) === false)
 {
 $link .= '&limitstart='.$this->limitstart;
 }
 for ($i=20; $i <= 200; $i+=180)
 {
 $limits[vmroute($link.'&limit='.$i)] = $i;
 }
 $limits[vmroute($link.'&limit=10000')] = 'Все';//если у Вас в категории больше 10000 товаров - поставьте, соответственно, большее число

 if (empty( $link))
 {
 $html = ps_html::selectList( 'limit', $this->limit, $limits, 1, '', 'onchange="this.form.submit();"' );
 } else {
 $current = vmRoute($link.'&limit='.$this->limit);
 $html = ps_html::selectList( 'limit', $current, $limits, 1, '', 'onchange="location.href=this.value"' );
 }
 $html .= "\n<input type=\"hidden\" name=\"limitstart\" value=\"$this->limitstart\" />";
 $html='';
 foreach ($limits as $key => $value) {
 if($limit==$value) {$class='limitbox active';} else {$class='limitbox';}
 $html .= '<a class="'.$class.'" href="'.$key.'">'.$value.'</a>&nbsp;';
 }
 }
 return $html;
 }

Так как в тексте функции есть кириллические символы - обязательно сохраняем в кодировке UTF-8 без ВОМ

 

UPDATE

Добавил вложение с работающим вариантом с сайта http://goldnews.ru/

Вложения:
Доступ по ссылке (http://beagler.ru/files/pageNavigation.class.rar)pageNavigation.class.rar
Back to top