• Как в 1С-Битрикс сделать рандомную сортировку в каталоге?

    Делаем обычную сортировку по SORT, а дальше:

    1 в шаблоне выводим только элементы с сортировкой меньше 23, остальные вываливаем в виде данных и рендерим на на странице js'ом (тупой вариант: выводить в тег script с невыполняемым type, и оттуда добавлять js'ом в страницу), страницы по набору элементов будут одинаковые, но порядок каждый раз будет разным. Кэш работает.

    2 Добавляем 2-4 дополнительных свойства скажем SORT1, SORT2 и т.д. зафигачиваем эти свойства случайными числами и делаем вторую сортировку по одному из них. При этом выбираем по какому именно рандомно. Получаем 4 кэша с разными страницами по составу.

    3 Раз в сутки ночью, агентом переписываем эти допсвойства на другие случайные значения.

    Итого: кэш работает, видимость случайности есть, причем она при каждом обновлении разная и даже хрен поймешь что страницы часто одинаковы по составу. Объем кэша каталог вырастит - ну у всего есть цена.

    UPD:
    Про решение с двумя компонентами - да просто во втором компоненте на первой странице скройте 22 элемента первые и все. Естественно страница должна быть больше 22 элементов.
    Возможно вы сразу возразите, что тогда посетитель в постраничной выборке не увидит эти 22 элемента, поэтому сразу отвечу - вас это вообще не должно волновать, так как у вас посетитель вообще не увидит почти половину каталога (так на вскидку 40-45%) при случайной выборке + пагинации. Вообще пагинация при настоящей случайной выборке полностью лишена смысла.
    Рабочее решение близкое к вашим требованиям я выше привел.
    Если хотите избавится в нем от того что часть элементов каталога будет невидна при пагинации - передавайте в свойствах пагинации еще и свойство сортировки случайно выставленное на первой стартовой странице.
    Ответ написан
    Комментировать
  • Как в Битрикс вывести множественное свойство через API?

    alex-1917
    @alex-1917
    Если ответ помог, отметь решением
    этот код внутри твоего цикла будет, это битрикс, увы и ах
    $VALUES = array();
    $res = CIBlockElement::GetProperty($IBLOCK_ID, $ELEMENT_ID, Array("sort"=>"asc"), array("CODE" => "UF_NOTE_USER"));
        while ($ob = $res->GetNext())
        {
            $VALUES[] = $ob['VALUE'];
        }
    }


    Или другой варик - если ты включаешь множественное в arSelect, то у тебя будет вот такой нюанс, в доках описан:
    Примечание 1: если в массиве используются свойство, являющееся множественным, то для элементов, где используются несколько значений этого свойства, будет возвращено несколько записей вместо одной. Для решения этой проблемы инфоблоки нужно перевести в Режим хранения свойств в отдельных таблицах, в этом случае для свойства будет отдаваться массив значений. Либо можно не указывать свойства в параметрах выборки, а получать их значения на каждом шаге перебора выборки с помощью _CIBElement::GetProperties().

    Я делаю так - в арселект включаю множественное, но дальшее в php отсекаю повторы, в массиве останутся первые по сортировке значения множественных полей.
    Это битрикс, детка,это битрикс.
    Ответ написан
    1 комментарий
  • Как внести данные в свойство Список через API 1-C Bitrix?

    winer
    @winer
    занимаюсь разработкой сайтов на 1c-bitrix
    В качестве значения свойства типа "Список" надо передавать на XML_ID, а ID.
    5ca03b88124d6416139402.png
    Ответ написан
    Комментировать
  • Почему с сайта приходят пустые заявки?

    orlov0562
    @orlov0562 Куратор тега PHP
    I'm cool!
    В указанном куске данных все верно, возможно проблема где-то еще.

    Попробуй логировать все данные перед отправкой в файл, и потом его проанализировать.

    Так же попробуй, использовать регулярку, чтоб отсеить любые нежелательные символы
    if (empty($phone) OR !trim($phone)) die();
    if (!preg_match('~^[-+0-9]{8,}$~', trim($phone))) die();

    * от начала до конца строки должны быть только символы -+ или цифра, минимум 8 символов
    Ответ написан
    2 комментария
  • Почему неправильно работает пагинация в Wordpress?

    HectorPrima
    @HectorPrima
    программист
    Для кастомного запроса нужно такой же пагинатор. Типа:
    ...
    <?php endwhile; ?>
    <?php if ($recent->max_num_pages > 1) : // custom pagination  ?>
        <?php
        $orig_query = $wp_query;
        $wp_query = $recent;
        ?>
        <nav class="prev-next-posts">
            <div class="prev-posts-link">
                <?php echo get_next_posts_link( 'Older Entries', $custom_query->max_num_pages ); ?>
            </div>
            <div class="next-posts-link">
                <?php echo get_previous_posts_link( 'Newer Entries' ); ?>
            </div>
        </nav>
        <?php
        $wp_query = $orig_query;
        ?>
    <?php endif; ?>
    <?php wp_reset_postdata(); ?>
    ...
    Ответ написан
    1 комментарий
  • Как вывести XML_ID свойства типа список в битриксе?

    @kacheleff
    fullstack developer
    С помощью CIBlockElement::GetList не получится. Воспользуйтесь этим
    Ответ написан
    Комментировать
  • Как сделать чтобы результаты поиска отображались на специальной странице в Битрикс?

    babarun
    @babarun Куратор тега 1С-Битрикс
    Безумный план моих идей в руках больных людей
    1. Создайте отдельный раздел /search/, в нём index.php, в него вставляете компонент bitrix:search
    2. В шаблоне сайта, в хедере размещаете компонент bitrix:search.title, в настройках которого указываете, помимо всего прочего, "PAGE" => SITE_DIR."search/"
    Ответ написан
    Комментировать
  • Как вывести значение свойства товара в Битриксе?

    В первую очередь загляните в настройки компонента - возможно, там задан фильтр, какие свойства выводить.
    Если фильтр не задан, и его задание не помогает (или даже что-то ломает), то я бы пошёл так:
    1) посмотрел в настройки инфоблока, чтобы узнать ID и CODE этого свойства.
    2) в шаблоне компонента сделал print_r() и увидел, что именно для товара уже вытащено из БД.
    3) Если нужного свойства нет - написал бы в result_modifier.php код для извлечения этого свойства.
    Ответ написан
    1 комментарий
  • Как настроить хостинг чтобы не писалось access denied когда заходишь на страницу на домене?

    Sanes
    @Sanes
    Обратитесь в поддержку хостинга.
    Ответ написан
    Комментировать
  • Как организовать страницу отзвывов в Битрикс?

    @DeclanBartowski
    Добавить на страницу форму обратной связи.
    Сделать запись в инфоблок при удачной отправки(апи поможет).
    Вывести на страницы news.list этого инфоблока
    Ответ написан
    Комментировать