Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

[MOD] Переключение вида Список <-> Таблица с запоминанием


Recommended Posts

Делаем следующее:

CSS: добавляем в конец

/*=Category view*/
.view-buttons{float:left;margin-top: 7px;}
.view-buttons a{display:inline-block;height:16px;width:16px;margin-left:7px;}
.view-buttons a#grid{background:url('../image/view-table.png') no-repeat 0 0;}
.view-buttons a#list{background:url('../image/view-list.png') no-repeat 0 0;}
.view-buttons a.onpress{background-position:0 -16px!important;}

.grid{list-style-type:none;margin:5px 0;padding:0;text-align: center;}
.grid li{float: left;height: 215px;width: 25%;/*width: 32%;*/}
.grid .right{min-height: 50px;}
.grid .title{display:block; margin: 3px 0;}

.list{list-style-type:none;margin:5px 0;padding:0;overflow:hidden;}
.list li{clear:both;float:none;overflow:hidden;padding:20px;}
.list li + li{border-top:1px dotted #999999;}
.list .title{display:block;margin:0 0 10px;}
.list .main{float:left;}
.list .main .left{float:left;}
.list .main .left a{display:block;text-decoration:none;}
.list .main .right{float:right;margin: 0 20px;padding-top: 10px;}
.list .main .right .model{display:block;}
.list .other{float:right; padding-top: 10px;}
.list .other img{display:block;margin: 3px 0;}
/*=End category view */

HTML: в category.tpl заменяем

<table class="list">
      <?php for ($i = 0; $i < sizeof($products); $i = $i + 4) { ?>
      <tr>
        <?php for ($j = $i; $j < ($i + 4); $j++) { ?>
        <td width="25%"><?php if (isset($products[$j])) { ?>
          <a href="<?php echo $products[$j]['href']; ?>"><img src="<?php echo $products[$j]['thumb']; ?>" title="<?php echo $products[$j]['name']; ?>" alt="<?php echo $products[$j]['name']; ?>" /></a><br />
          <a href="<?php echo $products[$j]['href']; ?>"><?php echo $products[$j]['name']; ?></a><br />
          <span style="color: #999; font-size: 11px;"><?php echo $products[$j]['model']; ?></span><br />
          <?php if ($display_price) { ?>
          <?php if (!$products[$j]['special']) { ?>
          <span style="color: #900; font-weight: bold;"><?php echo $products[$j]['price']; ?></span>
          <?php } else { ?>
          <span style="color: #900; font-weight: bold; text-decoration: line-through;"><?php echo $products[$j]['price']; ?></span> <span style="color: #F00;"><?php echo $products[$j]['special']; ?></span>
          <?php } ?>
          <a class="button_add_small" href="<?php echo $products[$j]['add']; ?>" title="<?php echo $button_add_to_cart; ?>" > </a>
		  <?php } ?>
          <br />
          <?php if ($products[$j]['rating']) { ?>
          <img src="catalog/view/theme/default/image/stars_<?php echo $products[$j]['rating'] . '.png'; ?>" alt="<?php echo $products[$j]['stars']; ?>" />
          <?php } ?>
          <?php } ?></td>
        <?php } ?>
      </tr>
      <?php } ?>
    </table>

на

<ul class="<?php echo $view_mode; ?>" id="view">
      <?php foreach ($products as $product) { ?>
        <li>
          <div class="main">
            <div class="left">
              <a href="<?php echo $product['href']; ?>" class="thumb" rel="<?php echo $product['compare_thumb']; ?>">
                <img src="<?php echo $product['thumb']; ?>" title="<?php echo $product['name']; ?>" alt="<?php echo $product['name']; ?>"  id="image-<?php echo $product['product_id']; ?>" />
              </a>
            </div>
            <div class="right">
              <a href="<?php echo $product['href']; ?>" class="title"><?php echo $product['name']; ?></a>
              <span class="model"><?php echo $product['model']; ?></span>
            </div>
          </div>
          <div class="other">
            <?php if ($display_price) { ?>
            <?php if (!$product['special']) { ?>
            <span style="color: #900; font-weight: bold;"><?php echo $product['price']; ?></span>
            <?php } else { ?>
            <span style="color: #900; font-weight: bold; text-decoration: line-through;"><?php echo $product['price']; ?></span> <span style="color: #F00;"><?php echo $product['special']; ?></span>
            <?php } ?>
            <a class="button_add_small" href="<?php echo $product['add']; ?>" title="<?php echo $button_add_to_cart; ?>" > </a>
  		      <?php } ?>
            <br />
            <?php if ($product['rating']) { ?>
            <img src="catalog/view/theme/default/image/stars_<?php echo $product['rating'] . '.png'; ?>" alt="<?php echo $product['stars']; ?>" />
            <?php } ?>
          </div>
        </li>
      <?php } ?>
    </ul>

заменяем

<div class="sort">
      <div class="div1">
        <select name="sort" onchange="location = this.value">
          <?php foreach ($sorts as $sorts) { ?>
          <?php if (($sort . '-' . $order) == $sorts['value']) { ?>
          <option value="<?php echo $sorts['href']; ?>" selected="selected"><?php echo $sorts['text']; ?></option>
          <?php } else { ?>
          <option value="<?php echo $sorts['href']; ?>"><?php echo $sorts['text']; ?></option>
          <?php } ?>
          <?php } ?>
        </select>
      </div>
      <div class="div2"><?php echo $text_sort; ?></div>
    </div>

на

<div class="sort">
      <div class="view-buttons">
        <a id="grid" class="change-view<?php echo ($view_mode == 'grid' ? ' onpress' : ''); ?>"></a>
        <a id="list" class="change-view<?php echo ($view_mode == 'list' ? ' onpress' : ''); ?>"></a>
      </div>
      <div class="div1">
        <select name="sort" onchange="location = this.value">
          <?php foreach ($sorts as $sorts) { ?>
          <?php if (($sort . '-' . $order) == $sorts['value']) { ?>
          <option value="<?php echo $sorts['href']; ?>" selected="selected"><?php echo $sorts['text']; ?></option>
          <?php } else { ?>
          <option value="<?php echo $sorts['href']; ?>"><?php echo $sorts['text']; ?></option>
          <?php } ?>
          <?php } ?>
        </select>
      </div>
      <div class="div2"><?php echo $text_sort; ?></div>
    </div>

перед

<?php echo $footer; ?>

вставляем

<script type="text/javascript"><!--
  $('.change-view').click(function(){
    $('#view').removeClass().addClass($(this).attr('id'));
    $('.change-view').removeClass('onpress');
    $(this).addClass('onpress');
    $.post('<?php echo $view_action; ?>', 'view=' + $(this).attr('id'));
  });
//--></script>

PHP: в category.php, после

$this->data['button_add_to_cart'] = $this->language->get('button_add_to_cart');
добавляем

$this->data['view_action'] = HTTP_SERVER . 'index.php?route=product/category/view';
$this->data['view_mode'] = (isset($this->session->data['view_mode']) ? $this->session->data['view_mode'] : 'grid');

В конец файла перед закрытием класса вставляем метод

public function view() {
    if ($this->request->server['REQUEST_METHOD'] == 'POST' && isset($this->request->post['view'])) {
      $this->session->data['view_mode'] = $this->request->post['view'];
    }
  }

Иконки видов: кидаем в папку с изображениями вашего шаблона

view_icons.zip

Собственно и всё.

Временную демку можно глянуть тут

  • +1 6
Надіслати
Поділитися на інших сайтах

Да просто, эту строчку

$this->data['view_mode'] = (isset($this->session->data['view_mode']) ? $this->session->data['view_mode'] : 'grid');

Меняем на

$this->data['view_mode'] = (isset($this->session->data['view_mode']) ? $this->session->data['view_mode'] : 'list');

Найди 1 отличие)

  • +1 1
