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

Мне нужно сделать так , чтобы у товара, которого сейчас нет в наличии,не отображалась его стоимость.

  • 26 января 2016 г.
  • Здравствуйте!
    Мне нужно сделать так , чтобы у товара, которого сейчас нет в наличии,не отображалась его стоимость.
    Я знаю место где заменить код, но мне нужен кусок кода, я сам не могу его написать, так как не знаю php, помогите мне с этим вопросом, пожалуйста.
    • 26 января 2016 г.
    • Для Вас проще определить для такого товара стоимость равной нулю, в этом случае cms все сделает за Вас.
  • 27 января 2016 г. , редакция: 27 января 2016 г.
  • Цитата
    Я знаю место где заменить код
    Вы лучше напишите, где по-вашему это место находится (а ещё лучше опубликуйте тут также и кусок кода оттуда), а то с учётом того, что
    Цитата
    не знаю php, помогите
    это место может оказаться не совсем там, где нужно.
    У вас стоимость товара везде одна или есть случаи вывода нескольких цен, зависящих от характеристик товара?
    • 10 февраля 2016 г.
    • Цена только одна, версия движка 5.4, в файле shop.view.buy_form.php.
      • 10 февраля 2016 г.
      • он может быть модифицирован и после наших советов ваапче никак не отображать цену...
        - КОД в студию!!!
        • 13 февраля 2016 г.
        • Код
          <?php
          /**
          * Кнопка «Купить»
          *
          * Шаблон вывода кнопки «Купить», в котором характеристики, влияющие на цену выводятся в виде выпадающего списка
          *
          * @package Diafan.CMS
          * @author diafan.ru
          * @version 5.4
          * @license http://cms.diafan.ru/license.html
          * @copyright Copyright (c) 2003-2014 OOO «Диафан» (http://diafan.ru)
          */
          if (!defined('DIAFAN'))
          {
          include dirname(dirname(dirname(__FILE__))).'/includes/404.php';
          }

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

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

          if(! $result['result']["buy_empty_price"])
          {
          $no_empty = false;
          foreach( $result["row"]['price_arr'] as $p)
          {
          if(trim($p["price"]))
          {
          $no_empty = true;
          }
          }
          if(! $no_empty)
          return false;
          }

          $action = '';
          if(! $result["result"]["cart_link"] || $result["row"]["no_buy"] || empty($result["row"]["count"]))
          {
          $action = 'buy';
          }

          echo '
          <form method="post" action="" class="js_shop_form 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.'">';

          if ($result["row"]["no_buy"] || empty($result["row"]["count"]))
          {
          echo '<div class="js_shop_no_buy js_shop_no_buy_good 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="js_shop_form_param 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 js_shop_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 js_shop_depend_param' : '').'">';
          }

          $select .= '<option value="'.$value["id"].'"'
          .(! empty($_GET["p".$param["id"]]) && $_GET["p".$param["id"]] == $value["id"] ? ' 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"].'"';
          }
          if (!empty($waitlist))
          {
          echo '<div class="price_wait">';
          }
          echo '<div class="js_shop_param_price shop_param_price"'.$param_code.'>';
          echo '<div class="shop_price"><span class="shop_price_value">'.$price["price"].'</span> <span class="shop_price_currency">'.$result["result"]["currency"].'</span></div>';
          if (!empty($waitlist))
          {
          echo '</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="js_shop_no_buy shop_no_buy">'.$this->diafan->_('Товар временно отсутствует').'</span>';
          $waitlist = true;
          }
          echo '</div>';
          }
          }

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

          if(! empty($waitlist))
          {
          echo '
          <div class="js_shop_waitlist shop_waitlist">
          '.$this->diafan->_('Сообщить когда появится по телефону').'
          <input type="text" name="mail" value="">
          <input type="button" value="'.$this->diafan->_('Ок', false).'" action="wait">
          <div class="errors error_waitlist" style="display:none"></div>
          </div>';
          }

          echo '<div class="js_shop_buy to-cart">';
          if (empty($result["row"]['is_file']) && empty($hide_submit))
          {
          echo '<span class="shop_count">'.$this->diafan->_('Кол-во').': <input type="text" value="1" name="count" class="number" pattern="[0-9]+([\.|,][0-9]+)?" step="any"></span>';
          }
          if(empty($hide_submit))
          {
          echo '<input type="button" class="button solid" value="'.$this->diafan->_('Купить', false).'" action="buy">';
          }
          echo '</div>';

          if(empty($hide_submit) && ! empty($result["result"]["one_click"]))
          {
          echo '<div class="js_shop_one_click shop_one_click"><input type="button" value="'.$this->diafan->_('Купить в один клик', false).'" action="one_click"></div>';
          }

          echo '<div class="error">';
          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>';
          echo '</form>';
          //форма быстрого заказа
          if(! empty($result["result"]["one_click"]))
          {
          echo '<div class="clear"></div>';
          $result["result"]["one_click"]["good_id"] = $result["row"]["id"];
          echo $this->get('one_click', 'cart', $result["result"]["one_click"]);
          }
          • 13 февраля 2016 г.
          • Ищем место где проверяется наличие товара на складе:
            Код

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


            добавим своё значение (чтоб не навредить другой логике, если нужно будет)
            Код

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


            и добавляем условие проверки при выводе цены на товар
            Всё это условие ставим в Условие ( if($nobyetov<>"no"){.......} )
            Код

            // у товара несколько цен
            if ($result["row"]["price_arr"])
            {
            ..................
  • 13 февраля 2016 г. , редакция: 13 февраля 2016 г.
  • В последней версии 5-ки один цикл вывода цены, у вас два. Чтобы не выводить на страницу, можно в каждый цикл добавить простое условие:

    66-ая строка
    Код
    // у товара несколько цен
    if ($result["row"]["price_arr"])
    {
    echo '<div class="js_shop_form_param shop_form_param">';
    foreach ($result["result"]["depends_param"] as $param)
    { if ($result["row"]["no_buy"]) continue;
    102-ая строка
    Код
    echo '</div>';
    foreach($result["row"]["price_arr"] as $price)
    { if ($result["row"]["no_buy"]) continue;
    Чтобы не отображать на странице, можно шаблон вообще не трогать, а обойтись CSS:
    Код
    .shop_no_buy + .shop_form_param + .price_wait .shop_price {
    display: none;
    }
    • 13 февраля 2016 г.
    • Спасибо, помог вариант с css.
      Php вариант не сработал.
      • 13 февраля 2016 г.
      • Странно, я полностью скопировал код вашего шаблона и проверял на нём. Попробуйте скопировать целиком и заменить.
        Код
        <?php
        /**
        * Кнопка «Купить»
        *
        * Шаблон вывода кнопки «Купить», в котором характеристики, влияющие на цену выводятся в виде выпадающего списка
        *
        * @package Diafan.CMS
        * @author diafan.ru
        * @version 5.4
        * @license http://cms.diafan.ru/license.html
        * @copyright Copyright (c) 2003-2014 OOO «Диафан» (http://diafan.ru)
        */
        if (!defined('DIAFAN'))
        {
        include dirname(dirname(dirname(__FILE__))).'/includes/404.php';
        }

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

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

        if(! $result['result']["buy_empty_price"])
        {
        $no_empty = false;
        foreach( $result["row"]['price_arr'] as $p)
        {
        if(trim($p["price"]))
        {
        $no_empty = true;
        }
        }
        if(! $no_empty)
        return false;
        }

        $action = '';
        if(! $result["result"]["cart_link"] || $result["row"]["no_buy"] || empty($result["row"]["count"]))
        {
        $action = 'buy';
        }

        echo '
        <form method="post" action="" class="js_shop_form 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.'">';

        if ($result["row"]["no_buy"] || empty($result["row"]["count"]))
        {
        echo '<div class="js_shop_no_buy js_shop_no_buy_good 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="js_shop_form_param shop_form_param">';
        foreach ($result["result"]["depends_param"] as $param)
        { if ($result["row"]["no_buy"] || empty($result["row"]["count"])) continue;
        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 js_shop_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 js_shop_depend_param' : '').'">';
        }

        $select .= '<option value="'.$value["id"].'"'
        .(! empty($_GET["p".$param["id"]]) && $_GET["p".$param["id"]] == $value["id"] ? ' selected' : '')
        .'>'.$value["name"].'</option>';
        }
        }
        if($select)
        {
        echo $select.'</select> ';
        }
        }
        }
        }
        echo '</div>';
        foreach($result["row"]["price_arr"] as $price)
        { if ($result["row"]["no_buy"] || empty($result["row"]["count"])) continue;
        $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"].'"';
        }
        if (!empty($waitlist))
        {
        echo '<div class="price_wait">';
        }
        echo '<div class="js_shop_param_price shop_param_price"'.$param_code.'>';
        echo '<div class="shop_price"><span class="shop_price_value">'.$price["price"].'</span> <span class="shop_price_currency">'.$result["result"]["currency"].'</span></div>';
        if (!empty($waitlist))
        {
        echo '</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="js_shop_no_buy shop_no_buy">'.$this->diafan->_('Товар временно отсутствует').'</span>';
        $waitlist = true;
        }
        echo '</div>';
        }
        }

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

        if(! empty($waitlist))
        {
        echo '
        <div class="js_shop_waitlist shop_waitlist">
        '.$this->diafan->_('Сообщить когда появится по телефону').'
        <input type="text" name="mail" value="">
        <input type="button" value="'.$this->diafan->_('Ок', false).'" action="wait">
        <div class="errors error_waitlist" style="display:none"></div>
        </div>';
        }

        echo '<div class="js_shop_buy to-cart">';
        if (empty($result["row"]['is_file']) && empty($hide_submit))
        {
        echo '<span class="shop_count">'.$this->diafan->_('Кол-во').': <input type="text" value="1" name="count" class="number" pattern="[0-9]+([\.|,][0-9]+)?" step="any"></span>';
        }
        if(empty($hide_submit))
        {
        echo '<input type="button" class="button solid" value="'.$this->diafan->_('Купить', false).'" action="buy">';
        }
        echo '</div>';

        if(empty($hide_submit) && ! empty($result["result"]["one_click"]))
        {
        echo '<div class="js_shop_one_click shop_one_click"><input type="button" value="'.$this->diafan->_('Купить в один клик', false).'" action="one_click"></div>';
        }

        echo '<div class="error">';
        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>';
        echo '</form>';
        //форма быстрого заказа
        if(! empty($result["result"]["one_click"]))
        {
        echo '<div class="clear"></div>';
        $result["result"]["one_click"]["good_id"] = $result["row"]["id"];
        echo $this->get('one_click', 'cart', $result["result"]["one_click"]);
        }
        • 14 февраля 2016 г.
        • А так получилось, может я что-то не так делал, спасибо вам!

Новости

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