список заказов в личном кабинете по странично или с подгрузкой

Есть простое решение выводить огромный список заказов в личном кабинете постранично или с подгрузкой, как товары в списке?

или плагин готовый есть?

12 ответов

  • 0
    Эрик Webasyst 12 марта 2018 11:08 #

    Если вам не удастся найти подходящее решение среди доступных в магазине Webasyst, вы можете заказать его у партнёров Webasyst.

    • 0
      Петр Петр 12 марта 2018 13:26 #

      спасибо я помню

      • +1

        Не уверен, но думаю там все достаточно просто. Посмотреть как сделано в товарах магазина и сделать по аналогии, но с заказами.

        • +1
          Петр Петр 12 марта 2018 15:10 #

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

          думаю можно хелпером подхватывать массив заказов в шаблоне, а потом выдавать как нужно с разбиением по страничкам

          • +2

            Ну если совсем затык будет - свистните, гляну как в Хабе разбивал топик на страницы, правда давно дело было, но работает.

            • +1
              Петр Петр 12 марта 2018 15:36 #

              хорошо, вообще надо чтобы кто нибудь запилил красивый плагин там, с настройками для вывода заказов, вроде ничего такого нет, путевого

            • +1
              Петр Петр 12 марта 2018 16:44 #

              вот еще подумал, если заказов много значит нужен какой нибудь поиск по заказам, думаю это можно в один плагин запихнуть


            • +1
              Петр Петр 13 марта 2018 17:39 #

              в общем плагин не нужен, я решил так

              {$orders_on_page = 10} количество заказов
              {$page_count = ceil(count($orders)/$orders_on_page)} <!-- количество страниц -->
              {$curr_page = $smarty.get.page-1}
              {if $curr_page < 0}{$curr_page = 0}{/if}
              
              {$in = $orders_on_page*$curr_page}{$in} <!-- начало вывода заказов по id -->
              
              {$inin = $in+$orders_on_page}{$inin} <!-- конец вывода заказов по id -->
              <br>
              {foreach $orders as $oid => $o}
              {if ($oid > $in AND $oid <= $inin)}
              {$oid}-{$o.id} здесь выводим заказы
              {/if}
              {/foreach}
              
              <div class="pagination">
              {wa_pagination total=$page_count attrs=['class' => "menu-h"]}
              </div>

              красота, всем спасибо

              но поиск бы не помешал

              • +1
                Петр Петр 13 марта 2018 17:56 #

                нет нужно {if ($oid > $in AND $oid <= $inin)} заменить на {if ($oid >= $in AND $oid < $inin)}

                там заказы начинаются с 0 ключа

              • +1
                Виктор Виктор 9 января 2019 11:03 #

                Петр, если вам плагин уже не нужен, то другим он точно понадобится!

                В каком файле использовать этот код? Как вы реализовали-то постраничную навигацию для заказов? Может опишите решение для остальных?

                • +1
                  Петр Петр 9 января 2019 12:21 #

                  скорее всего так и будет, сам список всех заказов находиться, на витрине в личном кабинете шаблон my.orders.html в бывшем дефолт 2

                  сейчас у нас шаблон сильно переделан, постраничную навигацию реализовал с помощью встроенной функции wa_pagination

                  вот весь блок со списком заказов 

                  <div id="page">
                  {$orders_on_page = 25}
                  {$page_count = ceil(count($orders)/$orders_on_page)} 
                  {$curr_page = $smarty.get.page-1}
                  {if $curr_page < 0}{$curr_page = 0}{/if}
                  {$in = $orders_on_page*$curr_page}
                  {$inin = $in+$orders_on_page}
                  <div class="pagination">
                  {wa_pagination total=$page_count attrs=['class' => "menu-pa"]}
                  </div>
                  <table class="table order">
                  	<tr class="tblprdt">
                  		<td class="align-center">Номер</td>
                  		<td class="align-center">Состояние</td>
                  		<td class="align-center">Наименование</td>
                  		{*<td class="align-center"></td>*}
                  		{*<td class="align-center"></td>*}
                  		<td class="align-center">Дата заказа</td>
                  	</tr>
                  {foreach $orders as $oid => $o}
                  {if ($oid >= $in AND $oid < $inin)}
                      <tr id="order-{$o.id}">
                          <td class="nowrap">
                              <a href="{$o.url}" class="bold">
                                  {$o.id_str}
                              </a>
                          </td>
                          <td class="nowrap">
                              <span class="nowrap order-status" style="{$o.state->getStyle(1)}">
                                  {$o.state->getName()}
                              </span>
                          </td>
                          <td class="name">
                              {if !empty($o.items)}
                                  {foreach $o.items as $i}
                                      {$i.name|escape} <span>x {$i.quantity}</span><br />
                                  {/foreach}
                              {/if}
                          </td>
                          {*<td>
                              {if $o.shipping_name}
                                  {$o.shipping_name|escape}
                              {else}
                                  &nbsp;
                              {/if}
                          </td>*}
                          {*<td>
                              {if $o.payment_name}
                                  {$o.payment_name|escape}
                              {else}
                                  &nbsp;
                              {/if}
                          </td>*}
                          <td class="nowrap">
                              <span>{$o.create_datetime|wa_datetime:'d-m'}</span>&nbsp;<span class="gray">{$o.create_datetime|wa_datetime:'H:i'}</span>
                          </td>
                      </tr>
                  {/if}
                  {foreachelse}
                  	<tr class="no-border">
                          <td>[`You have no order history yet.`]</td>
                    	</tr>
                  {/foreach}
                  </table>
                  
                  <div class="pagination">
                  {wa_pagination total=$page_count attrs=['class' => "menu-pa"]}
                  </div>
                  
                  </div>

                  Shop-Script 6, темя своя переделана


                  еще что-то подобное нужно реализовать в  административной части

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

                  не знаю сделали ли это в 7 или 8 версии ШС

                  • +1
                    Evgeny Fed Evgeny Fed 14 декабря 2021 12:57 #

                    Петр, а какую часть кода заменить на этот?

                    У нас вот так в my.orders.html

                    {strip}
                    <div class="container orders">
                    
                    	<h1 class="page-name {$theme_settings.tb_align}">[`My orders`]</h1>
                    	{include file="breadcrumbs.html" place='orders' inline}
                    
                    	<div class="tabpanel margin-bottom15">
                    	{$wa->myNav('tabs noauto with-border')}
                    	</div>
                    
                    	{if !empty($orders)}
                    	<div class="table_wrapper">
                    		<table class="table zebra hover">
                    		{foreach $orders as $o}
                    		    <tr id="order-{$o.id}">
                    		        <td class="nowrap">
                    		            <a href="{$o.url}" class="bold">
                    		                {$o.id_str}
                    		            </a>
                    		        </td>
                    		        <td class="nowrap">
                    		            <span class="nowrap order-status staff" style="{$o.state->getStyle(1)}">
                    		                {$o.state->getName()}
                    		            </span>
                    		        </td>
                    		        <td class="order-name">
                    		            {if !empty($o.items)}
                    		            	<ul class="order-list">
                    		                {foreach $o.items as $i}
                    		                	<li>
                    		                    	{$i.name|escape} <span class="bold nowrap">&nbsp;x {$i.quantity}</span>
                    		                    </li>
                    		                {/foreach}
                    		                </ul>
                    		            {/if}
                    		        </td>
                    		        <td class="order-shipping">
                    		            {if $o.shipping_name}
                    		                {$o.shipping_name|escape}
                    		            {else}
                    		                &nbsp;
                    		            {/if}
                    		        </td>
                    		        <td class="order-payment">
                    		            {if $o.payment_name}
                    		                {$o.payment_name|escape}
                    		            {else}
                    		                &nbsp;
                    		            {/if}
                    		        </td>
                    		        <td>
                    		            <span class="gray">{$o.create_datetime|wa_date:'humandate'}</span>
                    		        </td>
                    		    </tr>
                    		{/foreach}
                    		</table>
                    	</div>
                    	{else}
                    		<div class="well align-center">
                    		    <div class="h2" style="padding-bottom: 25px;">[`You have no order history yet.`]</div>
                    		    <p class="align-center uppercase">[`You can`] <a href="{$wa->getUrl('shop/frontend')}" class="button"><i class="fa fa-shopping-cart"></i> [`start shopping`]</a> [`now`]!
                    		    </p>
                    		</div>
                    	{/if}
                    
                    	{$wa->globals('isMyAccount', true)}
                    
                    	<!-- plugin hook: 'frontend_my_orders' -->
                    	{* @event frontend_my_orders.%plugin_id% *}
                    	{foreach $frontend_my_orders as $_}
                    	<div class="block">{$_}</div>
                    	{/foreach}
                    
                    <script>
                    
                    	function scrollTable() {
                    		var table_wrapper = $('.table_wrapper');
                    		var page_width = $('.page-name').outerWidth();
                    		table_wrapper.css('width', page_width);
                    
                    		if (!$('body').hasClass("touch")) {
                    			if($('.table_wrapper').hasClass('ps-container')) {
                    				$('.table_wrapper').perfectScrollbar('update');
                    			} else {
                    				$('.table_wrapper').perfectScrollbar();
                    			}
                    		}
                    	};
                    
                    	$(document).ready(scrollTable);
                    	$(window).resize(scrollTable);
                    </script>
                    
                    </div>
                    {/strip}
                    

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите