• Распродажа повторяет комплексный компонент catalog bitrix. Как настроить массив в FILTER_NAME чтобы на распродаже выводлись только товары с скидкой?

    nikolaevevge
    @nikolaevevge Автор вопроса
    Сейчас решил следующим образом, при этом если у Вас есть иное решение - пожалуйста, предлагайте!

    require($_SERVER['DOCUMENT_ROOT'].'/local/templates/main/phpscripts/myGetBasketData.php');// класс нужен для получения Id товаров с скидкой
    $myGetBasketData = new myGetBasketData;

    global $arrFilter;
    $arrFilter = array();
    $arrFilter["=ID"] = $myGetBasketData->getProductIdDiscontAr();

    далее $arrFilter передаём комплексному компоненту bitrix catalog через FILTER_NAME а именно
    $APPLICATION->IncludeComponent(
    "bitrix:catalog",
    "new_catalog",
    array(
    "FILTER_NAME" => "arrFilter",
    ...

    Метод getProductIdDiscontAr класса myGetBasketData доступен в листинге файла класса myGetBasketData.php по ссылке blog.ivru.net/?id=96

    Важно! Метод возвращает массив товаров с скидкой, только тогда, когда скидка создана непосредственно на товар, то есть так как показано на скринсшоте.
    5d15f4350ea9c968017210.jpeg

    Алгоритм работы метода определения Id товаров с скидкой метода getProductIdDiscontAr() примерно следующий

    1) получается список скидок через CSaleDiscount::GetList
    2) далее в foreach Id скидок передаются в CSaleDiscount::GetByID
    3) у возвращённых данных проверяется наличие и не пустота ключа массива ["CONDITIONS"]
    4) если строка есть и не пустая парсятся данные от Equal";s:5:"value";a: до }
    5) если такие данные найдены то они множественно парсятся от i: до ;
    6) каждое второе значение это и есть Id товара на который действует скидка(эти Id собираются в массив $prodIdAr и возвращаются методом getProductIdDiscontAr)

    Таким образом если у Вас скидки указаны не явно на товар а например по свойства, то метод нужно дописывать под такие скидки.
    Ответ написан
    Комментировать
  • Как в bitrix catalog.section выполнить фильтрацию по свойствам торговых предложений?

    nikolaevevge
    @nikolaevevge Автор вопроса
    Ответ дали на форуме битрикс в этой ветке - https://dev.1c-bitrix.ru/support/forum/forum6/topi...

    Ответ такой:

    foreach ($_GET as $key => $get) :
    if (is_array($get)) {
    foreach ($get as $value) {
    $arrFilter['OFFERS']['PROPERTY_'.$key.'_VALUE'][] = $value;
    }
    }
    endforeach;
    Ответ написан
    Комментировать
  • Требуется ли онлайн-касса для сайта рекомендаций вне РФ?

    Если что сама яндекс-касса не обязует Вас использовать именно их ОФД. Лишь предоставляет такую возможность. Касаемо обязанности бизнеса перед налоговой ответа пока не знаю.
    Ответ написан
    Комментировать
  • Битрикс - Как при регистрации выбирать группу пользователей?

    Если Вас методы API интересуют, вот здесь есть несколько примеров кода blog.ivru.net/?id=29 регистрации по API с одновременным присвоением нужной группе. Там же найдёте как эти группы методами API получить. Остаётся в форму подгрузить и добавить нужное на скрипт авторизации.
    Ответ написан
    Комментировать
  • Как вывести торговые предложения в карточке товара?

    Вот этот код посмотрите - blog.ivru.net/?id=52 ? То что Вам нужно или нет?
    Тут такой момент, в этом коде свойства торгового предложения подгружаются через result_modifier.php на текущий момент я не нашёл стандартного решения как это делать из коробки, если знаете расскажите.

    Ну и соответственно в шаблоне обращаетесь через $arResult["OFFERS"]
    Ответ написан
    Комментировать
  • Как расчитать стоимость доставки Bitrix?

    Ответ написан
    Комментировать
  • Как сделать редирект с .php на / в Bitrix на Nginx?

    Велосипедом:
    в верху файлов /bitrix/modules/main/include/prolog_before.php и /bitrix/header.php проверить $_SERVER["REQUEST_URI"] на наличие .php, при необходимости выполнить переадресацию на нужный адрес.
    Чтобы ничего не отваливалось добавить исключения на адреса в частности начинающиеся с /bitrix/
    Ответ написан
    Комментировать
  • Как удалить index.php из url?

    А если в верху исполняемого файла php на который ссылается rewrite написать так?(но это без правок htaccess)

    <?php
    if (strpos("index.php",$_SERVER["REQUEST_URI"]) !== false) {
    header("location: ". str_replace("index.php","",$_SERVER["REQUEST_URI"]),301,true);
    exit;
    }
    Ответ написан
  • Возможно лт узнать местоположение человека в PYTHON?

    Если Вам по IP нужно определить как вариант можно использовать ipGeoBase blog.ivru.net/?id=82
    Ответ написан
    Комментировать
  • Зачем существует "дырявая" клиентская oAuth авторизация?

    >>Зачем вообще существует второй вариант? Ведь любой узел (сисадмин, владелец точки wi-fi, провайдер, товарищ майор) может просто взять готовый токен и использовать его.

    Данные передаётся по HTTPS! Следовательно токен не доступен промежуточным узлам, так как информация зашифрована.
    Если рассматривать авторизацию через ВКонтакте токен известен толкьо: 1) ВКонтакте, 2) Сайту на который производится авторизация, 3) самому пользователю осуществляющему авторизацию
    Все промежуточные провайдеры знают только что клиент по факту соединяется с некоторым IP адресом при использовании HTTPS протокола, и они не знают на какой url осуществляется запрос.
    Ответ написан
    2 комментария
  • Вешаем новый сайт на старый домен - как не потерять позиции в CEO?

    Здравствуйте!
    Проделывал примерно следующее:
    вставлял в файл который отвечает за rewrite код в котором:
    1)есть массив старых url которые проиндексированы поисковиками
    2) есть массив новых url для новой версии сайта
    3) если адрес контента на новом сайте совпадает с старым например /contacts/ тогда в массивах эти URi не виксируются
    4)Далее проверка если в массиве текущий URL есть (сравнение с $_SERVER["REQUEST_URI"]) тогда переадресация так header("location: /новый_uri",301,true);exit; иначе продолжается загрузка новой cms

    В случаи bitrix такой код можно разместить в файлах /bitrix/modules/main/include/prolog_before.php и /bitrix/header.php

    Таким образом и пользователи пришедшие из поиска по старым ссылкам попадут на актуальный адрес размещения контента и поисковики поймут где находится теперь контент.
    Многократно испытано - позиции как правило только росли.

    По поводу нужно ли вешать новый сайт для начала на новый домен: если вы используете значительное число текстов в старого сайта то точно нет. Если проведена полная уникализация - нужно уже по обстоятельствам, возможно даже есть смысл временно оставить старый сайт на поддомене old.domen.ru - но полагаю у Вас как и у всех используются старые тексты, поэтому ответ - на тот же домен.
    Ответ написан
    Комментировать
  • SEO оптимизация изображений?

    >>есть мнение о том что нужно их подписывать по названию ЧПУ ссылки + слово фото или изображение транслитерацией.
    И без этого может быть всё нормально если стоят корректные title и alt а так же a href прочие данные указывающие на разные форматы(размеры) изображения. При этом если Вы сможете сделать ЧПУ для картинок - хуже точно не будет, поэтому ответ такой - если знаете как - делайте, если это трудоёмко то особого смысла нет. Не представляю например как Вы это в битрикс сделаете.

    >>Насколько оправдано писать слово фото или изображение или лого?
    Вы имеете в адресе файла? Если да - то особого эффекта Вы от этого не заметите, при этом опять же если Вы это сделаете - то вот ТОЧНО - поисковая система Вас за это не оштрафует. А на счёт поощрений - может быть, при этом на значительные не рассчитывайте.

    >>Какого размера должна быть фотография?
    >>-есть мнение о том что фотография не должна быть не качественной и в то же время она не должна быть слишком весомой.
    Ответ такой - делайте качественно для людей. В адаптиве выбирайте нужный формат(размер) под устройство, при этом давайте возможность смотреть в лупе более качественное изображение.
    И точно хуже не будет если Вы будите использоваться программы оптимизации, которые уменьшат размер без потери качества, по крайне мере google кричит что это любит.

    >>3 Нужен alt, это точно title фотки не так важен. И имеет смысл делать подписи под фото (улучшает юзабилити)
    И alt и title будут плюсом. Контекстное окружение имеет значение, проверено на практике что появлялись превью в изображениях в поисковой системе яндекс при поиске по фразам из окружения.

    >> Зачем некоторые сайты пишут свой URL на своих изображениях?
    Некоторая уникализация, а так же защита от копирования

    >>Еще говорят что все картинки должны быть уникальные. Есть ли смысл фотографировать всю продукцию своего интернет магазина?
    Если чётко по вопросу - однозначно плюс. Вообще странно что он возник, Вы хотите чужие фотки похожего товара что-ли разместить?
    Ответ написан
    Комментировать
  • Как настроить функционал изменения пароля пользователя в Bitrix?

    Так же столкнулся с ситуацией, что возникала указанная ошибка при использовании метода ChangePassword. Решил задачу через $USER->Update(...);
    Код решения тут blog.ivru.net/?id=92

    Решение с define("AUTH", true) мне не помогло.
    Ответ написан
    Комментировать
  • Как запретить пользователю повторно заполнять и отправлять форму?

    Открываете сессию.

    при отправке формы проверяете в $_SESSION налчиие какого либо элемента например if (!isset($_SESSION["formsend"])) { ... тут код если ранее не отправлял}
    После отправки создаёте запись в сессии $_SESSION["formsend"] = 1;
    Ответ написан
    Комментировать
  • Curl php повторный запрос?

    HTTP устроен так что он в любом случаи после того как Вы получили данные с одной страницы разрывает соединение, хотя это не совсем так если есть кип аливе, хотя он не влияет на суть HTTP протокола - сервер отдал вам данные. Если даже соединение с сервером не разорвано запрос всё равно нужно делать заново и заново передавать все данные.

    Пробуйте так: curlpro.ivru.net

    <?php
    require_once('curlpro.php');
    $cp = new curlPro;
    $cp->newip("domen.ru");
    $cp->newuri("/page1.html");
    $cp->cookiedata("ключь_первой_куки","значение_первой_куки");
    //$cp->https(true);//Раскоментировать если https
    $html1 = $cp->go()->val();

    // Ещё один запрос с данными кук пришедших от сервера
    $cp->setservercookie();// Установить для нового запроса куки от сервера
    $cp->newuri("/page2.html");
    $html2 = $cp->go()->val();
    Ответ написан
    Комментировать
  • Как получить все значения цен в битрикс?

    К ответу выше добавлю ещё метод CCatalogProduct::GetOptimalPrice(). точно не помню зачем он мне пригодится, но указанным выше getList не получалось достать какую то скидку.
    Ответ написан
    Комментировать
  • Bitrix REST API не отрабатывает?

    Добрый день попробуйте этой штукой законектиться curlpro.ivru.net

    <?php
    require_once("curlpro.php");
    $cp = new curlPro;
    $cp->newid("domen.ru");
    $cp->newuri("page.html");
    $html = $cp->go()->val();
    echo $html;

    Если браузером конектится то и так должны прийти данные.

    У Вас curl на сервере с которого отправляете запрос точно работает? Попробовали бы на другой домен для теста обратиться.
    Ответ написан
  • Как скрыть от парсинга цену на сайте (на примере 1С Bitrix)?

    Могу предложить такое решение:

    В момент когда загружается логотип или какое то другой элемент который есть на всех страницах сайта - установите куку. Желательно её значение как то зашифровать чтобы просто так было не подобрать.

    Далее если на сервер эта кука правильная пришла - выводите цену, иначе пустоту или слово ФИГ.

    Как правило парсеры пишут так что они картинки не трогают.
    Такую фишку я как то обнаружил на сайте ВКонтакте, когда часть данных необходимых для прохождения процедуры авторизации они засунули в логотип.
    Ответ написан
    Комментировать
  • Bitrix модуль поиска. Как отключить поиск по 3-м символам(При поиске "Белье" в запрос попадает товар "Белый бедведь" по совпадению бел)?

    nikolaevevge
    @nikolaevevge Автор вопроса
    Вопрос снят, решение найдено.
    Дело было не в 3-х символьном поиске, а в том что слово Белый является словоформой Бельё в морфологическом поиске. Чтобы так не искало выключил морфологию в настройках компонента и модуля поиск - перестало.
    Но в целом скорее всего морфологию оставим, поскольку видимо так повезло что попали именно в такую словоформу.
    Вот переписка с поддержкой Битрикс, благодаря которой и было найдено решение.

    5ced2aaae6f35122702146.jpeg5ced2ab47ea71842611654.jpeg5ced2abbb1891913102140.jpeg
    Ответ написан
    Комментировать
  • Как вывести не авторизованному пользователю форум с доступом "Нет доступа"?

    Проверку можно организовать через if (!CUser::GetID()) {// логика для не авторизованного
    } else {// логика для авторизованного
    }
    Описанное мной решение не претендует на стандартное, с bitrix порядка полу года.
    Ответ написан
    Комментировать