Задать вопрос
  • КАк найти на сайте "класс" и открыть его через 3 минуты после посещения пользователя?

    @symply_rabbit Автор вопроса
    Павло Пономаренко, не могу и посмотреть:( не понятно где лежит это окошко. готовое решение, не могу найти где весь этот код. через писк не находит. этот класс я взял из инспектора кода, когда окошко уже открыто. пробовал у него убирать класс шоу, скрылось окошко, добавил руками класс шоу, добавилось окошко.
    можно максимум, добавить код окошка, скопировав из инстпектора его на тест, и применять там...
    Ответ написан
  • Какой самый грамотный путь сортировки одновременно по нескольким параметрам в элементах раздела?

    @symply_rabbit Автор вопроса
    решение одновременного показа сортировок решилось с помощью кастомизации компонента. решения кодом найти не смог к стандартному компоненту битрикса найти не смог.
    здесь расписана необходимая модификация стандартного компонента
    archive.hamdeew.ru/page/bitrixcatalogsection-sorti...
    Ответ написан
    Комментировать
  • Можно ли как нибудь настроить поиск в битриксе чтобы он искал товары по артикулам даже не учитывая пробела?

    @symply_rabbit Автор вопроса
    Очень много мороки, сфинкс не отрабатывал корректно. Как вариант можно было бы взять это свойство Артикул и удалить из него все символы и записать результат в другое свойство. скрыть его показ на странице элемента. в настройках свойства поставить "свойство участвует в поиске". Я думаю это бы сыграло нужную роль.
    Ответ написан
    Комментировать
  • Как заменить символьный код элемента на свойство артикул?

    @symply_rabbit Автор вопроса
    Не знаю как выглядит этот код, плохо или хорошо, но у меня сработал только он. Короткий, простой и рабочий

    CModule::IncludeModule('iblock');
    $IBLOCK_ID = 49;
    
    
       $elDB = CIBlockElement::GetList(
            array('SORT' => 'asc'),
            array('IBLOCK_ID'=> $IBLOCK_ID),
            false,
            false,
            array('ID', 'NAME', 'CODE', 'PROPERTY_CML2_ARTICLE')
        );
    
        while($arEl = $elDB->GetNext(false, false))
        {
           // echo '<pre>';
          //  print_r($arEl);
          //  echo '</pre>';
            $arParams = array("replace_space"=>"-","replace_other"=>"-");
            $trans = $arEl[PROPERTY_CML2_ARTICLE_VALUE];
         //   echo '<pre>';
         //   print_r($trans);
         //   echo '</pre>';
    
            $el = new CIBlockElement;
            $arLoadProductArray = Array(
                'CODE' =>$trans
            );
            $res = $el->Update($arEl['ID'], $arLoadProductArray);
        }
    Ответ написан
  • Можно ли посчитать количество элементов массива не выходя за его пределы?

    @symply_rabbit Автор вопроса
    Нашел еще одно решение. можно найти последний элемент в массиве и приравнять его к единице. вот как

    $total = count($basket);
    $counter = 0;
    foreach ($basket as $key => $basketItem) {
    
     $counter++;
    
    if($counter == $total and $counter == "1"){
        // делаем что-либо с последним элементом...
       }
      else{
    
        $basketItem->delete(); // делаем что-либо с каждым элементом
      }
    }
    Ответ написан
  • Как вывести товары со скидками в корзине битрикс с помощью АПИ?

    @symply_rabbit Автор вопроса
    2 варианта ответа найдено: 1)
    <?$fuserId = CSaleBasket::GetBasketUserID();
    
    $dbBasketItems = CSaleBasket::GetList(
       array("ID" => "ASC"),
       array(
           "FUSER_ID" => $fuserId,
           "LID" => SITE_ID,
           "ORDER_ID" => "NULL",
           "DELAY"=>"N"
       ),
       false,
       false,
       array(
           "ID", "NAME", "CALLBACK_FUNC", "MODULE", "PRODUCT_ID", "PRODUCT_PRICE_ID", "QUANTITY", "DELAY", "CAN_BUY",
           "PRICE", "WEIGHT", "DETAIL_PAGE_URL", "NOTES", "CURRENCY", "VAT_RATE", "CATALOG_XML_ID",
           "PRODUCT_XML_ID", "SUBSCRIBE", "DISCOUNT_PRICE", "PRODUCT_PROVIDER_CLASS", "TYPE", "SET_PARENT_ID"
       )
    );
    
    
    while ($arBasketItems = $dbBasketItems->Fetch())
    {
       $allSum = ($arBasketItems["PRICE"] * $arBasketItems["QUANTITY"]);
       $allWeight = ($arBasketItems["WEIGHT"] * $arBasketItems["QUANTITY"]);
       $arResult[] = $arBasketItems;
    }
    
    $arOrder = array(
       'SITE_ID' => SITE_ID,
       'USER_ID' => $GLOBALS["USER"]->GetID(),
       'ORDER_PRICE' => $allSum, // сумма всей корзины
       'ORDER_WEIGHT' => $allWeight, // вес всей корзины
       'BASKET_ITEMS' => $arResult // товары сами
    );
    
    $arOptions = array(
       'COUNT_DISCOUNT_4_ALL_QUANTITY' => "Y",
    );
    
    $arErrors = array();
    
    CSaleDiscount::DoProcessOrder($arOrder, $arOptions, $arErrors);
    
    
    echo $arOrder["ORDER_PRICE"];?>


    2)
    <?$basket = \Bitrix\Sale\Basket::loadItemsForFUser(
      \Bitrix\Sale\Fuser::getId(),
      \Bitrix\Main\Context::getCurrent()->getSite()
    ); // текущая корзина
    $fuser = new \Bitrix\Sale\Discount\Context\Fuser($basket->getFUserId(true));
    $discounts = \Bitrix\Sale\Discount::buildFromBasket($basket, $fuser);
    $discounts->calculate();
    $result = $discounts->getApplyResult(true);
    $prices = $result['PRICES']['BASKET']; // цены товаров с учетом скидки
    print_r($prices);
    
    
    
    foreach ($prices as $price):
    
    //echo $price[PRICE];?><br>
    <?
    $summs[]=$price[PRICE];
    ?>
    <?endforeach;?>
    
    
    
    <?
    $a = array($summs);
    $summsss = array_sum($summs);
    echo $summsss;?>


    Об варианта рабочие
    Ответ написан
    Комментировать
  • Можно ли вывести оба параметра в одном foreach?

    @symply_rabbit Автор вопроса
    Ответ найден. короткий но рабочий код

    в случае если один из массивов не число

    $sorts[] = $enum_fields[VALUE];
    
    $ids[] = $enum_fields[ID];
    }
    
    natsort($sorts);
    
    foreach (array_combine($sorts, $ids) as $code => $name) {
        echo $code?>-<?=$name;?><br>
    <?}
    ?>


    В случае если значение точно число меняем функцию natsort($sorts); на sort($sorts);
    Ответ написан
    Комментировать
  • Почему через ajax передается значение на шаг меньше?

    @symply_rabbit Автор вопроса
    Проблема была в том что на странице запускалось куча куча функций и мой код шел не по той очередности.
    поставил у сеттайм аут 3 секунды- так он стал запускаться последней функцией на странице и тогда все получилось. и кроме того нашел где выводится стандатный клик и дописал свой код (вместе с сеттайм аут ) туда

    setTimeout(function() { $("#bookbutcart").load("/include/bookbutoon_cart.php"); // замена области в этом файле
                           }, 3000);
    Ответ написан
    Комментировать
  • Могу ли я получить значение дата-атрибута через php?

    @symply_rabbit Автор вопроса
    Решил проблему следующим образом : айди товара убрал вообще и после скрипта "действия по клику" разместил код проверки корзины и добавление классов

    <?
    // Выведем актуальную корзину для текущего пользователя
    
    $dbBasketItems = CSaleBasket::GetList(
        array(
            "NAME" => "ASC",
            "ID" => "ASC"
        ),
        array(
            "FUSER_ID" => CSaleBasket::GetBasketUserID(),
            "LID" => SITE_ID,
           // "PRODUCT_ID" => $arResult["ITEMS"], //ID текущего товара
            "ORDER_ID" => "NULL",
            "DELAY" => "N" //Исключая отложенные
        ),
        false,
        false,
        array("PRODUCT_ID")
    );
    
    
    while ($arItemsBasket = $dbBasketItems->Fetch()) {
        $itInBasket = $arItemsBasket['PRODUCT_ID'];
    //echo  $itInBasket ;?><br>
    
    
    <? if (isset($itInBasket)) {?>
    <script>
    
    if (localStorage.getItem('addClass') == 'true') {
    
     $('.buy-btn[data-id="<?=$itInBasket?>"]').addClass('green-btn').text("В корзине"); 
    }
    
    </script>
    <?} else { //Если товара нет (переменная пустая) ?>
    	
    <?}
    
    }
    ?>
    Ответ написан
    Комментировать
  • Как переделать полет в корзину, чтобы шел не по id а по дата атрибут.?

    @symply_rabbit Автор вопроса
    итак вопрос решился следующим образом

    код изображения
    <img id="img<?=$arItem['ID'];?>" src="<?=$img['src']?>" alt="">

    код кнопки купить
    <a class="bt_yellow to_carts list" data-rel="<?=$arItem['ID']?>">Купить</a>


    и скрипт
    id = $(this).attr("data-rel");
    					tmp="#img"+id;
    					$(tmp)
    						.clone()
    						.css({'position' : 'absolute', 'z-index' : '11100', top: $(this).offset().top-300, left:$(this).offset().left-100})
                .appendTo("body")
                .animate({opacity: 0.2,
                        left: $(".bt_basket").offset()['left'],
                        top: $(".bt_basket").offset()['top'],
                        width: 0}, 1000, function() {
                        $(this).remove();
                    });
    Ответ написан
    Комментировать
  • Как перезагрузить только содержимое тега по клику без перезагрузки станицы целиком?

    @symply_rabbit Автор вопроса
    Пример.
    Есть вариант сделать это с помощью вкл области.
    для этого в скрипте пишем.
    $(document).on('click','#delete-us<?=$arItem['ID']?>',function(){
    
      $.ajax({
                    type: "POST",
                    url: "/include/delete-user.php",
    
                  data: ({id:<?=$arItem['ID']?>}),  
        cache: false,
    
    success: function(data) {
                    $("#dialerDiv1").load("/include/after-delete.php");
                },
    
         
    });
    });


    Нам нужно
    success: function(data) {
                    $("#dialerDiv1").load("/include/after-delete.php");
                },


    где dialerDiv1 - id области, которую хотим заменить,
    /include/after-delete.php - файл, в котором содержится инфо на ЧТО мы хотим заменить содержимое внутри dialerDiv1
    Ответ написан
    Комментировать
  • Как реализовать чтобы менялись урлы при 1-м и 2-м клике?

    @symply_rabbit Автор вопроса
    решил вопрос с помощью php + js , при этом еще добавил активный класс

    <? if (strstr($_SERVER['REQUEST_URI'], "?sort=price&order=asc")) {?>
    <a class="catalog-sort__link active" href="?sort=price&order=desc">
    							<span>По цене</span>
    						</a>
    <script>
    var link = $(".catalog-sort__link");
    $(".catalog-sort__link").on("click", "span", function() {
      link.attr("href", "?sort=price&order=desc");
    });
    </script>
    <?}
    elseif (strstr($_SERVER['REQUEST_URI'], "?sort=price&order=desc")) {?>
    <a class="catalog-sort__link active" href="?sort=price&order=asc">
    							<span>По цене</span>
    						</a>
    <script>
    var link = $(".catalog-sort__link");
    $(".catalog-sort__link").on("click", "span", function() {
      link.attr("href", "?sort=price&order=asc");
    });
    </script>
    <?}
    
    
    else {?>
    <a class="catalog-sort__link" href="?sort=price&order=asc" >
    							<span>По цене</span>
    						</a>
    <?}?>
    Ответ написан
    Комментировать
  • Почему на почту приходят пустые поля формы?

    @symply_rabbit Автор вопроса
    все, глупый вопрос снят. результат var_dump в конзоли, поля есть, просто пишутся не с айдишниками а с кодом, $arFields["PROPERTY_VALUES"]["PHONE"]
    Ответ написан
    Комментировать
  • Не отправляет письмо по событию OnAfterIBlockElementAdd?

    @symply_rabbit Автор вопроса
    уже разбираюсь. Проблема в хостинге
    Ответ написан
    Комментировать