Ответы пользователя по тегу 1С-Битрикс
  • Битрикс, скидки для разных пользователей + сортировка?

    Так как мы ничего не дождались, вот мой ответ:

    Так как скидки вычисляются в рантайме PHP, вы никак не можете упорядочить товары по цене со скидкой в запросе и сортировку необходимо выполнять ПОСЛЕ того как вычислена цена скидки.

    Хуже того то, что вам для формирования каждой страницы придется извлечь ВСЕ товары, вычилсить цену со скидкой для ВСЕХ товаров, отсортировать массив в рантайме и выбрать из него товары для страницы.

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

    Следовательно нам нужен кэш. И было неплохо этот кэш сделать максимально узким чтобы как можно реже его обновлять. А лучше вычислять прямо при добавлении нового товара и желательно только для него.

    Что хранить в этом кэше? Выходит только что предвычисленные цены со скидкой...

    И вот мы вернулись ровно сюда:
    Как сделать, если у меня становится несколько групп?
    Не создавать на каждую группу новое свойство и по нему сортировать?

    Именно так и делать. Если групп относительно не много. Скажем до 2-3х десятков такое решение все равно будет оптимальным и самым быстрым.

    Обновление значений вешайте на апдейт товара/элемента на события.

    Если групп много - делайте то же самое но заводите отдельну таблицу и делайте джойны при выборке.
    И сравнивайте скорость работы обоих решений - с определенного момента при росте свойств второе станет чуть быстрее мне кажется.
    Ответ написан
  • Как использовать JavaScript с Bitrix?

    Flipflap, затем что вы делаете утверждения не соотвествующие действительности.
    Зачем вот это вот:
    там меню свёрстано не списком на html, а выводится массивом на php

    ?
    Если не понимаете как формируется меню лучше спросить как это происходит.

    На основе массива php компонентом menu по шаблону указанному для этого компонента, генерируется html блок представления меню.

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

    Вам нужно найти шаблон на базе которого генерируется меню.

    Рискну предположить что он где-то там: /local/.default/components/bitrix/menu/...
    Но вомзожно и по другому пути - все зависит от того кто и как кастомизировал сайт.
    Ответ написан
  • Как избавиться от дублей в sitemap Bitrix?

    Вот и ответ. Скорее всего в каком-то инфоблоке так прописан URL детальки элемента и этот ИБ в индексе. Для каждого элемент генерируется УРЛ детальной страницы. Уберите либо ИБ из генерациия карты, либо в настройках уберите шаблон URL
    Ответ написан
  • Битрикс вопрос по лицензии?

    При установке выбрали Малый бизнес. Потом активировали ключом от старта.
    Ответ написан
  • Как генерировать уникальную строку перед сохранение в БД (D7 bitrix)?

    Может быть только один случай когда вам нужно генерировать индентификатор до внесения в БД - это когда клиент вынужден выполнять операции связанные с записью не сделаной в БД с состоянии отсуствия связи.
    Пример - вы создаёте на клиенте скажем список дел и добавляете в этот новый список новые пункты. И вам нужно чтобы это всё работало, даже пока связи с БД нет, а синхронизируется оно потом. На этот случай придуманы UUID.
    В вашем случае ничего такого нет поэто правильно - автоинкрементируемое поле.

    В самом простом случае +1 в иных случаях (оптовый заказ, индивидуальная поставка, дальний склад) номера заказов могут принимать вид AA-02-1122, AA-02-1123, AA-02-1124.

    А это вообще никак не относится к делу. Совсем. Этот номер генерируется ПОСЛЕ добавления записии из ппрефиксов и ИД: {ТипЗаказ}{ТипДоставки}-{Номерсклада}-ИД
    Можете писать его в отдельное поле, которое можете назвать Номер заказа и радоваться.
    Ответ написан
  • Как в поиске сделать упор на заголовки элементов каталога?

    Переиндексация тут не нужна - это же параметр каталога.
    Нужно разбираться почему не срабатывает параметр USE_TITLE_RANK - такого быть не должно.
    catalog.search - стандартный?
    Попробуйте на не кастомизированном шаблоне.
    USE_SEARCH_RESULT_ORDER Включен?
    Ответ написан
  • Откуда берется переадресация с SEF_APPLICATION_CUR_PAGE_URL?

    Suntechnic
    @Suntechnic Автор вопроса
    Я так и не нашел откуда берется это (не сильно и искал), просто на событие OnBeforeProlog повесил обработчик:
    if ($_REQUEST['SEF_APPLICATION_CUR_PAGE_URL']
                    && $_REQUEST['AUTH_FORM'] == 'Y'
                    && $_REQUEST['TYPE'] == 'AUTH') {
                global $USER;
                if ($USER->IsAuthorized()) {
                    LocalRedirect($_REQUEST['SEF_APPLICATION_CUR_PAGE_URL']);
                }
            }

    Проблема вроде нет.
    Ответ написан
  • Какая лучшая cms?

    Странный вопрос - вы же понимаете что вам будут советовать то с чем работают советчики. Даже те, кто работал со всеми тремя платформами, любят на самом деле что-то одно.
    Вот я бы раставил то что вы предлагаете ровно так же как стоят теги. При этом хочется отметить что Joomla вообще не CMS.
    Сам делал бы на Bitrix + Vue, но отказавшись от фронтальной части CMS. Т.е. использовал бы Buitrix как фреймворк и админку.
    Ответ написан
  • Как определяете какую часть верстки выносить в header.php если много мелких различий в шапке?

    Если делать условия по урлу
    то будет не просто большая портянка, а еще в аду тебя будут варить в самом горячем котле.

    Пока я пришел к такому варианту, что буду использовать отложенные функции

    Все правильтно сделал - пусть страница сама управляет шаблоном над собой, если нельзя избежать такой верстки как ты описываешь.

    Причем на некоторых один вариант, на других второй, ещё на нескольких третий, а на главной четвертый. И таких мелочей где меняется один класс в шапке много, иногда добавляется новые теги(дивы), но это уже редко.

    В целом таких ситуацию лучше избегать, а при необходимости внесение различий в вид, управлять ими через css + классы на body типа .page-main, .page-inner, .page-blog (тире и подчеркивания можно расставить в зависимости от типа расстройства у верстальщика) и так далее, а вот эти классы вешать через отложенные функциию.
    Ответ написан
  • Как передать в шаблон компонента данные?

    Смотрите содержимое $arParams. Оно будет таким:
    Array(
          ...
          "MENU_TITLE" => "О гостинице"
          "~MENU_TITLE" => "О гостинице"
          ...
        )
    Ответ написан
  • Где лучше хранить изображения для статических страниц в bitrix?

    или в /local/img/ПутьКРазделу/pic.jpg

    Все варианты рабочие. У всех есть плюсы и минусы и практически все эти плюсы и минусы можно игнорировать если вы не используете систему контроля версий, вроде git.
    Ответ написан
  • Как сделать сортировку товаров AJAX в Bitrix, не используя настройку ajax для компонента каталога?

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

    Проблема не в этом. Вот только вчера ругался с верстальщиком - проблема в том что вы используете jquery и ajax - не надо так. Точнее можно, но очень оккуратно, понимая что происходит.
    А в прниципе они противопоказаны друг-другу, потому что ajax обновляет DOM, а jquery работает с событиями которые навешиваются на элементы DOM.

    Решния такие:
    1 Самое простое - перевесить все события на document или body. Ну т.е. у вас есть скрпит какой-то который навешен на '.baybutton' скажем как-то так$('.baybutton').click Меняете его на $(document).on(.baybutton','click'' или как-то так. Соотвественно, когда вы заменете ajax'ом эту кнопку, событие на ней останется, так как висит на документе.

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

    И да - битрикс тут не при чем.
    Ответ написан
  • Как оставить некоторые js-скрипты в head?

    Использую перенос всех js-скриптов в подвал (Переместить весь Javascript в конец страницы).

    Уберите эту галку - это плохая идея. Она сводится к обработке на каждом хите страницы регулярками.


    Но счетчики Метрики, Google Analitics, Facebook должны быть в .

    Не должны, а хотят. Для них это хорошо, для вас это плохо. В том числе и потому что считать они будут даже не догруженные до конца страницы.

    Пробовал просто использовать в header.php, но все равно уносится все в подвал. Как быть? Как выборочно оставить скрипты в ?

    Как написал - снять все галки, а скрипты размещать вручную.
    Для вывода добавленных через ядро вы можете использовать $APPLICATION->ShowHeadScripts();
    Разместив это в подвале и или в шапке, а в альтернативной части страницы просто <script></script>
    Ответ написан
  • Как объединить header у всех шаблонов 1C-Битрикс?

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

    Это не совсем так. Как правило шаблон один. Но можно сделать и свой для каждой страницы.

    Но дело в том что большая часть этих страниц, особенно footer.php и header.php почти одинаковые. Отличие бывает в 1-2 .js, .css файла.

    Если отличия только в подключаемых файлах, то совершенно не правильно делать шаблоны различные для страниц. Шаблон должен быть один, а js и css классически должны подключаться компонентами которым они нужны или в крайнем случае на самих страницах.

    Это страдание разработчиков Битрикс или есть правильно решение?

    Есть. Описал выше.

    Есть какой-то общий файл header.php/footer.php куда я могу прописать все 1 раз.

    Ничто не мешает вам их сделать. Например многие размещают такие файлы в /local/layout и инклюдят внутри разных шаблонов в их header.php/footer.php
    Я еще иногда помещаю их в /local/templates/.default

    И как мне по условию id страницы или её типа может или еще какого параметра подгружать точечно нужные мне скрипты?

    Это не нужно. Подключайте в сами страницах с помощью Asset::getInstance()->addJs("/my_scripts.js");
    Ответ написан
  • Как работать/проверять разные ветки в git нескольким пользователям в Битрикс:Управление сайтом?

    Проблема у вас в том, что по загадочной причине, вы проверяете работу на серверах разработки. А должны это делать на тестовых серверах, где никакая разработка не ведется.

    Создавать под каждую задачу тестовую площадку

    Ваши специалисты абсолютно правы.

    но это неоптимально по куче различных причин

    Можно услышать хотя бы две? Я не вижу таки причин, при использовании веток Git.

    P.S. Битрикс тут не при чем.
    Ответ написан
  • Откуда взялась таинственная spam-регистрация на bitrix-сайте?

    Добавлю к посту Евгений, что для защиты можно снять галку "Позволять пользователям регистрироваться" (или как-то так) в настройках главного модуля. А "Запрашивать CAPTCHA при регистрации" наоборот - поставить.
    Ответ написан
  • Из за чего не подключаются стандартные скрипты и стили в админке Битрикс?

    Там скорее всего статику отдает nginx так что htaccess не при чем.
    Возможно в настройках nginx есть правило запрещающие доступ к этим файлам.
    Или сами файлы недоступны для чтения сервером, просто по причине прав на сами файлы/папки (не знаю как это в виндовс работает)
    Ответ написан
  • Как решить проблему дублей на Bitrix?

    При чем тут битрикс? В смысле причем он как источник проблемы? Вы сделали две одинаковые страницы, а теперь спрашиваете почему они одинаковые? Поразительно.
    А собственно почему это страницы отображающей один и тот же товар должны быть разные тайтл и дескрипшин? Это что, разные товары?
    Ну то-есть у вас проблемы не с битриксом, с логикой вашего каталога. Приведите в порядок логику и маркетинговый план.
    Разберитесь каким должны быть тайтл и дискрипшен у товара.
    Обоснуйте почему они у ОДНОГО И ТОГО ЖЕ товара должны быть разные и по каким принципам должны формироваться - дальше будет понятно что делать.


    Технической же проблемы большой нет - наверняка сейчас у вас тайтл и дексрпшин формируются по правилам настроенным в настройках инфоблока и устанавливаются штатным компонентом. Никто не мешает вам добавить в шаблон компонента например component_epilog и устанавливать параметры страницы в нем, так как вам нужно, по логике которая вам необходима.
    Ответ написан