Надіслати
Поділитися на інших сайтах

Спасибо получилось

а Вы не расматривали вариант вывода например первых 300 знаков описания в варианте Лист ?

как я понял сейчас поля полностью идентичны что в варианте грид что в лист

Надіслати
Поділитися на інших сайтах

Идентичны, меняется только вид.

Можно вытащить первые n слов из описания и управлять ним с CSS.

Вот обрезка по словам:

private function cropTextByWord($text, $counttext = 10, $sep = ' ') { // исходный текст, сколько слов выводить, какой разделитель для слов
    $words = split($sep, $text);
    if ( count($words) > $counttext )
    $text = join($sep, array_slice($words, 0, $counttext));
    return $text;
  }
Надіслати
Поділитися на інших сайтах

Вы имеете ввиду что каким то образом можно средствами CSS добиться того что в варианте LISt текст будет отображаться а в варианте GRID нет ? если да то можно чуточку подробней ?

спасибо

Надіслати
Поділитися на інших сайтах

snastik, для текста в grid_mode в css прописать свойство display:none;

.grid .short-descr{display:none;}

Надіслати
Поділитися на інших сайтах

  • 1 month later...

Кстати, в последней версии OpenCart все усложнили яваскриптом... зачем?

  • +1 1
Надіслати
Поділитися на інших сайтах

  • 4 weeks later...

