Задать вопрос
  • Как сбросить кеш на сайте или конкретной странице, шаблоне?

    @tgarl Автор вопроса
    Как перезапустить сервер, там на питоне все?
  • Правильно ли начинать путь во фронтенд с битрикса?

    @tgarl
    Потенциально хороший продукт собрать можно на всем))
    Просто у битрикса громоздкая система, но как вы правильно заметили это CMS, а не фреймворк. А значит в ней много всего что может никогда не понадобится.
  • Как сбросить кеш на сайте или конкретной странице, шаблоне?

    @tgarl Автор вопроса
    Если бы было все так просто я бы не спрашивал(
  • Как правильно править шаблоны?

    @tgarl Автор вопроса
    Прошло пол дня и мелкие правки проявились, значит все правильно нашел с шаблонами.
    Судя по всему это или кеш или еще какая-то специфическая штука.

    Данных мало

    А какие нужны? Я просто не знаю какие данные могут помочь в решении.
  • Битрикс комплексный компонент. Как изучать?

    @tgarl
    Изучать нужно с простых компонентов.

    Я не знаю какие именно видео и курсы вы прочитали(смотреть только видео это плохой подход), но вот вам пример.
    Когда вы выбираете какой использовать, то вы должны понимать, что он собой представляет, например компонент news.list и catalog.section - и тот и тот рассчитан на получение списков элементов инфоблока, но в одном учитывается, что это каталог, а значит он имеет возможность получения цены, а другой нет. Однако если у вас новостной инфоблок завязан на кучу разделов, то использование news.list может потребовать большего написания дополнительных выборок чем использование catalog.section.
    Много информации за раз: параметры, описание, шаблон, компонент

    так что вот это все вы должны изучить на примере простого компонента, а комплексный, как я сказал выше это по сути набор условий(конечно с обработкой и все прочим) для подключения одной из нескольких страниц с простыми компонентами

    Я, например, так же на подключение отдельных страниц делю сам шаблон, оставляя в нем только общий каркас, а области этого каркаса выношу в подключаемые файлы. Да, таким образом я лишаюсь возможности для правки использовать визуальный редактор(при открытии шаблона я вижу только каркас и кучу инклюда), но для работы по фтп мне так намного удобнее - при смене шаблона достаточно изменить каркас, если нужно поправить содержимое одного из блоков мне не нужно видеть весь большой шаблон и искать где в нем нужное мне, а достаточно открыть нужный кусочек и работать с ним. Но с таким подходом не все согласятся - все же концепция битрикса так немного нарушается.
  • Как из переменной получить значение, а не строку?

    @tgarl Автор вопроса
    Всё, уже нашел причину. Спасибо.
  • Как из переменной получить значение, а не строку?

    @tgarl Автор вопроса
    И если значение переменной - имя другой переменной с $, скорее всего, это означает, что где-то выше по коду именно этот текст ей и присваивается.

    Это логично.

    Только речь идет о кастомизации условий скидок, поэтому эти данные наследуются из ядра, а не устанавливаются пользователем. И судя по всему вы не сталкивались с задачей написания своих условий.

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

    я передаю , '".$arParams['FIELD']."'
    а нужно без кавычек
    , ".$arParams['FIELD']."

    Я же сразу сказал, что проблема решается очень просто, только я не вижу ошибки
  • Как из переменной получить значение, а не строку?

    @tgarl Автор вопроса
    К чему то?

    Вот не понимаю я таких людей как вы. Если понимаете в чем ошибка, так скажите, нет, так зачем устраивать стеб.
    Если я что-то говорю не так, то можно указать, что именно не так. Но нет лучше постебаться или сказать гугл в помощь, не понимаю такого.
  • Как из переменной получить значение, а не строку?

    @tgarl Автор вопроса
    какая мешанина?
    вот метод Generate, делаем в нем распринтовку при сохранении скидки
    public static function Generate($arOneCondition, $arParams, $arControl, $arSubs = false)
        {
           
    		file_put_contents($_SERVER["DOCUMENT_ROOT"]."/event111.txt", "\n\n** ".date("d.m.Y H:i:s")." ****". __FILE__ ." ". __LINE__ ."****E **row arParams****\n".print_r($arParams, true), FILE_APPEND | LOCK_EX);
    		
    $strResult  = "self::checkField('".$arControl['FIELD']."', '".$arOneCondition["value"]."', '".$arParams['FIELD']."')===".$logic;
            return  $strResult;


    получаем
    Array
    (
        [FIELD] => $arProduct
    )


    нет ничего лишнего.

    По поводу что легко, ладно, действительно легко для того кто знает
  • Как из переменной получить значение, а не строку?

    @tgarl Автор вопроса
    я когда-то сталкивался с такой проблемой, решалась она очень просто, но вот как - ни вспомнить не решить не получается
  • Как из переменной получить значение, а не строку?

    @tgarl Автор вопроса
    в смысле потеряна кавычка?
    вот $arParams
    Array
    (
        [FIELD] => $arProduct
    )

    соответсвенно если я сохраняю правило как указал выше, то в обработку уходит не массив, а строка $arParams['FIELD'], т.е. по сути тоже самое что если написать '$arProduct'
  • Как применить купон в оформлении заказа?

    @tgarl
    Попробуйте поменять последовательность действий.
    Корзину берите того пользователя на кого заказ формируете.
    т.е. сначала узнаете на кого заказ делать
    if ($arFields['USER_AUTH'] == "'Y'") {
                $registeredUserID = $arFields['USER_ID'];
            } else {
                $registeredUserID = Site::createUser([
                    'NAME' => $name,
                    'PERSONAL_PHONE' => $phone,
                    'EMAIL' => $email,
                ]);
            }
            if (!$registeredUserID) {
                array("STATUS" => "ERROR", "MESSAGE" => "Ошибка при оформлении заказа");
            }

    после уже

    if(intval($registeredUserID)>0){//все ок и мы получили пользователя, можем работать дальше
    
    $fuser=\Bitrix\Sale\Fuser::getIdByUserId($registeredUserID);
    \Bitrix\Sale\DiscountCouponsManager::init();
    
    //очищаем список купонов для данного хита 
    \Bitrix\Sale\DiscountCouponsManager::clear(); 
    
    //удаляем если что-то есть в корзине
    \CSaleBasket::DeleteAll($fuser,false);
    
    // Получение корзины для текущего пользователя
    $basket = \Bitrix\Sale\Basket::loadItemsForFUser( $fuser, 's1' );
    
    \Bitrix\Sale\DiscountCouponsManager::add($coupon);
    
    $item = $basket->createItem("catalog", $productId);
    $item->setFields($product);
    
    ...
    
    //Сохранение изменений корзины
    $basket->save();
    
    //теперь создаем заказ к которому привяжем готовую корзину
    $order = \Bitrix\Sale\Order::create($siteId, $registeredUserID);
    
    ...
    //купон уже был применен, к текущей корзине пользователя, поэтому в заказе использовать уже не нужно будет
    $result = $order->save();
    }
  • Почему отображаются не все статусы заказов?

    @tgarl
    да, поэтому я и написал, что в проверке сайта будет ошибка.

    Мы столкнулись когда попросили вебстудию настроить маркировку нам, а для этого нужно было обновить битрикс, а чтобы его обновить, нужно было обновить версию php))
    они обновили и пол сайта перестало отображаться. Они ковырялись-ковырялись, в итоге сослались на то что в договоре не было указано, что они должны весь сайт перевести на новые параметры, ковыряйтесь сами(при этом часть админки не отображалась - пустота вместо текстов), мы вам главное по договору настроили- настроили все, оплатите и разбирайтесь с остальным сами. Вот я и сидел разбирался и выяснил, что да битрикс требует ее удалить если эта опция есть, но если поставить старую, то будет все работать.
  • Как клонировать элемент если в количестве указанно "2"?

    @tgarl
    )) просто привычка, да и так было нагляднее для понимания что я имел ввиду
  • Как клонировать элемент если в количестве указанно "2"?

    @tgarl
    А сам цикл for вы расписали или просто скопировали как у меня? Я просто в общих чертах указал применение без синтаксиса, мало ли каким вы решите воспользоваться(есть for, foreach, while)
    например:
    $x=0;
    while ($x++<$A){
    ...
    }
    
    //или 
    for ($x=0; $x<$A; $x++){
    ...
    }
  • Из-за чего компонент может вызывать ошибку при загрузке страницы в режиме инкогнито?

    @tgarl
    Как вариант, нужно смотреть в код, может там условие в шаблоне на админа прописано?
    Было дело я сам как-то так накосячил, под условием менял шаблон и в одном месте не удалил условие.
  • Из-за чего компонент может вызывать ошибку при загрузке страницы в режиме инкогнито?

    @tgarl
    просто в админке все работает

    Что значит в админке? У вас шаблон выводится в публичной части сайта и в административной?

    Предположу, что вы имеете ввиду под "админкой" - авторизацию под админом, тогда скорее всего у вас кеш. Вы используете/подключаете динамическую часть в кешируемой области. Попробуйте сбросить кеш на сайте, затем посмотреть если сначала все заработает, а потом опять пропадет, значит вы расположили что-то как я сказал выше не там. Если не пропадет, значит все хорошо, просто после изменний вы не сбросили кеш компонента и не пришло его время обновления.
    Еще вариант если у вас включен композит на сайте(опять же вариант кеша) - то нужно смотреть что у вас с динамикой попадает в статическую область.
  • Можно ли оформлять заказы без авторизации?

    @tgarl
    В этом случае можно нарваться на момент когда пересекутся несколько клиентов и один будет либо дополнять либо удалять что-то из корзины другого. Но как вариант, рабочий, почему бы и нет.
  • Как прикреплять картинку к заказу?

    @tgarl
    мне думается вы не то хотите сделать.
    Вот вы сохранили картинку file_put_contents($file, $data). Все дальше работаете с ней.

    Я так понимаю у вас после отображения картинки появится кнопка типа заказать или нет?
    так вот по клику на нее передаете путь к вашей картинке, в том же скрипте вы будете создавать/добавлять элементы не знаю каталога или корзины или еще чего-то.

    Вы сначала определитесь с процессом. У вас с этим не понятно что и как.