Вход • Регистрация

два простых вопроса

  • 21 августа 2014 г.
  • Здравствуйте, помогите пожалуйста, что и где нужно изменить что бы:
    1) сортировка товара всегда и везде начиналась с сортировки по имени
    2) как сделать что бы если товар на складе остался в единственном числе, то на сайте все товары с количеством 1 были не активными или равны 0.

    Очень жду помощи
    • 22 августа 2014 г.
    • 1/ вопрос:

      Стандартсный шаблон вывода товара не подойдет, надо чтоб цикл был такой:

      Код

      В файле: modules/shop/views/shop.view.list.php

      Используйте вместо:

      $rows = array(array(), array(), array(), array());

      $t = 0;
      foreach ($result["rows"] as $row => $value)
      {
      if($t > 3) $t = 0;
      $rows[$t][] = $value;
      $t++;
      }

      foreach ($rows as $value)
      {
      echo '<div class="shop-col">';
      foreach ($value as $row)
      {

      простое:

      foreach ($result["rows"] as $row) {...}



      Затем В файле modules/shop/shop.model.php после 38 строчку в которой $this->diafan = &$diafan;

      надо вставить

      Код

      if($this->diafan->_site->module == 'shop')
      {
      $this->diafan->_route->sort = 2;
      }



      Это по цене:
      Код
      $this->diafan->_route->sort = 1;
      • 22 августа 2014 г.
      • по второму вопросу думаю так:

        в файле shop.view.buy_form.php добавить условие

        Код

        if($result["row"]["count"] == "1") {$result["row"]["count"] == "0"}

        • 24 августа 2014 г.
        • а это мой shop.view.buy_form.php, но к сожалению ваш пример не работает, есть вариант что я не туда просто вставил его? я его поставил на 15 строчку.

          Код
          <?php
          /**
          * Шаблон кнопки «Купить», в котором характеристики, влияющие на цену выводятся в виде выпадающего списка
          *
          * @package Diafan.CMS
          * @author diafan.ru
          * @version 5.3
          * @license http://cms.diafan.ru/license.html
          * @copyright Copyright (c) 2003-2013 OOO «Диафан» (http://diafan.ru)
          */
          if (!defined('DIAFAN'))
          {
          include dirname(dirname(dirname(__FILE__))) . '/includes/404.php';
          }
          if($result["row"]["count"] == "1") {$result["row"]["count"] == "0"}

          if (! $result["result"]["access_buy"])
          return false;


          if (empty($result["row"]['price_arr']) && ! $result['result']["buy_empty_price"])
          return false;

          $action = '';
          if(! $result["result"]["cart_link"] || $result["row"]["no_buy"] || empty($result["row"]["count"]))
          {
          $action = 'buy';
          }
          elseif($result["result"]["wishlist_link"])
          {
          $action = 'wish';
          }
          echo '<div class="product-box-2"><div class="shop_pra">
          <form method="post" action="" class="shop_form ajax">
          <input type="hidden" name="good_id" value="'. $result["row"]["id"].'">
          <input type="hidden" name="module" value="shop">
          <input type="hidden" name="action" value="'.$action.'">
          <input type="hidden" name="ajax" value="">';

          if ($result["row"]["no_buy"] || empty($result["row"]["count"]))
          {
          echo '<div class="shop_no_buy shop_no_buy_good">' . $this->diafan->_('Товар временно отсутствует') . '</div>';
          $hide_submit = true;
          $waitlist = true;
          }
          if(! $result["result"]["cart_link"])
          {
          $hide_submit = true;
          }


          // у товара несколько цен
          if ($result["row"]["price_arr"])
          {
          echo '<div class="shop_form_param">';
          foreach ($result["result"]["depends_param"] as $param)
          {
          if(! empty($result["row"]["param_multiple"][$param["id"]]))
          {
          if(count($result["row"]["param_multiple"][$param["id"]]) == 1)
          {
          foreach($result["row"]["param_multiple"][$param["id"]] as $value => $depend)
          {
          echo '<input type="hidden" name="param'.$param["id"].'" value="'.$value.'"'.($depend == 'depend' ? ' class="depend_param"' : '').'>';
          }
          }
          else
          {
          $select = '';
          foreach($param["values"] as $value)
          {
          if(! empty($result["row"]["param_multiple"][$param["id"]][$value["id"]]))
          {
          if(! $select)
          {
          $select = $param["name"].': <select name="param'.$param["id"].'" class="inpselect'.($result["row"]["param_multiple"][$param["id"]][$value["id"]] == 'depend' ? ' depend_param' : '').'">';
          }

          $select .= '<option value="'.$value["id"].'"'
          .(! empty($value["selected"]) ? ' selected' : '')
          .'>'.$value["name"].'</option>';
          }
          }
          if($select)
          {
          echo $select.'</select> ';
          }
          }
          }
          }
          echo '</div>';

          foreach($result["row"]["price_arr"] as $price)
          {
          $param_code = '';
          foreach($price["param"] as $p)
          {
          if($p["value"])
          {
          $param_code .= ' param'.$p["id"].'="'.$p["value"].'"';
          }
          }
          if(! empty($price["image_rel"]))
          {
          $param_code .= ' image_id="'.$price["image_rel"].'"';
          }

          echo '<div class="price-box shop_param_price"'.$param_code.'>';

          echo '<div class="regular-price">
          <span class="price">' . $price["price"] . '</span> <span class="shop_price_currency">' . $result["result"]["currency"] . '</span>
          </div>';

          if (!empty($price["old_price"]))
          {
          echo '<div class="shop_old_price">Старая цена:
          <span class="shop_price_value">' . $price["old_price"] . '</span> <span class="shop_price_currency">' . $result["result"]["currency"] . '</span>
          </div>';
          }



          /* echo '<div class="shop_price">' . $this->diafan->_('Цена') . ': <span class="shop_price_value">' . $price["price"] . '</span> <span class="shop_price_currency">' . $result["result"]["currency"] . '</span></div>';
          if (!empty($price["old_price"]))
          {
          echo '<div class="shop_old_price">' . $this->diafan->_('Старая цена') . ': <span class="shop_price_value">' . $price["old_price"] . '</span>'
          . ' <span class="shop_price_currency">' . $result["result"]["currency"] . '</span></div>';
          }
          if (! $price["count"] && empty($hide_submit))
          {
          echo '<span class="shop_no_buy">' . $this->diafan->_('Товар временно отсутствует') . '</span>';
          $waitlist = true;
          } */

          echo '</div>';
          }
          }
          /*if(! empty($waitlist))
          {
          echo '
          <div class="shop_waitlist">
          '.$this->diafan->_('Сообщить когда появиться на e-mail').'
          <input type="text" name="mail" value="'.$this->diafan->_user->mail.'" class="inptext">
          <span class="button_wrap"><input type="button" class="button" value="'.$this->diafan->_('Ок', false).'" action="wait"></span>
          <div class="errors error_waitlist" style="display:none"></div>
          </div>';
          } */
          if (empty($result["row"]['is_file']) && (empty($hide_submit) || $result["result"]["wishlist_link"]))
          {
          echo '<div class="cart_count wrapp_inp">

          <span style="cursor: pointer;" class="cart_count_minus">-</span>
          <input type="text" class="inpnum" value="1" name="count" size="1">
          <span style="cursor: pointer;" class="cart_count_plus">+</span>

          </div>';
          }
          if(empty($hide_submit))
          {
          echo '<span class="button_wrap"><input type="button" style="float: right; padding: 0 18px; margin: 2px 0 0 0;" class="button btn-cart" value="'.$this->diafan->_('Купить', false).'" action="buy"></span>';
          }
          if(empty($hide_submit) && ! empty($result["result"]["one_click"]))
          {
          echo '<span class="shop_one_click"><input type="button" class="button btn-cart" value="'.$this->diafan->_('Купить в один клик', false).'" action="one_click"></span>';
          }
          echo '<div class="error" style="left: 142px;">';
          if (!empty($result["row"]["count_in_cart"]))
          {
          echo $this->diafan->_('В <a href="%s">корзине</a> %s шт.', true, BASE_PATH_HREF . $result["result"]["cart_link"], $result["row"]["count_in_cart"]);
          }
          echo '</div>';
          if($result["result"]["wishlist_link"])
          {
          echo '<span class="shop_wishlist"><input type="button" class="button" value="'.$this->diafan->_('Отложить', false).'" action="wish"></span>';
          }
          echo '</form></div></div>';


          if(empty($GLOBALS["include_shop_js"]))
          {
          $GLOBALS["include_shop_js"] = true;
          echo '<script type="text/javascript" src="'.BASE_PATH.'modules/shop/shop.js"></script>';
          }
          //форма быстрого заказа
          if(! empty($result["result"]["one_click"]))
          {
          $this->get('one_click', 'cart', $result["result"]["one_click"]);
          }
      • 24 августа 2014 г.
      • я видимо слишком глуп, или у меня что то не то, в файле modules/shop/views/shop.view.list.php нету тех строк которые вы предлагаете заменить.

        вот он у меня:

        Код
        <?php
        /**
        * Шаблон списка товаров
        *
        * @package Diafan.CMS
        * @author diafan.ru
        * @version 5.3
        * @license http://cms.diafan.ru/license.html
        * @copyright Copyright (c) 2003-2013 OOO «Диафан» (http://diafan.ru)
        */
        if (!defined('DIAFAN'))
        {
        include dirname(dirname(dirname(__FILE__))).'/includes/404.php';
        }

        if(empty($result["ajax"]))
        {
        echo '<div class="category-products shop_list">';
        }

        //вывод описания текущей категории
        if (!empty($result["text"]))
        {
        echo '<div class="shop_cat_text">';
        $this->htmleditor($result['text'], true);
        echo '</div>';
        }

        //рейтинг категории
        if (! empty($result["rating"]))
        {
        echo $result["rating"];
        }

        //вывод изображений текущей категории
        if (!empty($result["img"]))
        {
        echo '<div class="shop_cat_all_img">';
        foreach ($result["img"] as $img)
        {
        switch ($img["type"])
        {
        case 'animation':
        echo '<a href="'.BASE_PATH.$img["link"].'" rel="prettyPhoto[gallery'.$result["id"].'shop]">';
        break;
        case 'large_image':
        echo '<a href="'.BASE_PATH.$img["link"].'" rel="large_image" width="'.$img["link_width"].'" height="'.$img["link_height"].'">';
        break;
        default:
        echo '<a href="'.BASE_PATH_HREF.$img["link"].'">';
        break;
        }
        echo '<img src="'.$img["src"].'" width="'.$img["width"].'" height="'.$img["height"].'" alt="'.$img["alt"].'" title="'.$img["title"].'">'
        . '</a> ';
        }
        echo '</div>';
        }

        //вывод подкатегории
        /*if (!empty($result["children"]))
        {
        foreach ($result["children"] as $child)
        {
        echo '<div class="shop_cat_link">';

        //вывод изображений подкатегории
        if (!empty($child["img"]))
        {
        echo '<div class="shop_cat_img">';
        foreach ($child["img"] as $img)
        {
        switch ($img["type"])
        {
        case 'animation':
        echo '<a href="'.BASE_PATH.$img["link"].'" rel="prettyPhoto[gallery'.$child["id"].'shop]">';
        break;
        case 'large_image':
        echo '<a href="'.BASE_PATH.$img["link"].'" rel="large_image" width="'.$img["link_width"].'" height="'.$img["link_height"].'">';
        break;
        default:
        echo '<a href="'.BASE_PATH_HREF.$img["link"].'">';
        break;
        }
        echo '<img src="'.$img["src"].'" width="'.$img["width"].'" height="'.$img["height"].'" alt="'.$img["alt"].'" title="'.$img["title"].'">'
        . '</a> ';
        }
        echo '</div>';
        }

        //название и ссылка подкатегории
        echo '<a href="'.BASE_PATH_HREF.$child["link"].'">'.$child["name"].' ('.$child["count"].')</a>';

        //рейтинг подкатегории
        if (! empty($child["rating"]))
        {
        echo $child["rating"];
        }

        //краткое описание подкатегории
        if ($child["anons"])
        {
        echo '<div class="shop_cat_anons">';
        $this->htmleditor($child['anons']);
        echo '</div>';
        }
        echo '</div>';

        //вывод списка товаров подкатегории
        if (!empty($child["rows"]))
        {
        //вывод сортировки товаров
        if(! empty($child["link_sort"]))
        {
        $this->get('sort_block', 'shop', $result);
        }

        foreach ($child["rows"] as $row)
        {
        echo '<table class="shop childshop"><tr><td colspan=2 valign=top>';

        //вывод названия и ссылки на товара
        echo '<div class="shop_name">';
        echo '<a href="'.BASE_PATH_HREF.$row["link"].'">'.$row["name"].'</a>';
        //рейтинг товара
        if (!empty($row["rating"]))
        {
        echo ' '.$row["rating"];
        }
        echo '</div>';

        //вывод артикула
        if (!empty($row["article"]))
        {
        echo '<div class="shop_article">';
        echo $this->diafan->_('Артикул').':';
        echo '<span class="shop_article_value">'.$row["article"].'</span>';
        echo '</div>';
        }

        echo '</td></tr><tr><td valign=top width=5%>';

        //вывод изображений товара
        if (!empty($row["img"]))
        {
        echo '<div class="shop_img">';
        foreach ($row["img"] as $img)
        {
        switch ($img["type"])
        {
        case 'animation':
        echo '<a href="'.BASE_PATH.$img["link"].'" rel="prettyPhoto[gallery'.$row["id"].'shop]">';
        break;
        case 'large_image':
        echo '<a href="'.BASE_PATH.$img["link"].'" rel="large_image" width="'.$img["link_width"].'" height="'.$img["link_height"].'">';
        break;
        default:
        echo '<a href="'.BASE_PATH_HREF.$img["link"].'">';
        break;
        }
        echo '<img src="'.$img["src"].'" width="'.$img["width"].'" height="'.$img["height"].'" alt="'.$img["alt"].'" title="'.$img["title"].'" image_id="'.$img["id"].'">'
        . '</a> ';
        }
        echo '</div>';
        }

        echo '</td>';
        echo '<td valign=top>';

        if (!empty($row['hit']))
        {
        echo '<div class="shop_hit">'.$this->diafan->_('Хит!').'</div>';
        }
        if (!empty($row['action']))
        {
        echo '<div class="shop_action">'.$this->diafan->_('Акция!').'</div>';
        }
        if (!empty($row['new']))
        {
        echo '<div class="shop_new">'.$this->diafan->_('Новинка!').'</div>';
        }

        //вывод параметров товара
        if (!empty($row["param"]))
        {
        $this->get('param', 'shop', array("rows" => $row["param"], "id" => $row["id"]));
        }

        //вывод скидки на товар
        if (!empty($row["discount"]))
        {
        echo '<div class="shop_discount">'.$this->diafan->_('Скидка').': <span class="shop_discount_value">'.$row["discount"].' '.$row["discount_currency"].($row["discount_finish"] ? ' ('.$this->diafan->_('до').' '.$row["discount_finish"].')' : '').'</span></div>';
        }

        //вывод краткого описания товара
        if (!empty($row["anons"]))
        {
        echo '<div class="shop_anons">';
        $this->htmleditor($row['anons']);
        echo '</div>';
        }

        //теги товара
        if (!empty($row["tags"]))
        {
        echo $row["tags"];
        }

        //вывод кнопки "Купить"
        $this->get('buy_form', 'shop', array("row" => $row, "result" => $result));

        if(empty($result["hide_compare"]))
        {
        $this->get('compare_form', 'shop', $row);
        }
        echo '</td></tr></table>';
        }
        echo '<div class="clear"></div>';
        }
        }
        }
        */

        //вывод списка товаров
        if (!empty($result["rows"]))
        {


        //вывод сортировки товаров
        if(! empty($result["link_sort"]))
        {
        $this->get('sort_block', 'shop', $result);
        }

        echo '<ul class="products-grid">';

        foreach ($result["rows"] as $row)
        {


        echo '<li class="item first">';

        echo '<div class="product-name">
        <a href="'.BASE_PATH_HREF.$row["link"].'">'.$row["name"].'</a>
        </div>';

        echo '<div class="shop_img">';

        //вывод изображений товара
        if (!empty($row["img"]))
        {
        echo '<div class="grid-inner">';
        foreach ($row["img"] as $img)
        {
        switch ($img["type"])
        {
        case 'animation':
        echo '<a href="'.BASE_PATH.$img["link"].'" rel="prettyPhoto[gallery'.$row["id"].'shop]">';
        break;
        case 'large_image':
        echo '<a href="'.BASE_PATH.$img["link"].'" rel="large_image" width="'.$img["link_width"].'" height="'.$img["link_height"].'">';
        break;
        default:
        echo '<a href="'.BASE_PATH_HREF.$img["link"].'">';
        break;
        }
        echo '<img src="'.$img["src"].'" width="220" height="auto" alt="'.$img["alt"].'" title="'.$img["title"].'" image_id="'.$img["id"].'">'
        . '</a> ';
        }
        echo '</div>';
        }
        else
        {
        echo '<img src="'.BASE_PATH.'img/nophoto.jpg" >';
        }

        echo '</div>';

        //вывод кнопки "Купить"
        $this->get('buy_form_cat', 'shop', array("row" => $row, "result" => $result));

        echo '<a class="button1" href="'.BASE_PATH_HREF.$row["link"].'">Подробнее</a>';

        echo '</li>';

        //вывод названия и ссылки на товара
        /* echo '<div class="shop_name">';
        echo '<a href="'.BASE_PATH_HREF.$row["link"].'">'.$row["name"].'</a>';
        //рейтинг товара
        if (!empty($row["rating"]))
        {
        echo ' '.$row["rating"];
        }
        echo '</div>';

        //вывод артикула
        if (!empty($row["article"]))
        {
        echo '<div class="shop_article">';
        echo $this->diafan->_('Артикул').':';
        echo '<span class="shop_article_value">'.$row["article"].'</span>';
        echo '</div>';
        }

        echo '</td></tr><tr><td valign=top width=5%>';

        //вывод изображений товара
        if (!empty($row["img"]))
        {
        echo '<div class="shop_img">';
        foreach ($row["img"] as $img)
        {
        switch ($img["type"])
        {
        case 'animation':
        echo '<a href="'.BASE_PATH.$img["link"].'" rel="prettyPhoto[gallery'.$row["id"].'shop]">';
        break;
        case 'large_image':
        echo '<a href="'.BASE_PATH.$img["link"].'" rel="large_image" width="'.$img["link_width"].'" height="'.$img["link_height"].'">';
        break;
        default:
        echo '<a href="'.BASE_PATH_HREF.$img["link"].'">';
        break;
        }
        echo '<img src="'.$img["src"].'" width="'.$img["width"].'" height="'.$img["height"].'" alt="'.$img["alt"].'" title="'.$img["title"].'" image_id="'.$img["id"].'">'
        . '</a> ';
        }
        echo '</div>';
        }

        echo '</td>';
        echo '<td valign=top>';

        if (!empty($row['hit']))
        {
        echo '<div class="shop_hit">'.$this->diafan->_('Хит!').'</div>';
        }
        if (!empty($row['action']))
        {
        echo '<div class="shop_action">'.$this->diafan->_('Акция!').'</div>';
        }
        if (!empty($row['new']))
        {
        echo '<div class="shop_new">'.$this->diafan->_('Новинка!').'</div>';
        }

        //вывод параметров товара
        if (!empty($row["param"]))
        {
        $this->get('param', 'shop', array("rows" => $row["param"], "id" => $row["id"]));
        }

        //вывод скидки на товар
        if (!empty($row["discount"]))
        {
        echo '<div class="shop_discount">'.$this->diafan->_('Скидка').': <span class="shop_discount_value">'.$row["discount"].' '.$row["discount_currency"].($row["discount_finish"] ? ' ('.$this->diafan->_('до').' '.$row["discount_finish"].')' : '').'</span></div>';
        }

        //вывод краткого описания товара
        if (!empty($row["anons"]))
        {
        echo '<div class="shop_anons">';
        $this->htmleditor($row['anons']);
        echo '</div>';
        }

        //теги товара
        if (!empty($row["tags"]))
        {
        echo $row["tags"];
        }

        //вывод кнопки "Купить"
        $this->get('buy_form', 'shop', array("row" => $row, "result" => $result));

        if(empty($result["hide_compare"]))
        {
        $this->get('compare_form', 'shop', $row);
        }
        */



        }
        echo '</ul>';

        echo '<div class="clear"></div>';
        }

        if (!empty($result["rows"]) && empty($result["hide_compare"]))
        {
        $this->get('compared_goods_list', 'shop', array("site_id" => $this->diafan->cid, "shop_link" => $result['shop_link']));
        }

        //постраничная навигация
        if (!empty($result["paginator"]))
        {
        echo $result["paginator"];
        }

        //вывод комментариев ко всей категории товаров (комментарии к конкретному товару в функции id())
        if (!empty($result["comments"]))
        {
        echo $result["comments"];
        }

        //ссылки на предыдущую и последующую категории
        if (!empty($result["previous"]) || !empty($result["next"]))
        {
        echo '<div class="previous_next_links">';
        if (!empty($result["previous"]))
        {
        echo '<div class="previous_link"><a href="'.BASE_PATH_HREF.$result["previous"]["link"].'">&larr; '.$result["previous"]["text"].'</a></div>';
        }
        if (!empty($result["next"]))
        {
        echo '<div class="next_link"><a href="'.BASE_PATH_HREF.$result["next"]["link"].'">'.$result["next"]["text"].' &rarr;</a></div>';
        }
        echo '</div>';
        }

        if(empty($result["ajax"]))
        {
        echo '</div>';
        }


        жалко нет спойлера, я бы скрыл
        • 25 августа 2014 г.
        • какая версия диафана
          • 25 августа 2014 г.
          • а вижу 5,3
            • 25 августа 2014 г.
            • а колличество товаров проставлено в админке?
              • 25 августа 2014 г.
              • так, про количество, стоит синхронизация с аналогом 1С, раз в 15 минут, но проблема такая, что если товара осталось 0, то в программу число 0 не идет и остается и где то в базе он остается один, и тот кто на сайте нажимает на законченный товар и все ровно его покупает, а если еще раз этого же товара то он пишет нет столько товара на складе. Как быть?

Новости

  • 18 июня
  • В сборке большое обновление demo-шаблона, дополнительная защита от спама, улучшение YML-импорта и еще много важного и интересного.
  • 24 апреля
  • В новой сборке совершили революцию в структурировании кастомизированной информации в шаблонах, добавили авторегистрацию пользователей, усовершенствовали защиту от спама, актуализировали накопительную скидку, а также улучшили производительность и стабильность работы системы.
  • 12 января
  • После выхода сборки 7.1 мы выпустили уже три патча, в каждом из которых улучшаем административную часть сайта. Сборка DIAFAN.CMS 7.1.3 уже доступна к установке. 

Форум