Подскажите,

1) в каком файле нужно воткнуть слово "Режим отображение"? Чтобы эти слова стояли перед выбором отображения товаров

2) Где нужно поправить код чтобы по умолчанию товары выводились списком? Разобрался :) написано во втором посте

Надіслати
Поділитися на інших сайтах


  • 2 weeks later...

2011-08-05 0:06:02 - PHP Notice:  Undefined index: compare_thumb in /www/sites/en-shop.zp.ua/public_html/catalog/view/theme/default/template/product/category.tpl on line 63
2011-08-05 0:06:02 - PHP Notice:  Undefined index: product_id in /www/sites/en-shop.zp.ua/public_html/catalog/view/theme/default/template/product/category.tpl on line 64
2011-08-05 0:06:02 - PHP Notice:  Undefined index: compare_thumb in /www/sites/en-shop.zp.ua/public_html/catalog/view/theme/default/template/product/category.tpl on line 63
2011-08-05 0:06:02 - PHP Notice:  Undefined index: product_id in /www/sites/en-shop.zp.ua/public_html/catalog/view/theme/default/template/product/category.tpl on line 64
2011-08-05 0:06:02 - PHP Notice:  Undefined index: compare_thumb in /www/sites/en-shop.zp.ua/public_html/catalog/view/theme/default/template/product/category.tpl on line 63
2011-08-05 0:06:02 - PHP Notice:  Undefined index: product_id in /www/sites/en-shop.zp.ua/public_html/catalog/view/theme/default/template/product/category.tpl on line 64
2011-08-05 0:06:02 - PHP Notice:  Undefined index: compare_thumb in /www/sites/en-shop.zp.ua/public_html/catalog/view/theme/default/template/product/category.tpl on line 63
2011-08-05 0:06:02 - PHP Notice:  Undefined index: product_id in /www/sites/en-shop.zp.ua/public_html/catalog/view/theme/default/template/product/category.tpl on line 64
2011-08-05 0:06:02 - PHP Notice:  Undefined index: compare_thumb in /www/sites/en-shop.zp.ua/public_html/catalog/view/theme/default/template/product/category.tpl on line 63
2011-08-05 0:06:02 - PHP Notice:  Undefined index: product_id in /www/sites/en-shop.zp.ua/public_html/catalog/view/theme/default/template/product/category.tpl on line 64
2011-08-05 0:06:02 - PHP Notice:  Undefined index: compare_thumb in /www/sites/en-shop.zp.ua/public_html/catalog/view/theme/default/template/product/category.tpl on line 63
2011-08-05 0:06:02 - PHP Notice:  Undefined index: product_id in /www/sites/en-shop.zp.ua/public_html/catalog/view/theme/default/template/product/category.tpl on line 64
2011-08-05 0:06:02 - PHP Notice:  Undefined index: compare_thumb in /www/sites/en-shop.zp.ua/public_html/catalog/view/theme/default/template/product/category.tpl on line 63
2011-08-05 0:06:02 - PHP Notice:  Undefined index: product_id in /www/sites/en-shop.zp.ua/public_html/catalog/view/theme/default/template/product/category.tpl on line 64
2011-08-05 0:06:02 - PHP Notice:  Undefined index: compare_thumb in /www/sites/en-shop.zp.ua/public_html/catalog/view/theme/default/template/product/category.tpl on line 63
2011-08-05 0:06:02 - PHP Notice:  Undefined index: product_id in /www/sites/en-shop.zp.ua/public_html/catalog/view/theme/default/template/product/category.tpl on line 64


