Михаил Базаров -> Всем
1 апреля 11:05
Заполнить коэффициент единицы измерения (MEASURE_RATIO) из свойства элемента.

Перенесено в блог: https://camouf.ru/blog-note/9255/
Турист -> Всем
25 марта 11:32
Страны для прекрасного отдыха с детьми
Отдых в Греции - это живописные горы, плато, песчаные берега, экзотические гроты, которые предоставляют огромные возможности для полного душевного и телесного отдохновения, как на море, также и в горах. Именно благодаря подобному природному ландшафту тут встречаются различные типы туризма. Эксклюзивно для любителей туризма - ТУТ БЫЛА ССЫЛКА (можете разместить свою, писать через https://camouf.ru/about/)

Туристы выбирают Грецию ввиду столь неповторимой природы, мягкого климата, множества античных памятников, археологических артефактов и, в общем, многочисленных культурных памятников, и еще, благодаря доступности, в плане цен и транспортного сообщения: сюда элементарно добраться по земле, воде или небу.

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

Другое достоинство Греции заключается в том, что практически всякий уголок страны являет собой огромный интерес для иностранных путешественников по причине богатого исторического наследия, природных особенностей и обычаев, соединяя в себе многочисленные преимущества современности с ортодоксальностью, - будь то мегаполис либо даже самая отдаленная деревня островной либо материковой части страны. Подробности на тему возможно найти по ссылке ТУТ ОПЯТЬ БЫЛА ССЫЛКА  (можете разместить свою, писать через https://camouf.ru/about/)

В Болгарии имеются все виды туризма: это и курорты у моря для отдыха летом, культурные туры по городам с вековой историей, и зимние горнолыжные курорты. Отличный климат и прекрасные пляжи с золотистым песочком делают отдых в Болгарии незабвенным. В окна современных отелей дует чистейший бриз с моря, смешанный с ароматом хвойных лесов, которые окружают гостиницы.
Михаил Базаров
Короновирус же, куда там ехать собрались.
Фу на вас, спамеров. Вот прям не буду удалять, пусть будет
Михаил Базаров -> Всем
20 марта 2019 10:57
bitrix.sale.order.ajax раскрыть блоки доставки и оплаты.

Если в компоненте одношагового оформления заказа, нужно раскрыть блоки доставки и оплаты:
В самый низ template.php добавляем
$(window).on('ready', function(event){
    BX.Sale.OrderAjaxComponent.editDeliveryBlock(true);
    BX.Sale.OrderAjaxComponent.editPaySystemBlock(true);
});
Для блоков оплаты и доставки добавляем селектор bx-selected

Тоже самое, можно делать со всеми блоками:
BX.Sale.OrderAjaxComponent.editActiveBasketBlock(true);
BX.Sale.OrderAjaxComponent.editActiveRegionBlock(true);
BX.Sale.OrderAjaxComponent.this.editActiveDeliveryBlock(true);
BX.Sale.OrderAjaxComponent.editActivePaySystemBlock(true);
BX.Sale.OrderAjaxComponent.editActivePickUpBlock(true);
BX.Sale.OrderAjaxComponent.editActivePropsBlock(true);

И можно убрать кнопки "Далее - Назад" в файле order_ajax.js

Для доставки: найти и закомментировать
this.getBlockFooter(deliveryContent);
Для оплаты:
this.getBlockFooter(paySystemContent);

Денис Чучумашев
работает, только после выбора доставки или оплаты, блоки все равно оказываются закрытыми.
Денис Чучумашев
Запускать

   BX.Sale.OrderAjaxComponent.editActiveDeliveryBlock(true);
   BX.Sale.OrderAjaxComponent.editActivePaySystemBlock(true);
...

после каждой валидации - тоже не вариант. Должно быть более гибкое решение
Денис Чучумашев
Нашел способ другой. Причем, блоки изначально остаются открытыми. Я сделал так:

1. комментируем строчки:
/*if (this.activeSectionId !== this.regionBlockNode.id)
this.editFadeRegionContent(this.regionBlockNode.querySelector('.bx-soa-section-content'));

if (this.activeSectionId != this.propsBlockNode.id)
this.editFadePropsContent(this.propsBlockNode.querySelector('.bx-soa-section-content'));*/

2. меняем:
var active = section.id == this.activeSectionId,

на:
var active = true,

3. скрываем кнопки "далее" и "назад" и изменить стилями:
.pull-left.btn-default.btn-md, .pull-right.btn-default.btn-md, .bx-soa-editstep {
   display: none!important;
}
Михаил Базаров -> Всем
10 марта 13:26
Вывести дату создания файла в формате сайта

Что бы это сделать можно воспользоваться методом
CFile::GetFileArray

В параметр передаем ID нужного файла или переменную с нужным ID и классом DateTime
приводим к строке:
<?
$arItem = 123; // ID нужного файла
$rsFile = CFile::GetFileArray($arItem);
echo $rsFile['TIMESTAMP_X']->toString();
?>
Если нужна вся информация о конкретном файле (вес, формат, путь на сервере, описание итд)
Распечатываем массив
<?
print_r($rsFile);
?>

Андрей Белый -> Всем
20 февраля 11:36
Добрый вечер, Михаил
Скажите пожалуйста как реализовать смену вида карточки товара в catalog.section, в МВидео есть подобная штука https://www.mvideo.ru/televizory-i-cif...evizory-65
Спасибо!
Фото:
Андрей Белый
Спасибо большое!)
А скажите пожалуйста, если будет реализовано смена шаблона catalog.section через AJAX и параллельно такая сортировка https://camouf.ru/blog-note/752/?sphra...e_id=42177 это адекватно будет работать? Могут ли быть какие-нибудь подводные камни?
Михаил Базаров
Сортировку лучше сделайте по этому же способу. Передавайте $_SESSION['sort'] в параметр сортировки.
Прям один в один, просто смена не шаблона а направления сортировки.
Андрей Белый
Михаил Базаров, спасибо Михаил, успехов вам!
Михаил Базаров -> Всем
25 февраля 15:48
Компонент добавления элемента в инфоблок с отправкой письма о добавлении и AJAX отправкой.

Сделан по быстрому, в качестве базовой заготовки для дальнейшего развития.
Развиваться будет, в полноценный компонент, в рамках видеокурса "Разработка доски объявлений на Битрикс" https://bxstore.ru/

Пока, можно использовать как форму обратной связи, с записью в инфоблок и отправкой письма.

На данный момент умеет:
- Выводить, на заполнение,  свойства инфоблока. Только не множественные.
- Загружать файлы в свойство "Файл". Использует штатный компонент main.file.input (dragn_n_drop).
- Защита, от совсем простых ботов (проверка скрытого поля на заполнение)
- Поддерживает AJAX
- Отправляет письмо о добавлении элемента
- Все параметры управляемые (картинка 1)
- Шаблон маскимально простой (картинка 2)
- Легко дорабатывается, управляется и расширяется.

Письма отправляет обычной функцией php-mail, но в файле component.php есть закомментированый участок
(картинка 3):
Можно использовать штатный метод Битрикс Event::send - который передаст поля в штатное же почтовое событие FEEDBACK_FORM

Пример работы: https://camouf.ru/1/index.php

PS: В рамках видеокурса будет превращен в полноценный компонент добавления объявления на доску. С гугло капчей, работой с любыми типами полей И так далее.

Фото:
Файлы:
Михаил Базаров -> Всем
18 июня 2018 3:57
Вывести разделы инфоблока по первым буквам (алфавитный указатель типа) не меняя структуру каталога.

Например: у нас есть инфоблок с большим количеством разделов (картинка 1).
И мы хотим, на выводе на сайте разбить разделы по буквам (картинка 2).

Самый простой способ, это конечно же добавить буквы в разделы каталога, и перераспределить сами разделы по своим буквам.
Но... а если и разделов более 2000-ч и вообще не вариант, так менять структуру инфоблока.

Можно поступить следующим образом:
В шаблоне компонента catalog.section.list (Разделы инфоблока) удаляем все и меняем на такой код:
<?
foreach ($arResult["SECTIONS"] as $arSectionArray) {
      $sectFName = $arSectionArray['NAME'];
      $sectFLetter = mb_substr($sectFName, 0, 1, 'UTF-8');
      $arrayFirsletter .= '\'' . $sectFLetter . '\',';
}

eval('$FirstLetter=array(' . $arrayFirsletter . ');');
extract($FirstLetter);
$uniuLetter = array_unique($FirstLetter);

foreach ($uniuLetter as $onlyOnceLetter) {
       echo '<h3>' . $onlyOnceLetter . '</h3>';
      foreach ($arResult["SECTIONS"] as $arSection) {
         if (mb_substr($arSection['NAME'], 0, 1) == $onlyOnceLetter) { ?>
             <a href="<?= $arSection["SECTION_PAGE_URL"] ?>">
                 <?echo $arSection['NAME']; ?>
            </a>
          <?
          }
     }
}
?>

Пояснения:

Сначала собираем первые буквы всех разделов в одну переменную $arrayFirsletter , так как названия разделов
могут быть как на латинице, так и на кириллице используем mb_substr- с помощью которого и "отрубили" первые буквы названий разделов
foreach ($arResult["SECTIONS"] as $arSectionArray) {
      $sectFName = $arSectionArray['NAME'];
      $sectFLetter = mb_substr($sectFName, 0, 1, 'UTF-8');
      $arrayFirsletter .= '\'' . $sectFLetter . '\',';
}

Далее, с помощью eval, загоняем все буквы в массив array. Так как первые буквы разделов могут повторяться. Переводим array в array_unique - он отберет только уникальные буквы (то бишь без повторов)
eval('$FirstLetter=array(' . $arrayFirsletter . ');');
extract($FirstLetter);
$uniuLetter = array_unique($FirstLetter);

Собственно выводим эти буквы с помощью foreach
foreach ($uniuLetter as $onlyOnceLetter) {
       echo '<h3>' . $onlyOnceLetter . '</h3>';

Внутри которого еще один foreach - который отберет все разделы, начинающиеся на конкретную букву, ну и ссылка на раздел в каталоге.
Если первая буква названия раздела, совпадает с переменной $onlyOnceLetter (в которой, собственно первая буква)
foreach ($arResult["SECTIONS"] as $arSection) {
         if (mb_substr($arSection['NAME'], 0, 1) == $onlyOnceLetter) { ?>
             <a href="<?= $arSection["SECTION_PAGE_URL"] ?>">
                 <?echo $arSection['NAME']; ?>
            </a>
         



Фото:
Михаил Базаров
Кого коробит использование eval. В принципе не рекомендую им злоупотреблять.
Можно сразу загнать результат работы foreach в массив

$FirstLetter   = array();
foreach ($arResult["SECTIONS"] as $arSectionArray) {
     $sectFName = $arSectionArray['NAME'];
     $sectFLetter = mb_substr($sectFName, 0, 1, 'UTF-8');
     $FirstLetter[]   = $sectFLetter;
}
Андрей Белый
Спасибо, Михаил
Все работает!)
Андрей Белый -> Всем
19 февраля 17:01
Добрый вечер, Михаил
Скажите пожалуйста почему ваш ныне обновленный сайт адаптивный, а не имеет отдельный мобильный шаблон как в этой теме https://camouf.ru/blog-note/1320/ ?
Михаил Базаров
Думаю, для большинства сайтов достаточно иметь адаптивную версию.
Отдельными, мобильными, версиями до сеих поль пользуются- многие компании.
Но, мне кажется, это скорее "пережиток древности" нежели реальная необходимость.

Не все, огромные и старые сайты могут себе позволить рефакторинг и переделку логики работы шаблонов (долго, дорого, много зависимостей И так далее)

Новый сайт, я бы делал сразу адаптивным. Его и поддерживать проще.
A13Z2005 -> Всем
16 февраля 23:25
Здравствуйте, подскажите пожалуйста как вывести значение свойства типа список VALUE_XML_ID
в компоненте catalog.item

при этом нужно вывести так что если оно имеет значение (А) выводим один текс, если значение (Б), то другой текст.
пробовал вывести так

<?if($item['DISPLAY_PROPERTIES']['TIP']['VALUE_XML_ID']=='A'):?>
   <span class="A">text</span>
<?endif;?>

Итог - не отрабатывает...
A13Z2005
Михаил Базаров, такое ощущение что битра не понимает условие, что мне нужно определить выбрано ли значение hit
A13Z2005
Михаил Базаров, Забыл сказать - это множественное свойство - типа список.
Михаил Базаров
<? if ($item['DISPLAY_PROPERTIES']['TIP']['VALUE_XML_ID'] == 'hit') {?>
  Бла бла
<?}?>
A13Z2005 -> Всем
9 февраля 0:23
Всем здравствуйте!
Подскажите пожалуйста кто сталкивался с интеграцией верстки в Интернет магазин.
при интеграции верстки в список товаров - если у главного фото не выставляю id="<?=$itemIds['PICT']?>" и id="<?=$itemIds['PICT_SLIDER']?>",
то торговые предложения либо не отображаются либо отображаются но не выбираются.... как уйти от этого?!
--------
либо где править так чтобы после вставки этих id, не появлялись лишении спаны или как их заменить на нужное мне?!
Елена Синица
6 февраля 14:40
Сообщение форума
Редизайн сайта
Подскажите, пожалуйста.
На Битриксе есть сайт, сделанный по довольно простому шаблону с устаревшей информацией. Задача - выполнить редизайн с обновлением контента. Как лучше сделать, чтобы не потерять SEO позиции? Сначала создать копию старого сайта, произвести в ней все обновления и потом подключить домен? Или можно создать новый сайт по новому шаблону в том же аккаунте на Битриксе и к нему подключить домен старого сайта? Что посоветуете?
Сергей
3 февраля 12:00
Сообщение форума
Выгрузка картинок в highload для свойства цвет
Здравствуйте уважаемые. Кто нибудь решал такую задачу как выгрузка картинок в highload блок для свойства цвет . Сейчас выгружается только название - https://clip2net.com/s/45O0NCq .
Знаю что это делается на стороне 1С.
на ютабе по урокам интеграции слышал что так можно делать
Как объяснить 1С-нику что требуется сделать , т.к в 1С тоже нужно настраивать что-то, в их терминологии не особо разбираюсь
Михаил Базаров -> Всем
13 января 7:52
Ошибка "Mysql query error: (1146) Table '.b_sale_trading_platform' doesn't exist (400)" при просмотре заказа в Битрикс

Если, при попытке просмотреть подробную информацию о заказе, получаете ошибку
"Mysql query error: (1146) Table '.b_sale_trading_platform' doesn't exist (400)"

Ошибка может возникнуть при обновлении ядра Битрикс, если прыгаете с версии 17 на 20 и выше.

Удалите, лишний файл /bitrix/modules/sale/lib/tradingplatform.php
Его не должно быть в ядре, после этого проблема решится.

Возможно файл появился после восстановления сайта из резервной копии или перезагрузки файлов ядра.
Ранее этот файл по ошибке был добавлен, но с версии sale 17.8.25 (18.0.3) его убрали.

PS: Если, при просмотре заказа, видите только:
"Произошла ошибка, включите расширенный вывод ошибок в .settings.php"
Откройте файл /bitrix/.settings.php и переключите "debug" = "false" в "debug" = "true"



Максим Всем
9 января 15:54
Добавил 1 фото в альбом: Новый альбом
Russell S
6 января 3:58
Сообщение форума
Как реализовать вывод сопутствующих товаров в catalog.section

Здравствуйте, Михаил и читатели данного блога!
Вы можете подсказать как сделать вывод аналогов из свойств в catalog.section под товаром?
Было бы не плохо реализовать все на примере из вашей статьи https://camouf.ru/blog-note/6157/,
где сопутствующие товары выводятся в карточке товара( но не в каталоге, поиске и т.д(( ).

Внизу скинул пример работы всего этого:

Russell S

Здравствуйте, Михаил и читатели данного блога!
Вы можете подсказать как сделать вывод аналогов из свойств в catalog.section под товаром?
Было бы не плохо реализовать все на примере из вашей статьи https://camouf.ru/blog-note/6157/,
где сопутствующие товары выводятся в карточке товара( но не в каталоге, поиске и т.д(( ).

Внизу скинул пример работы всего этого:

Это нравится:0Да/0Нет Ещё
Russell S
Цитата
Russell S написал:
Здравствуйте, Михаил и читатели данного блога!
Вы можете подсказать как сделать вывод аналогов из свойств в catalog.section под товаром?
Было бы не плохо реализовать все на примере из вашей статьи  https://camouf.ru/blog-note/6157/ ,
где сопутствующие товары выводятся в карточке товара( но не в каталоге, поиске и т.д(( ).

Внизу скинул пример работы всего этого:
Вот ссылка пример работы: http://russellibertson.ru/img/Screenshot_2.jpg
Это нравится:0Да/0Нет Ещё
Russell S
6 января 3:29
Сообщение форума
Как реализовать вывод сопутствующих товаров в catalog.section

Здравствуйте, Михаил и читатели данного блога!
Вы можете подсказать как сделать вывод аналогов из свойств в catalog.section под товаром?
Было бы не плохо реализовать все на примере из вашей статьи https://camouf.ru/blog-note/6157/,
где сопутствующие товары выводятся в карточке товара( но не в каталоге, поиске и т.д(( ).

Внизу скинул пример работы всего этого:

a13z2005@yandex.ru -> Всем
18 декабря 2019 8:38
Всем добрый день.
Подскажите кто сталкивался с таким - регистрация пользователей в разные группы с разными полями?!
к примеру если выбрал "Частное лицо" - у него три поля для заполнения, если "Компания" - то другие поля

Михаил Базаров
Просто выведете две формы (или сколько нужно) с разными настройками вывода полей.
Что бы эти формы регистрации, заносили пользователей в разные группы, можно воспользоваться вот этим
https://camouf.ru/blog-note/1221/
a13z2005@yandex.ru
Михаил Базаров, а подскажите пожалуйста ка сделать уведомление о регистрации нового пользователя в определенной группе?!
чтоб не приходило оповещение о регистрации всех пользователей, а только о тех кто зарегистрировался в группу "Б"  
tsaraid -> Всем
16 ноября 2019 1:46
Всем здравствуйте. Подскажите пожалуйста новичку, где можно посмотреть, почитать о создании компонента форм для добавления (редактирования) элемента в инфоблок. Построение формы по свойствам инфоблока. Здесь на сайте смотрел урок, но нужен именно компонент. Спасибо
Михаил Базаров
В штатных уже есть. Так и называется "Форма добавления / редактирования" - находится в блоке "Контент -> Добавление элементов"
Файлы:
0 Б
tsaraid
Спасибо, Михаил.
Михаил Базаров -> Всем
19 декабря 2019 6:10
Скрипт для иммитации боковой панели, выезжающей\исчезающей при протягивании пальцем по экрану.
Пригодится для мобильных версий сайтов или мобильных приложений на cordova

Подробнее тут https://github.com/mango/slideout/releases/
Файлы:
slideout-1.0.1.zip (30.02 КБ)
Mango/slideout
A touch slideout navigation menu for your mobile web apps. - Mango/slideout
Михаил Базаров -> Всем
17 декабря 2019 15:23
Pull to refresh, не большой скрипт  для обновления страницы, при перетягивании, на мобильных телефонах.
Можно использовать и в мобильном приложении на cordova/phonegap

API методы тут
https://github.com/BoxFactura/pulltorefresh.js
Файлы:
pull_ref.min.js (9.45 КБ)
BoxFactura/pulltorefresh.js
A quick and powerful plugin for your pull-to-refresh needs in your webapp. - BoxFactura/pulltorefresh.js
vitstar -> Всем
1 декабря 2019 1:33
Добрый день!
Установил виртуальную машину 1с-Битрикс. Все работает.
После чего решил установить ssl сертификат. У клиента он уже был куплен. По офф. инструкции все проделал. И вроде нет проблем.
После решил настроить редирект с http на https. Сделал это через меню виртуальной машины. Manage http/https settings
Сам редирект работает, но теперь после ввода https://site.ru/bitrix к адресу сайта добавляется пор 443. И появляется такая страница https://i.imgur.com/nEcYGDJ.jpg

Еще после этого при проверки системы выдает ошибку
Работа с сокетами   -   Ошибка! Не работает

Так же в вебмастере яндекса возникла ошибка "
Главная страница сайта https://www.site.ru перенаправляет на другой домен"
При диагностике ответа сервера выдает
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html>
<head>
<title>
301 Moved Permanently
</title>
</head>
<body>
<h1>
Moved Permanently
</h1>
<p>
The document has moved
<a href="https://site.ru:443/">;
here
</a>
.
</p>
<hr>
<address>
Apache/2.4.6 (CentOS) Server at www.site.ru Port 443
</address>
</body>
</html>

Не кто не сталкивался с подобной проблемой?  
Михаил Базаров -> Всем
28 ноября 2019 11:17
Установить/скопировать значение свойства элемента из другого свойства, при создании или редактирования элемента инфоблока.

У нас есть свойство инфоблока с кодом ATT_PRICE
И есть свойство с кодом ATT_TEST

Задача: при редактировании элемента копировать значение из ATT_PRICE в ATT_TEST

Добавляем в init.php
AddEventHandler("iblock", "OnAfterIBlockElementUpdate", "OnAfterIBlockEl");
AddEventHandler("iblock", "OnAfterIBlockElementAdd", "OnAfterIBlockEl");
function OnAfterIBlockEl(&$arFields) {
  if (CModule::IncludeModule("iblock")):
     $getProperty = CIBlockElement::GetList (
         Array("ID" => "ASC"),
         Array("IBLOCK_ID" => $arFields['IBLOCK_ID'], "ID" => $arFields['ID']),
        false,
        false,
        Array(
           'PROPERTY_ATT_PRICE'
         )
    );
    while($ar_fields = $getProperty->GetNext())
    {
         $setProperty= $ar_fields['PROPERTY_ATT_PRICE_VALUE'];
    }
   endif;
CIBlockElement::SetPropertyValuesEx (
      $arFields['ID'],$arFields['IBLOCK_ID'],array (
             'ATT_TEST' => $setProperty
          )
     );
}
Здесь: с помощью  CIBlockElement::GetList получили значение свойства ATT_PRICE для элемента с ID = $arFields['ID'] (текущий редактируемый/добавляемый элемент)
С помощью CIBlockElement::SetPropertyValuesEx установили значение ATT_PRICE в ATT_TEST
Михаил Базаров
Не большое улучшение. Так как работаем с одним, конкретным элементом- за раз. Можно заменить
CIBlockElement::GetList на CIBlockElement::GetByID - будет работать бодрее и так правильнее
<?
AddEventHandler("iblock", "OnAfterIBlockElementUpdate", "OnAfterIBlockEl");
AddEventHandler("iblock", "OnAfterIBlockElementAdd", "OnAfterIBlockEl");
function OnAfterIBlockEl(&$arFields) {
if (CModule::IncludeModule("iblock")):
 $res = CIBlockElement::GetByID($arFields['ID']);
 if($obRes = $res->GetNextElement())
 {
     $ar_res = $obRes->GetProperty("ATT_PRICE");
     $setProperty = $ar_res['VALUE'];
 }
endif;

CIBlockElement::SetPropertyValuesEx (
  $arFields['ID'],$arFields['IBLOCK_ID'],array (
    'ATT_TEST' => $setProperty
   )
);
}
?>
Михаил Базаров -> Всем
4 ноября 2019 9:34
Ускорение работы сайта на 1С-Битрикс
Файл использованный в заметке
https://camouf.ru/blog-note/9223/index...de_areas=Y
Фото:
Файлы:
blog_usk_bx.txt (5.28 КБ)
Nip4FunU2@gmail.com
Михаил Базаров, а вы mod_pagespeed протестировали на совместимость с композитом? А то я протестировал, и вот какой результат:
Для групп которым композит не работает показывается mod_pagespeed и переназваные img и тд.
А вот для групп с композитом ситуация иная, сначала подрубается на пол секунды то что отдает mod_pagespeed, но потом сразу композит перекрывает весь DOM своим контентом в котором остались старые пути без конвертации.

Я так понял что композит делает слепок до отработки mod_pagespeed, и следовательно не может сохранить его с изменениями и потом отдавать.
Что думаете по этому поводу?
Михаил Базаров
Да пробовал, мне вообще не понравилось что творит этот mod_pagespeed
Именно с композитом проблем не было, но он картинки сильно портит, и какие-то не лепые названия им дает.
Плюс, с обработкой скриптов и css - не все гладко проходит.
Самое главное, особо ускорения не дает.
В целом, пока, забил его использовать- нужно побольше времени поизучать, прежде чем использовать на реальных проектах.  
Михаил Базаров -> Всем
20 ноября 2019 4:38
Cordova пробросить API Cordova внутрь InAppBrowser

Если Вы создаете мобильное приложение на Cordova и работаете не с локальными файлами, а открываете внешний сайт.
По сути, скрываете все управляющие элементы браузера и иммитируете полноценное приложение.

Скорее всего используете плагин InAppBrowser, но в нем не будут работать API плагинов Cordova:
То есть, из этой оболочки не получите доступа к железу и настройкам телефона.

Что бы решить эту проблему нужно установить плагин remote-injection
cordova plugin add cordova-plugin-remote-injection

Он, встраивает скомпилированные ресурсы приложения (cordova и ее плагины), внутрь оболочки InAppBrowser.

После этого можно использовать API Cordova прямо на встроенном сайте.

Дополнительно:
Что бы псевдо приложение, по сути сайт, открывался при старте Cordova можно добавить в config.xml
<content src="АДРЕС_СТАРТОВОЙ_СТРАНИЦЫ" />
<allow-navigation href="АДРЕС_САЙТА/* />

Если нужно внедрить еще какой-то еще скрипт, по мимо самой Cordova
<preference  name="CRIInjectFirstFiles"  value = "ПУТЬ_К_ФАЛУ/file.js " />

PS: И еще пара плагинов, которые не озвучены в документации:

cordova plugin add cordova-plugin-contacts - обеспечивает доступ к базе данных контактов устройства.
cordova plugin add cordova-plugin-device-motion - доступ к акселерометру устройства.
cordova plugin add cordova-plugin-firebase - работа с push через firebase
cordova plugin add cordova-plugin-android-imei - получение IMEI (Только Андроид)
cordova.plugins.IMEI(function (err, imei) {
        console.log('imei', imei)
})

Плагин управления клавиатурой
cordova plugin add https://github.com/driftyco/ionic-plug...yboard.git
Этот плагин может многое, описание на github
Главное, для чего его можно использовать:
Не сжимать страницу при появлении клавиатуры
cordova.plugins.Keyboard.disableScroll(true);

Плагин переключающий UIWebVue на WKWebView (первый вот вот устареет)
cordova plugin add cordova-plugin-wkwebview-engine

Файлы:
all_plugins.txt (967 Б)
ionic-team/ionic-plugin-keyboard
Ionic Keyboard Plugin for Cordova. Contribute to ionic-team/ionic-plugin-keyboard development by creating an account on GitHub.
a13z2005@yandex.ru -> Всем
19 ноября 2019 17:59
Добрый день всем,
кто сталкивался с подобным подскажите как реализовать?!
хочу в умном фильтре в каталоге сделать ссылки на значениях свойств - пример- как в решение оригами - см.скрин https://yadi.sk/i/56l6bqAKQSyoag ( https://origami.sotbit-demo.ru/catalog..._tekhnika/ ).
спасибо
2019-11-19_21-57-54.png
View and download from Yandex.Disk
a13z2005@yandex.ru -> Всем
8 ноября 2019 23:57
Извиняюсь за спам)
ни кто с тако проблемой не сталкивался?! - написать корзину на редакции Старт / Стандарт...
Может есть идеи или готовое решение у кого?!)
спасибо!
Михаил Базаров
Не подходит?
https://marketplace.1c-bitrix.ru/solut...startcart/
Там еще штуки 3-4 подобных решений.
1С-Битрикс - Корзина StartСart для редакции “Старт”.
модули для битрикс
a13z2005@yandex.ru
Михаил Базаров, на маркете все платные) для себя хотел сделать

bvv2004@list.ru
29 октября 2019 15:53
Сообщение форума
Проблемы работы раздела Каталог лицензия Битрикс: Старт
На картинках видно, что два разных товара, из разных разделов имеют одинаковую вкладку Дополнительно, вкладка удобная ей можно пользоваться.
Но в нашем случае невозможно. Файл, где хранится содержимое вкладки дополнительно - /product/index/_dops.php , один на все товары каталога.
Вводишь текст в одну вкладку, и он такой же текст появляется и в другой вкладке совсем другого товара.
Подскажите, что не так работает. Где может быть ошибка.
Картинки прицепить не удалось, программа отвечает, что При сохранении файла произошла ошибка.
А вставить в данный текст ограничение по размеру не позволяет.
Поэтому, привожу ссылки на показ проблемы:

http://novateh74.ru/product/tekhnolog...obrabotki/

http://novateh74.ru/product/elektroob...rotyagach/

С уважением,
Валентин Баранчук,
г. Челябинск
ООО Новатех
bvv2004@list.ru
Михаил день добрый!
Огромное спасибо за ответ.
Об этом (выкинуть Аспро) уже думаю.
Но пока переходный период.
Мне это "Дополнительно" нужно, и нужно к каждому Товару свое, т. к. товар - оборудование, технически сложное, и у него многослойное описание.
Но, не совсем понял Вашу рекомендацию.
Подскажите пожалуйста как в Каталоге товаров, добавить на Товар ещё одну вкладку ( в моем случае это вкладка "Дополнительно" ), чтобы она была привязана к товару ?

С уважением,
Валентин Баранчук,
г. Челябинск
ООО Новатех
Это нравится:0Да/0Нет Ещё
Михаил Базаров -> Всем
25 марта 2019 10:50
Форма авторизации с использованием vue js для Битрикс

Готовый шаблон всплывающей формы авторизации.
Просто распаковываем в шаблон своего сайта и выводим в нужной части сайта компонент
system.auth.form и применить этот шаблон (auth)

В основном шаблоне сайта, подключите vue из ядра
\Bitrix\Main\UI\Extension::load("ui.vue");

На его месте появится кнопка, вызывающая шаблон авторизации.
Стилей по минимуму, подгоняйте под себя.

Так же внутри файл для отправки формы (index.php)- результат успешного или не успешного входа.
Этот файл обязательно удалите, или переместите в папку /personal/ он просто для примера (или любую другую папку - в форме подправьте путь)



Фото:
Файлы:
auth.zip (5.19 КБ)
Валерий
При вставке <?Asset::getInstance()->addJs('/bitrix/js/ui/vue.min.js');?>
У меня вообще ошибка, на скрине предоставил.

Видимо у меня вообще система полетела? И что не подскажите?

Вообщем полная жесть на ночь глядя(((
Файлы:
0 Б
Михаил Базаров
Перед этим подключением, включите
use Bitrix\Main\Page\Asset;
Валерий
Эх видимо не судьба((

Та же ошибка.Uncaught ReferenceError: Vue is not defined

Vue.component("modal",{template:"#auth_template"});BX.Vue.create({el:"#auth_form",data:{showModal:false}});
Михаил Базаров -> Всем
26 июня 2019 10:47
При клике на маленькую фотографию меняется большая.

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

PHP
<div class="more_photos">
     <a href="<? echo $arResult['DETAIL_PICTURE']['SRC'] ?>" class="current">
           <img src="<? echo $arResult['DETAIL_PICTURE']['SRC'] ?>" alt="<? echo $arResult['NAME'] ?>">
    </a>
    <?
    if (count($arResult["MORE_PHOTO"]) > 0) {
       foreach ($arResult["MORE_PHOTO"] as $PHOTO) {
       $renderImage = CFile::ResizeImageGet($PHOTO, Array("width" => 200, "height" => 200), BX_RESIZE_IMAGE_EXACT, false);
   ?>
      <a href="<?= $PHOTO["SRC"]; ?>" alt="<? echo $arResult['NAME'] ?>">
               <img src="<?= $PHOTO["SRC"]; ?>" alt="<? echo $arResult['NAME'] ?>">
      </a>
      <? }
   } ?>
</div>
JS
$(".more_photos").on("click", "a", function () {
     $(this).addClass("current").siblings().removeClass("current")
     $(".main_photo img").attr("src", $(this).prop("href"))
     return false;
});
CSS
Тут уж сами под свой дизайн. Например, как на картинке
.more_photos {
      float: left;
     width: 100px;
}

 .more_photos a {
     display: block;
     margin-bottom: 10px;
     text-decoration: none;
     width: 100%;
     height: 100px;
     border: 3px #fff solid;
     box-shadow: 0px 0px 1px #ccc;
     transition: all .25s ease-out;
}

   .more_photos a:hover {
     border: 3px #f6f6f6 solid;
}
   .more_photos a.current {
     border: 3px #D68189 solid;
}

.main_photo {
     float: right;
     width: calc(100% - 110px);
}

 .main_photo img {
     width: 100%;
     transition: all .25s ease-out;
}

PS: само собой, на сайте должен быть подключен jquery
Фото:
Валерий
Михаил Базаров, нет все указанно. Даже попробовал создав другое свойство.
<div class="more_photos">
<a href="<? echo $arResult['DETAIL_PICTURE']['SRC'] ?>" class="current">
  <img src="<? echo $arResult['DETAIL_PICTURE']['SRC'] ?>" alt="<? echo $arResult['NAME'] ?>">
</a>
<?
if (count($arResult["PHOTOS"]) > 0) {
  foreach ($arResult["PHOTOS"] as $PHOTO) {
  $renderImage = CFile::ResizeImageGet($PHOTO, Array("width" => 200, "height" => 200), BX_RESIZE_IMAGE_EXACT, false);
  ?>
 <a href="<?= $PHOTO["SRC"]; ?>" alt="<? echo $arResult['NAME'] ?>">
  <img src="<?= $PHOTO["SRC"]; ?>" alt="<? echo $arResult['NAME'] ?>">
 </a>
 <? }
  } ?>
</div>
Файлы:
0 Б
0 Б
0 Б
Михаил Базаров
Тогда, странно. Подсказать не могу, видимо: какая-то мелочь упущена. Но какая не понятно, нужно в живую смотреть
Валерий
Михаил Базаров, каким то образом все таки разобрался с отображением. Чтобы отображались фотографии с свойства MORE_PHOTO, но теперь нет самой большой картинки, которая должна меняться.

Ваш код вставил:
<div class="more_photos">
     <a href="<? echo $arResult['DETAIL_PICTURE']['SRC'] ?>" class="current">
           <img src="<? echo $arResult['DETAIL_PICTURE']['SRC'] ?>" alt="<? echo $arResult['NAME'] ?>">
    </a>
    <?
    if (count($arResult["MORE_PHOTO"]) > 0) {
       foreach ($arResult["MORE_PHOTO"] as $PHOTO) {
       $renderImage = CFile::ResizeImageGet($PHOTO, Array("width" => 200, "height" => 200), BX_RESIZE_IMAGE_EXACT, false);
   ?>
      <a href="<?= $PHOTO["SRC"]; ?>" alt="<? echo $arResult['NAME'] ?>">
               <img src="<?= $PHOTO["SRC"]; ?>" alt="<? echo $arResult['NAME'] ?>">
      </a>
      <? }
   } ?>
</div>

Но большой картинки все равно нет.
Файлы:
0 Б
Андрей Михайлов -> Всем
26 октября 2019 0:21
Михайл скажите плз, у вас видео судя по всему оч старое? #2 по приложениям... пытаюсь вставить шапку по нему текст и того ... совсем не хочет( даже просто текст... может что поменялось?((
Михаил Базаров
Не очень понял вопроса. Если по мобильному приложение - все должно быть актуальным, там ни чего особо не поменялось.
a13z2005@yandex.ru -> Всем
15 октября 2019 20:01
Всем привет, пишу каталог на редакции Стандарт.
Подскажите кто сталкивался с реализацией корзины, с чего начать и т.д.
Спасибо

Авторизация

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