Жуков Евгений, спасибо! но вот прям только что разобрался с этим... ещё вопрос: есть ли в D7 событие на удаление товара из корзины? добавление/обновление фиксирую через OnSaleBasketItemEntitySaved.
p.s. делаю модуль с логгированием пользовательских действий с корзиной (такая задача, увы )
Юшкин Роман, define если попробовать то возможно и сработает. Но с новыми версиями битрикса нужно проверять (там автопересчет правил насколько помню уже идет для категорий, может каким образом влияет)
Загальский Андрей, попробовал , вроде не работает. Но я решил такую задачу другим, более нормальным способом, путем реструктуризации каталога. Спасибо за ответ!
Добрый день, всем! Необходимо реализовать функцию шаблонов less, и использовать следующим образом {=less iblock_element_property.70 "0.30" iblock_element_property.191.PROPERTY_183 iblock_element_property.191.PROPERTY_184}.
Сейчас в инфоблоке iblock_element_property.70 есть свойство типа строка с разными значениями веса изделия, например, 0.12, 1.12 и т.д.
Т.е. если есть свойство инфоблока iblock_element_property.70 и его значение меньше числа 0.30, то выводить значение свойства PROPERTY_183. если больше либо равно 0.30, то выводить значение другого свойства PROPERTY_184 из другого инфоблока, как это реализовать в пользовательской функции, зарегистрировать обработчик события этой функции в файле init.php и использовать ее в шаблоне?
Помогите реализовать очень нужно, заранее спасибо!
Записал сюда в блог для сохранения... Фасетный индекс нужно пересчитать по завершении. либо использовать PropertyIndex\Manager::updateElementIndex($iblockId, $elementId); после установки раздела
А вы как раздел устанавливаете? Через CIBlockElement::SetElementSection? Если да, то логично. И не только фасету, а еще и seo-параметры. Для установки привязки элемента к разделам используйте CIBlockElement::Update
Жуков Евгений, к сожалению, не смог понять почему они возникли. Если клиент будет жаловаться на эту проблему, буду уже разбираться по коду ядра почему возникает. Возможно в последних обновлениях это исправлено (но пока не могу обновить из-за архитектуры на сервере и версии базы данных)
Клиент работает исключительно через веб интерфейс. Вероятно привязки ломались во время перемещения товаров по разделам со списка в админке (в b_iblock_element - оставалась старая привязка раздела). Вероятно были перемещения разделов в том числе и между их уровнями (DEPTH_LEVEL). Но все через админку. При выводе товаров в списке товары выводило в нужных разделах, но ломались ссылки на детальную страницу (редакция старт)...
Товары загонял парсером без пересчета фасетного индекса на этапе заполнения и только 1 раздел, но обновлений при наполнении не было. $el = new CIBlockElement; $id = $el->Add($fields);
Тоже сейчас столкнулся. Чего с этой бедой делать то?
Мне вот интересно, при таких изменениях, насколько сложно обновить документацию или хотя бы описать изменения в ORM, чтобы можно было без сюрпризов обновляться.
Итак функциональные возможности приложения: 1. Работа в offline режиме 2. Автоматическое обновление без перезаливки сборок в google Play и App Store 3. Пуш уведомления 4. Расширить функциональность можно с помощью плагинов http://cordova.apache.org/plugins/?q=
Структура шаблона, браузерная версия, и механизм работы 1. Файлы в /mobile_app/www/ должны быть расчитаны на то, что не будут изменяться. Иначе для их изменения потребуется перезаливка сборок в маркеты 2. js/app.js - настройка которая понадобится для браузера и для разработки browser: true (не загружает js и css а берет напрямую с сервера, чтобы не обновлять постоянно базу) - для сборки приложения тут будет browser: false - логика скрипта заключается в создании базы и загрузке в нее данных: шаблон html, шаблоны страниц, оффлайн страницы, меню, кастомные стили, кастомный js 3. в качестве базы используется web sql 4. также для index.html используются прямые подключения файла js и css, при сборке нужно убирать
Подробно по файлам: ajax.php - это запросы по url=/ajax/$page/, $page = /pages/$page.php css.php - получение кастомного файла стилей, по умолчанию грузит из /custom/main.css js.php - получение кастомного файла скриптов, по умолчанию грузит из /custom/main.js menu.php - меню приложения pages.php - список страниц для загрузки в базу, а также их содержание приложение отправляет запрос /page/ шаблон отдает список страниц после приложение поэтапно шлет запросы на получение данных, идентификаторы содержаться в $arResult['VARIABLES']['GET_PAGES'] эти данные пишутся в базу в приложении в json tmpl.php - шаблоны страниц приложения, получает из папки /tmpl/ version.php - версия приложения, при изменении версии обновит данные у всех автоматически при запуске и наличии интернет
папка /pages/ - это online страницы, и скрипты для приемки данных updatepush.php - обновляет идентификаторы пуш, выданные FCM err.php - это страница ошибки если по адресу /ajax/$page - не найдется данных *.php - любые ваши online страницы (при размещении компонентов битрикса, пагинаций, фильтров и т.п. следует учитывать что каждый запрос с приложения подписывается get параметрами, версия, ид устройства, ключ и т.п.)
папка /tmpl/ error.tmpl - страница ошибки при поиске страницы в базе html_page.tmpl - шаблон html страницы main.tmpl - шаблон главной online страницы main_offline.tmpl - шаблон главной offline страницы - *.php - любые шаблоны offline страниц, если страницы статические можно не заморачиваться и размещать их сюда, pages.php получит и загрузит их автоматически Подробно о main.js Файл содержит в себе всб логику вашего приложения, весь код в данном файле выполняется в eval(); в приложении при запуске Основной механизм это подключение fraimework7 + некотороя надстройка для работы с ним и обход некоторых ньансов и механизмов работы библиотеки. есть костыли для отображения кнопки назад, т.к. фреймворк автоматически подгружает предыдущие страницы и некоторые другие ньансы... Основные проблемы это работа истории и кнопки назад (они же были и в версии fraimework7 v.1), скорее из-за особенности оффлайн режима и того что фреймворк не подразумевает что оффлайн данные будут лежать гдето в базе внутри приложения и изменяться со временем
вообщем этот каркас я использую во всех своих приложениях ничего не меняя комментарии в коде кое-какие написал... чтобы понять логику... Сборка приложения в phonegap build 1. Необходимо зарегистрироваться на сервисе https://build.phonegap.com/ 2. Создать реп на git для приложения. Пример: https://github.com/artlux/mlife.mobileapptest 3. Для пушей добавляем проект в https://console.firebase.google.com/project/ (для отправки с админки битрикса, копируем ключ в настройки модуля). для android приложения скачиваем google-services.json, для ios GoogleService-Info.plist 4. Меняем стартовый url в app.js (меняем изображения и свои стили, если вы их решили добавить) 5. делаем иконки и сплеш экраны (размеры и настройки в config.xml взял из одного из своих проектов). Примеры для phonegap build, также есть на акаунте (правда пока не все переделаны под fraimework7.v2)
Подробнее о добавлении плагинов и параметров для сборки смотрите в документации cordova, и phonegap build
Для андроид можно без ключей сбилдить debug версию в которой все будет работать Публикация приложения: Release версия android требует ключа, как создать можно погуглить (акаунт в google play для публикации единоразово, точно сумму не помню но гдето около 25$) Для ios требуется аккаунт разработчика, создание сертификатов, ключей, провизии происходит через личный кабинет developer.apple.com (стоит 99$ в год, для беларуси накладно с учетом того что юзают приложения не много людей) Конвертация в нужный формат уже через приложение на MAC Keychain Access (самый простой способ), загрузка через application loader Да и без макбука будет тяжеловато грузить сборки, также для тестирования нужно ios устройство (хотя после тестирования на андроид ньансов небыло никаких на ios) Денег на ios технику у меня нет, поэтому я обычно в скайпе попрошайничаю выполнить бесплатно работу тестера По поводу макбука таже история, но можно на vmware развернуть виртуалку хакинтоша, через которую можно загружать приложения Вообще на сам процесс публикации в app store нужно будет набраться терпения и времени Если ктото решит побаловаться и будут какие вопросы можно писать в скайп mlife_development, Если нет андроид устройства но хочется побаловаться то могу собрать тестовую версию приложения и для ios, от вас нужен будет email адрес в app store, для добавления вас в качестве тестера
на данный момент нет поддержки транспорта файлов (но реализация думаю возможно с помощью плагина cordova-plugin-file)
Очень все мощно и красиво; Взял за основу и начал разработку внутренний корп системы; Заметил что в файлах загрузки контента (js.php tmpl.php) стоит
$this->setFrameMode(true);
- желательно либо заменить на
$GLOBALS['APPLICATION']->RestartBuffer();
Раньше не работала кнопка Перезагрузить базу - теперь все ок Единственное не очень понятно как обращаться к ajax страницам - если можно опишите поподробней, а также интересует сама сборка; А так все очень круто спасибо большое!!!!
это конструкция для композита, но ее можно убрать. Он не должен работать.
$GLOBALS['APPLICATION']->RestartBuffer();
Перегружать буффер не требуется т.к. шаблоны не подключаются.
Бельчиков Александр написал: Единственное не очень понятно как обращаться к ajax страницам - если можно опишите поподробней, а также интересует сама сборка; А так все очень круто спасибо большое!!!!
По обращению к страницам, тут уже нужно изучать документацию fraimework7 и конкретно компонент router _mlife.by/bitrix/components/mlife_app/mlife.appnew/templates/raspis_v2/custom/main.js
вот можно глянуть реализацию, пример. path: '/ajax/messages/(.*)',
по сути это тоже обращение как и к обычным страницам но вместо базы, приложение получает запрос по ajax конкретно функция //получение онлайн страницы function getDataFromOnline(page,key,params)
Сам fraimework7 впринципе может в роутере сразу забирать страницу без всяких оберток и т.п. (геморой в текущей реализации это потребовалось для стабильной работы кнопки назад)
Да и не хочется нагружать ТП, всякими непонятными запросами. если бы определил полностью что это с обновлениями пришло и мой говнокод не причем, то другое дело... А так дам доступ - а там из bitrix компонентов только меню и включаемые области и 50+ самописных компонентов. Был бы ТП послал бы сам себя и был бы прав
Жаль что у одного меня выскочило, на форумах вроди тихо по этому поводу. Буду разбираться, думать почему, откуда пришло...
Загальский Андрей, это если вы настроили только правила работы с корзиной без скидок на товар. А когда вы добавили скидки на товар и еще и настроили правила работы с корзиной то в таком случае в товарах уже указанна цена с учетом скидки и исходя из этой скидки применяется правило.
Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».