вот эти строчки


            <div class="left">
              <a href="<?php echo $product['href']; ?>" class="thumb" rel="<?php echo $product['compare_thumb']; ?>">
                <img src="<?php echo $product['thumb']; ?>" title="<?php echo $product['name']; ?>" alt="<?php echo $product['name']; ?>"  id="image-<?php echo $product['product_id']; ?>" />
              </a>
            </div>

Надіслати
Поділитися на інших сайтах


Очень добрые и очень занятые люди всегда здесь.

В чем беда? Дайте ссылку.

Надіслати
Поділитися на інших сайтах

2011-08-05 0:06:02 - PHP Notice:  Undefined index: compare_thumb in /www/sites/en-shop.zp.ua/public_html/catalog/view/theme/default/template/product/
category.tpl on line 63
2011-08-05 0:06:02 - PHP Notice:  Undefined index: product_id in /www/sites/en-shop.zp.ua/public_html/catalog/view/theme/default/template/product/
category.tpl on line 64
2011-08-05 0:06:02 - PHP Notice:  Undefined index: compare_thumb in /www/sites/en-shop.zp.ua/public_html/catalog/view/theme/default/template/product/
category.tpl on line 63
2011-08-05 0:06:02 - PHP Notice:  Undefined index: product_id in /www/sites/en-shop.zp.ua/public_html/catalog/view/theme/default/template/product/
category.tpl on line 64
2011-08-05 0:06:02 - PHP Notice:  Undefined index: compare_thumb in /www/sites/en-shop.zp.ua/public_html/catalog/view/theme/default/template/product/
category.tpl on line 63
2011-08-05 0:06:02 - PHP Notice:  Undefined index: product_id in /www/sites/en-shop.zp.ua/public_html/catalog/view/theme/default/template/product/
category.tpl on line 64
2011-08-05 0:06:02 - PHP Notice:  Undefined index: compare_thumb in /www/sites/en-shop.zp.ua/public_html/catalog/view/theme/default/template/product/
category.tpl on line 63
2011-08-05 0:06:02 - PHP Notice:  Undefined index: product_id in /www/sites/en-shop.zp.ua/public_html/catalog/view/theme/default/template/product/
category.tpl on line 64
2011-08-05 0:06:02 - PHP Notice:  Undefined index: compare_thumb in /www/sites/en-shop.zp.ua/public_html/catalog/view/theme/default/template/product/
category.tpl on line 63
2011-08-05 0:06:02 - PHP Notice:  Undefined index: product_id in /www/sites/en-shop.zp.ua/public_html/catalog/view/theme/default/template/product/
category.tpl on line 64
2011-08-05 0:06:02 - PHP Notice:  Undefined index: compare_thumb in /www/sites/en-shop.zp.ua/public_html/catalog/view/theme/default/template/product/
category.tpl on line 63
2011-08-05 0:06:02 - PHP Notice:  Undefined index: product_id in /www/sites/en-shop.zp.ua/public_html/catalog/view/theme/default/template/product/
category.tpl on line 64
2011-08-05 0:06:02 - PHP Notice:  Undefined index: compare_thumb in /www/sites/en-shop.zp.ua/public_html/catalog/view/theme/default/template/product/
category.tpl on line 63
2011-08-05 0:06:02 - PHP Notice:  Undefined index: product_id in /www/sites/en-shop.zp.ua/public_html/catalog/view/theme/default/template/product/
category.tpl on line 64
2011-08-05 0:06:02 - PHP Notice:  Undefined index: compare_thumb in /www/sites/en-shop.zp.ua/public_html/catalog/view/theme/default/template/product/
category.tpl on line 63
2011-08-05 0:06:02 - PHP Notice:  Undefined index: product_id in /www/sites/en-shop.zp.ua/public_html/catalog/view/theme/default/template/product/
category.tpl on line 64


это у меня в админке в там есть раздел ошибки вот там потсоянно это сыпится

Надіслати
Поділитися на інших сайтах


  • 1 month later...

Спасибо за отличный и нужный мод)

Жаль не работает чего-то.

Поставил все, ошибок нет, но при переключении вида, ничего не происходит... Может кто сталкивался?

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.