Михаил Базаров -> Всем
Разные свойства у разделов одного инфоблока  в Битрикс
Как создать разные свойства, в форме создания элемента, внутри одного инфоблока битрикс.

битрикс, свойства битрикс, элементы битрикс, разделы битрикс

https://www.youtube.com/watch?v=1KP1cWM26tU
Разные свойства у разделов одного инфоблока в Битрикс
Как создать разные свойства, в форме создания элемента, внутри одного инфоблока битрикс.
*
 
*
Михаил Базаров -> Всем
Для Прогрева кеша сайта на битрикс. Создать весь кеш в битриксе, в автоматическом режиме

Если вы только что запустили сайт, и не хотите ждать пока сайт закешируется естественным образом:
- С посещениями страниц сайта
- С обходом поисковых роботов

А хотите сразу же ускорить сайт, просто обойдя все страницы. Можно воспользоваться таким способом:
Запускаем виртуальную машину, на любом unix дистрибутиве (как вариант, если сайт и так на сервере, можно прямо на этом же)

и в терминале выполняем команду:
wget -r --spider test.site http://адрес.ru

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

Вариация с использованием UserAgent

wget -r -k -l 7 -p -E -nc --user-agent="Mozilla/5.0 (Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/5З7.З6 (KHTML, like Gecko) Chrome/55.0.288З.75 Safari/5З7.З6" http://ВАШСАЙТ.ru

КЛЮЧИ

--spider - Не сохранять сайт в файлы

-r — указывает на то, что нужно рекурсивно переходить по ссылкам на сайте, чтобы скачивать страницы.

-k — используется для того, чтобы wget преобразовал все ссылки в скаченных файлах таким образом, чтобы по ним можно было переходить на локальном компьютере (в автономном режиме).

-p — указывает на то, что нужно загрузить все файлы, которые требуются для отображения страниц (изображения, css и т.д.).

-l — определяет максимальную глубину вложенности страниц, которые wget должен скачать (по умолчанию значение равно 5, в примере мы установили 7). В большинстве случаев сайты имеют страницы с большой степенью вложенности и wget может просто «закопаться», скачивая новые страницы. Чтобы этого не произошло можно использовать параметр -l.

-E — добавлять к загруженным файлам расширение .html.

-nc — при использовании данного параметра существующие файлы не будут перезаписаны. Это удобно, когда нужно продолжить загрузку сайта, прерванную в предыдущий раз.
Hrach Hakobyan -> Всем
Помогите реализовать на сайте выбор вальюты. И как при регистрации по соц сетьям аватарка менялась на аватарку соц сетьи.
Михаил БазаровМихаил Базаров
По валютам вот так можно
https://dev.1c-bitrix.ru/community/web...blog/1695/

По аватарке затрудняюсь сказать. Ни разу не приходилось это проделывать
1С-Битрикс Разработчикам - Отображение цен в валюте, которую выбрал посетитель интернет-магазина
Лёнька Щелкунов -> Всем
Всем привет! Делаю меню из catalog.section.list и мне необходимо выделить "Родительский раздел" > "Подраздел" > "Раздел" чтоб получилось вот так.

  • Родительский раздел
  • Родительский раздел (Активный)
  • Подраздел
  • Подраздел (Активный)
  • Раздел
  • Раздел
  • Раздел (Активный)
  • Раздел
  • Подраздел
  • Подраздел
  • Родительский раздел
  • Родительский раздел
При использовании обычного меню для этого есть $arItem["SELECTED"], а как в catalog.section.list такое сделать?
Лёнька ЩелкуновЛёнька Щелкунов
В данный момент у меня меню выполнено через  _ext меню. Все чудесно работает как раз благодаря вашим урокам и записям. Спасибо! Может тогда подскажите как в  _ext меню можно вывести пользовательские поля?
АлександрАлександр
Михаил Базаров, тоже хочу использовать компонент "bitrix:catalog.section.list" шаблон "tree" и сделать его вывод каталога, когда при нажатии появляются вложенные пункты меню. как в данном примере , но не пойму как адаптировать.
Код шаблона ниже
<div class="catalog-section-list">
<?
$TOP_DEPTH = $arResult["SECTION"]["DEPTH_LEVEL"];
$CURRENT_DEPTH = $TOP_DEPTH;

foreach($arResult["SECTIONS"] as $arSection)
{
$this->AddEditAction($arSection['ID'], $arSection['EDIT_LINK'], CIBlock::GetArrayByID($arSection["IBLOCK_ID"], "SECTION_EDIT"));
$this->AddDeleteAction($arSection['ID'], $arSection['DELETE_LINK'], CIBlock::GetArrayByID($arSection["IBLOCK_ID"], "SECTION_DELETE"), array("CONFIRM" => GetMessage('CT_BCSL_ELEMENT_DELETE_CONFIRM')));
if($CURRENT_DEPTH < $arSection["DEPTH_LEVEL"])
{
echo "\n",str_repeat("\t", $arSection["DEPTH_LEVEL"]-$TOP_DEPTH),"<ul>";
}
elseif($CURRENT_DEPTH == $arSection["DEPTH_LEVEL"])
{
echo "</li>";
}
else
{
while($CURRENT_DEPTH > $arSection["DEPTH_LEVEL"])
{
echo "</li>";
echo "\n",str_repeat("\t", $CURRENT_DEPTH-$TOP_DEPTH),"</ul>","\n",str_repeat("\t", $CURRENT_DEPTH-$TOP_DEPTH-1);
$CURRENT_DEPTH--;
}
echo "\n",str_repeat("\t", $CURRENT_DEPTH-$TOP_DEPTH),"</li>";
}

$count = $arParams["COUNT_ELEMENTS"] && $arSection["ELEMENT_CNT"] ? "&nbsp;(".$arSection["ELEMENT_CNT"].")" : "";

if ($_REQUEST['SECTION_ID']==$arSection['ID'])
{
$link = '<b>'.$arSection["NAME"].$count.'</b>';
$strTitle = $arSection["NAME"];
}
else
{
$link = '<a href="'.$arSection["SECTION_PAGE_URL"].'">'.$arSection["NAME"].$count.'</a>';
}

echo "\n",str_repeat("\t", $arSection["DEPTH_LEVEL"]-$TOP_DEPTH);
?><li id="<?=$this->GetEditAreaId($arSection['ID']);?>"><?=$link?><?

$CURRENT_DEPTH = $arSection["DEPTH_LEVEL"];
}

while($CURRENT_DEPTH > $TOP_DEPTH)
{
echo "</li>";
echo "\n",str_repeat("\t", $CURRENT_DEPTH-$TOP_DEPTH),"</ul>","\n",str_repeat("\t", $CURRENT_DEPTH-$TOP_DEPTH-1);
$CURRENT_DEPTH--;
}
?>
</div>
АлександрАлександр
У меня получается добавить выпадание для всех <li> в не зависимости есть у них вложенные конструкции или нет.
petr -> Всем
Здравствуйте. Помогите разобратся с организационным вопросом. Есть работающий сайт на ограниченой лицензии. Мне нужно добавить туда изменения. Но на работающей версии естественно не хочу экспериментировать, планировал развернуть у себя на локалхосте копию с резервной, но при попытке сделать система естественно запрашивает лицензионный ключ. Как мне поступить? Ввести ключ работающего сайта? Не заблокирует ли работу сайта мое повторное использование лицензии (там 2 сайта, потому на оба уже использована)? Или ввести демо ключ на месяц, пока буду игратся, но снова таки, не будет ли проблем с работающим сайтом. Документацию начитался по лицензировании, но так и не понял принцыпа. И еще? Если блокируют, то блокируют доступ к сайту или только обновления, то есть сайт все будут видеть и работать будет, но заблокирована будет возможность обновлятся. Помогите разобратся, пожалуйста. Спасибо
petrpetr
Михаил Базаров, копию делал локально, облако не использовал, потому что лицензия там ограничена, уже запрещено использование облака. Для восстановления брал restore.php, но после расспаковки последним этапом вот такая штука "Trial period of the product has expired. You can purchase the full version of the product on the site www.bitrix24.com. Registration.", и в админку не пускает((
Михаил БазаровМихаил Базаров
Какая то странная у вас редакция) Я о существовании такой не знаю.
Резервные копии (локальные) можно создавать в любое время и соответсвенно их разворачивать.

Точно уверены, что это не ломанный Битрикс?
petrpetr
Михаил Базаров, хмм... ну насколько мне известно не ломанный, при запуске сайта меня не было) ладно,  спасибо за совет, буду как-то выкручиватся))
petr -> Всем
Здравствуйте. Хочу поблагодарить Вас, Михаил, за видеоуроки. Они оказались самым лучшим проводником в мир Битрикс. :)) В моей компании сделали меня отвественной по Битриксу. Сначала была не в восторге, но чем дальше тем ставало интереснее, во многом благодаря Вам, надеюсь это где-то на кармическом уровне зачтется Вам плюсом)) У меня вопрос. Вот и взяли первого клиента по Битриксу и он просит сформировать основные требования к верстке для Битрикса. Может, подскажите. Боюсь из-за неопытности что-нибудь забыть или пропустить.
Михаил БазаровМихаил Базаров
Ох ты ж! )
Алексей КолесникАлексей Колесник
petr написал:
В моей компании сделали меня отвественной по Битриксу.

Михаил Базаров написал:
Ох ты ж! )
Делайте рекламу  --

Сделаем ВАШ персонал вменяемым. )))
Михаил Базаров -> Всем
Если нужно выгрузить дофигалион товаров в битрикс из XML. Но умирает MYSQL

Если вы хотите выгрузить в битрикс, товары из XML файла. Но файл огромный и соответственно, в нем много товаров и свойств (например 600 000 позиций).
А сервер не то что бы мощный, и в процессе импорта умирает / отваливается MYSQL - даже если выставляете короткий шаг импорта

Просто пройдите в инфоблок (в который грузите товары) и временно отключите индексирование товаров и разделов модулем поиска

Иначе, оно пытается на лету создавать поисковый индекс по этим товарам = сильно грузит базу




Фото:
Михаил Базаров -> Всем
Вывести картинку и описание раздела инфоблока, зная его ID

Предположим, что знаем ID какого-то раздела или указываем его в ручную. Зная этот ID хотим вывести описание и картинку раздела инфоблока

В нужном месте просто вставляем

<?
$SectID = $arResult["SECTION_ID"];
$res = CIBlockSection::GetByID($SectID);
if($ar_res = $res->GetNext())
  echo CFile::ShowImage($ar_res['PICTURE'], 200, 200, "", "", true);
  echo $ar_res['DESCRIPTION'];
?>

Где в переменную $SectID - передали ID нужного раздела

Вячеслав -> Всем
Всем привет, прошу помочь разобраться. То ли я туплю, то ли лыжи не едут. Кусок кода ниже:

<? foreach ($arElement["PRICES"] as $code => $arPrice): ?><? if (CModule::IncludeModule("sale")): ?>
<? if ($ar = CSaleUserAccount::GetByID($USER->GetID()))
  {
     $myBonusBills = SaleFormatCurrency($ar["CURRENT_BUDGET"], $ar["CURRENCY"]);
  }
  ?>
  <div class="inner-shop--button-block">
     <a data-module="buyoneclick" data-id="<?= $arElement["ID"] ?>"
        class="<?= $myBonusBills < $arPrice["PRINT_DISCOUNT_VALUE"] ? 'inner-shop--button-disabled' : 'inner-shop--button' ?>">
        <?= GetMessage("CATALOG_BUY") ?>
     </a>
  </div>
<? endif; ?>
<? endforeach; ?>

Что должно быть по идее.
Если на личном счету пользователя рублей меньше чем стоимость товара, то у кнопку будет класс inner-shop--button-disabled, иначе inner-shop--button.

Прикрепил скрин с пояснением, условие странно как-то работает.
Фото:
ruslan2243 -> Всем
В общем сегодня столкнулся с такой штукой и пока не знаю как реализовать. Сначала думал, что можно без кодинга, но оказалось, что скорее всего нет.
В общем есть карточка товара (кредитное предложение) и там есть поле возраст(еще не сделано)
https://prnt.sc/h88ijw
И поле возраст - это диапазон, т.е. человеку дадут кредит, если он в этом возрасте.
И потом предпологается, что посетитель в умном фильтре вводит свой возраст и ему должны вывестись те товары, где он подходит по возрасту.
Примерно такая форма https://prnt.sc/h88jyg - это конечно не битриксовский УмнФильтр, просто скрин с левого сайта.

Так вот, в битриксе же нет диапазонного свойства :) Нужно получается заводить два свойства "возраст от" и "возраст до"
И потом как-то связать их в умном фильтре с помощью одного инпута. Т.е. я так полагаю, нужно как-то добавить в массив фильтра arFilter дополнительно два условия:
 (
   [>=AGE_MIN] => 22
   AND
   [<=AGE_MAX] => 22
 )

Или, может, я отстал и всё таки в битриксе это можно сделать без кодинга?)))
ВячеславВячеслав
У битрикса есть свойство типа "Число", в этом случае и будет диапазон. В интернет магазинах числовой тип обычно к цене применяют.
Михаил БазаровМихаил Базаров
Да: Просто сделайте его числом, и в настройках свойства- в разделе "Выводить в умном фильтре", выберите режим отображения "Ползунок от до"
PS Хотя, по моему, он итак по умолчанию применяется к числовым
ruslan2243ruslan2243
Михаил Базаров, Не, тут позаковыристей. У товара параметр имеет значение не одно, а диапазон. Например, пусть будет вес.
В моем случае вес может быть, например, "от 20 до 500кг".  В битриксе нет диапазонного типа, только число. В случае с битриксом, я могу задать только одно число "20кг".

Я решил так. Завел два числовых параметра:
вес мин.(число)
вес макс(число)
Теперь можно указать для товара
вес мин=20кг
вес макс=500кг
В умном фильтре теперь есть два ползунка: вес мин и вес макс
Я их визуально скрываю. И вывожу свой инпут, называю вес.
если ввести в него значение(Ves=100), то оно автоматом подставляется в скрытые поля
Вес мин [0] до [Ves]
Вес макс [Ves] до []
И таким образом в область поиска попадает то что нужно.

БОЛЕЕ НАГЛЯДНО
Вот как выглядит на сайте, поля скрыты
https://prnt.sc/hkctol
Вот как под капотом, если показать скрытые поля
https://prnt.sc/hkcv63
Screenshot
Captured with Lightshot
Игорь -> Всем
Михаил здравствуйте, сделайте пожалуйста видео обзор по установке панели управления хостингом, ISPmanager Lite, на Linux CentOS 7 (x86_64) виртуальную машину арендованную у хостера simplecloud.ru и как базово оптимизировать для работы с «1С-Битрикс» Буду очень благодарен Вам. Спасибо!  
Облачный сервер за 150 рублей (512MB RAM и 5GB SSD) за 50 секунд.
Простой, быстрый и масштабируемый сервер с SSD в облаке. VDS хостинг на SSD дисках, виртуализация KVM, безлимитный трафик.
Михаил БазаровМихаил Базаров
Как по мне, ISP manager - мертвая тема. Давно есть, Vesta Cp
ruslan2243 -> Всем
Хочу понять как сделать интеграцию с 1с, но не работал с 1с ни разу. Как можно попробовать в учебных целях? А то часто спрашивают про это, надоело говорить, что никогда не делал)
Михаил БазаровМихаил Базаров
Я делал вот такой эксперимент
https://www.youtube.com/watch?v=CI8GUZl6mYY
Не без косячков и немного нудновато-длинно. Но для общего понимания должно подойти

Плюс на официальном канале битрикс есть запись вебинара- но найти не могу, что-то
Синхронизация 1С:УТ и 1С:Битрикс (Черновик)
Донатон) http://www.donationalerts.ru/r/camouf Multistreaming with https://restream.io/
Михаил Базаров -> Всем
Имитация активного пункта в catalog.section.list через GetCurDir

Черновик заметки (сама заметка позже в блоге)

Иногда, нужно сымитировать меню с помощью компонента catalog.section.list вместо использования ext_ меню
Но в catalog.section.list нет возможности сымитировать активный пункт меню (как-то его стилизовать). Для этого можно сымитировать данный функционал, с помощью
GetCurDir

GetCurDir - Метод который возвращает каталог текущей страницы относительно корня
Мы знаем текущий адрес и адрес конкретного пункта нашего "псевдо меню"

В template.php списка разделов (catalog.section.list) вносим вот такую правку

<? if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) die();
global $APPLICATION;
$dirReal = $APPLICATION->GetCurDir();
?>

               <? ... СОКРАЩЕНО ...
               $cSect = $arSection["SECTION_PAGE_URL"];
               ?>
  <li <?if ($dirReal === $cSect) {echo 'actived';} ?>">
      <a href="<?= $arSection["SECTION_PAGE_URL"] ?>">
             <?= $arSection["NAME"] ?>
      </a>

                   <?.. СОКРАЩЕНО ...?>

$dirReal = $APPLICATION->GetCurDir(); // узнали текущий каталог, в котором пользователь и передали в переменную dirReal

$cSect = $arSection["SECTION_PAGE_URL"]; // в переменную cSect передали каталог текущего пункта

if ($dirReal === $cSect) {echo 'actived';} // Если текущий каталог совпадает (именно тождественен, а не равен) с каталогом текущего пункта, добавили селектор actived
Вячеслав -> Всем
Михаил! Можно ли в живой ленте настроить премодерацию сообщений? Как настроить премодерацию для групп я нашел, а вот если сообщение адресовано всем в живой ленте... в документации тоже не нашел.
Михаил БазаровМихаил Базаров
Я думаю, тут премодариции и нет- это же соц сеть- подразумевается большой поток пользователей (иначе резона ее делать и нет)- а обработать 1000 постов на стену, так себе удовольствие

PS У меня, конечно, соц сеть чисто номинально запущена- тут потока нет
ВячеславВячеслав
Михаил Базаров, Только вот настройки присутствуют...

Файлы:
0 Б
0 Б
Вячеслав -> Всем
Разбираюсь с модулем "социальная сеть". Как включить возможность изменять профиль для обычного зарегистрированного пользователя? У админа, есть пунктик "Изменить профиль" у юзера нет
Фото:
Михаил БазаровМихаил Базаров
Так можно закрыть доступ к папке /bitrix/
Михаил БазаровМихаил Базаров
Вот, прямо сейчас я дал право менять профиль в соцсети, но при этом, для папки bitrix для группы "Зарегистрированные" доступ в статусе "Запрещен"
ВячеславВячеслав
Да, написал коммент а потом вспомнил, что забыл доступ закрыть)
Сергей Стефанович -> Всем
Кто знает как перевести стандартные свойства товаров, такие как вес, сумма, колличество
Перевожу сайт на польский язык. В ленговых файлах эти значения неизвестно где.
Михаил БазаровМихаил Базаров
Они находятся в файле parametrs.php
Сергей СтефановичСергей Стефанович
Спасибо за ваш ответ. Они находились в файле class.php
шаблона sale.order.ajax
Михаил БазаровМихаил Базаров
Да, точно.
gagra33332 -> Всем
Здравствуйте! Кто знает как сделать выборку разделов на деальной странице бренда
Пример http://elektrosila.altop.ru/vendors/bosch/

Купить профессиональные электроинструменты Bosch в Москве
Купить профессиональные электроинструменты Bosch в Москве по доступным ценам
Михаил БазаровМихаил Базаров
Я бы на Вашем месте, не использовал бы данное решение- или обратился бы к разработчикам, данного готового решения. Пусть помогут, с реализацией данного вопроса
PS Выразился максимально корректно  
АртемАртем
Почему лучше не использовать разделы в карточке бренда?
Кирилл -> Всем
Почему-то не вижу ни $arResult["DATE_CREATE"] ни $arResult["CREATE_DATE"] в массиве $arResult  распринтованном в шаблоне детальной новости. Проверял также и в виртуальной лаборатории... Что не так делаю?
Михаил БазаровМихаил Базаров
В настройках компонента, нужно указать на вывод свойство "Дата создания"
Файлы:
0 Б
КириллКирилл
Михаил Базаров, Спасибо. Чет совсем затупил и не догадался в настройки компонента залезть)))  
Михаил Базаров -> Всем
Пересоздать картинки анонса из детальных в каталоге.

Если нужно пересоздать все картинки анонсов товаров каталога (или любого другого инфоблока) из детальных картинок
Подойдет вот такой код

require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
CModule::IncludeModule("iblock");
CModule::IncludeModule("file");

$ID = 11;//id инфоблока

$arFilter = Array("IBLOCK_ID"=>$ID);
$rsEl = CIBlockElement::GetList(Array(), $arFilter);
while($arEl = $rsEl->GetNext()){
  $el = new CIBlockElement;
       $arFields = Array();
  if($arEl["DETAIL_PICTURE"]){
     $arFields['PREVIEW_PICTURE'] = CFile::MakeFileArray($_SERVER["DOCUMENT_ROOT"] . CFile::GetFileArray($arEl["DETAIL_PICTURE"])["SRC"]);
     $arFields['PREVIEW_PICTURE']["del"] = "Y";
        $el->Update($arEl["ID"], $arFields);
  }
}

Найдено на форуме Битрикс
Александр Силуянов -> Всем
Михаил.
От лица всех, кто посещает ваш сайт, смотрит ваши видео и находит у вас правильные и хорошие решения, позвольте сердечно поблагодарить вас! Профессионалов много, а вот профессионалов, готовых делить опытом, единицы.
Спасибо вам огромное, за то, что передаете свой опыт. И не просто передаете а в такой доступной форме!
Ни один проект бы не запустил без ваших видеоуроков!
Еще раз ото всех ОГРОМНОЕ ЧЕЛОВЕЧЕСКОЕ СПАСИБО!
Михаил БазаровМихаил Базаров
Пожалуйста и спасибо за спасибо!
Александр Силуянов -> Всем
Друзья!
Ни кто не подскажет как этим методом https://camouf.ru/blog-note/1487/ вывести элементы одного раздела, если известен его ID?
С синтаксисом что-то, не могу понять...
Александр СилуяновАлександр Силуянов
Михаил Базаров, доброго дня.

Сделал такую конструкцию, но она не работает. Подскажите?
<?if (CModule::IncludeModule("iblock")):
$iblock_id = 2;
$sect_id = 3;
$docs = CIBlockElement::GetList (
// Сортировка элементов

Array("ID" => "ASC"),

Array("IBLOCK_ID" => $iblock_id, "SECTION_ID" => $sect_id),
array('nTopCount' => 3),
false,
false,
// Перечисляесм все свойства элементов, которые планируем выводить
Array(
'ID',
'NAME',
'DETAIL_PAGE_URL',
'ACTIVE_FROM',

)
);
while($ar_fields = $docs->GetNext())

{
//Выводим элемент со всеми свойствами + верстка
echo '<ul class="recent-posts">';
echo '<li><a href="'.$ar_fields['DETAIL_PAGE_URL'].'"><div class="image"><img style="width:80px;" src="/upload/img_no_delite/ven.png"></div>';
echo '<div class="text"><p>'.$ar_fields['NAME']."</p></a>";
echo '<p class="date">'.$ar_fields['ACTIVE_FROM']."</p></div>";
echo '<hr /></li></ul>';
}
endif;
?>
Александр СилуяновАлександр Силуянов
Михаил Базаров, благодарю!
Вот эта конструкция отработала:

<?if (CModule::IncludeModule("iblock")):
$iblock_id = 2;
$sect_id = 3;
$docs = CIBlockElement::GetList (Array("ID" => "ASC"),
Array("IBLOCK_ID" => $iblock_id, "SECTION_ID" => $sect_id),
false,
Array ("nTopCount" => 3),
false,
Array(
'ID',
'NAME',
'DETAIL_PAGE_URL',
'ACTIVE_FROM',
)
);
while($ar_fields = $docs->GetNext())
{
echo '<ul class="recent-posts">';
echo '<li><a href="'.$ar_fields['DETAIL_PAGE_URL'].'"><div class="image"><img style="width:80px;" src="/upload/img_no_delite/ven.png"></div>';
echo '<div class="text"><p>'.$ar_fields['NAME']."</p></a>";
echo '<p class="date">'.$ar_fields['ACTIVE_FROM']."</p></div>";
echo '<hr /></li></ul>';
}
endif;
?>
Михаил Базаров -> Всем
Почтовая рассылка новинок каталога в Битрикс.
Краткая инструкция (подробная заметка в блог позже):

1) Создаем новую рассылку, штатными способами. Выбираем группу пользователей которой рассылать...рассылку
3) Создаем страничку на сайте, на которой выводим новинки (именно новые элементы)- на эту страничку ссылаемся из письма
2) Пишем обработчик в init.php который будет автоматически:
- Менять статус подписки на "Черновик", при добавлении новых элементов в инфоблок каталога
- Выполнять рассылку на cron.

PS После выполнения, рассылка станет в статус "Отправлено" и в следующий раз не сработает. Именно поэтому, в обработчике нужно именно менять статус, а затем уже рассылать

Использованные методы:
$cPosting->ChangeStatus - смена статуса
$cPosting->AutoSend($ID); - отправка рассылки на cron

Код для init.php
<?
AddEventHandler('iblock', 'OnBeforeIBlockElementAdd', 'NewCatItem');
function NewCatItem(&$arFields)
 {
     $SITE_ID = 's1';       //ID сайта
     $IBLOCK_ID = 12;  //ID инфоблока каталога
     $ID = 4;                   //ID созданной рассылки
     if ($arFields['IBLOCK_ID'] == $IBLOCK_ID)
     {
              CModule::IncludeModule('subscribe');  //Подключаем модуль рассылок
              $cPosting = new CPosting();                // Получаем информацию о рассылке
              $arFilter = Array(
                 "STATUS_ID" => $find_status_id       //Получаем текущий статус рассылки
              );
             if ($STATUS = "S") {                               //Если в статусе S - отправлено
                         $cPosting->ChangeStatus($ID, "D"); //Меняем на D - черновик
             }
            $cPosting->AutoSend($ID);  //Рассылаем
       }
}
?>


Михаил Базаров -> Всем
Из трансляции- заметка позже
<?
//Обработчик
AddEventHandler('iblock', 'OnBeforeIBlockElementAdd', 'IBFeedForm');
function IBFeedForm(&$arFields)
{
   $SITE_ID = 's1';
   $IBLOCK_ID = 1;
   $EVEN_TYPE = 'FEEDBACK_EVEN_FORM';
   if ($arFields['IBLOCK_ID'] == $IBLOCK_ID) {
       $arFeedForm = array(
           "FIO" => $arFields['NAME'],
           "NESSAGE" => $arFields['PREVIEW_TEXT'],
           "TEL" => $arFields['PROPERTY_VALUES']['1'],
           "EMAIL" => $arFields['PROPERTY_VALUES']['2'],
       );
       CEvent::Send($EVEN_TYPE, $SITE_ID, $arFeedForm );
   }
}
?>

Михаил Базаров -> Всем
Denwer c PHP 7, Opcache. Open SSL и MYSQLi оптимизированный для разработки с Битрикс

- PHP обновлен до актуального 7.1.8.
- MYSQL Обновлен до версии 5.7
- Включен прекомпилятор Opcache с оптимальными параметрами для Битрикс
- Включено расширение OpenSSL
- Проведена настройка конфигурационых файлов php.ini и my.ini для максимальной производительности

Подробнее в блоге: https://camouf.ru/blog-note/5881/
Интересующийся многим -> Всем
Добрый день! Подскажите в 17 версии произошли какие изменения в настройке ЧПУ у компонентов news.list, news.detail?
Дмитрий Змеев -> Всем
Здравствуйте, как в меню добавить, изображение каталогов в меню(левое)? Мне надо сделать так(скрин)  
Фото:
Михаил БазаровМихаил Базаров
Удобнее и правильнее всего, через список разделов (компонент)
s.burdinskiy Всем
Добавлены 1 фото в альбом: Новый альбом
Михаил Базаров -> Всем
Форма обратной связи с проверкой на согласие, с политикой конфеденциальности.

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

- Оформление находится в файле style.scss
- Текст политики конфеденциальности в файле component_epilog.php

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

PS Сначал хотел, компонент отдельный сделать, но ча та излишество. Достаточно просто шаблона. Если кто заморочится, и сделает компонент- буду не против.


Фото:
Файлы:
main.feedback.zip (6.74 КБ)
Osokin -> Всем
Есть ли у кого-то готовый скрипт автоматического импорта с XML в инфоблок?
XML должен подхватывать по ссылке.
Михаил БазаровМихаил Базаров
На, там внутри разберешься, тут главное поменять путь до файла xml
И повесить этот скрипт на  cron

*/55 * * * * bitrix /usr/bin/php -f /home/bitrix/ПУТЬ_ДО_ЭТОГО_СКРИПТА

В примере, каждую 55-ую минуту, будет срабатывать
Файлы:
Кирилл -> Всем
Всем привет. Подскажите кто знает. Есть инфоблок с новости.  Есть компонент каталог. Есть свойство типа файл, множественное, для картинок. Хочу сделать так: загнать картинки в это множественное свойство свойство и потом в детальной новости выводить их между текстом в соответствии с маркером #картинка_ключвмассиве#.
для примера:
детальный текст <br>
#IMG_ID_3#<br>
детальный текст <br>
#IMG_ID_4#<br>
детальный текст <br>
#IMG_ID_5#<br>
детальный текст <br>
#IMG_ID_6#<br>
детальный текст <br>

пока что у меня готово вот что
<?
echo preg_replace_callback("/#IMG_ID_([\d]+)#/is".BX_UTF_PCRE_MODIFIER,
create_function('$matches', '$matches[1];
$retrunStr = "img_src = ".$matches[1];
return $retrunStr;'),
$arResult['DETAIL_TEXT']);
?>
однако я не могу понять как правильно запихнуть в этот код такую конструкцию
CFile::GetPath($arResult["PROPERTIES"]["DETAIL_PICTURES"]["VALUE"][2])
и заменить ключ массива на динамический параметр $matches[1]
Я так понимаю внутри calback функции тупо не видно массива $arResult, а как заставить функцию видеть его я  не могу сообразить..
Если кто  шарит - подскажите плиз.
as@iarga.ru Всем
Добавлены 1 фото в альбом: Новый альбом
Mutombo Всем
Добавлены 1 фото в альбом: Новый альбом

© 2011—2017 Частный вебмастер: ИП Базаров, ОГРНИП: 315784700173692. Работает на 1С-Битрикс.

Копирование материалов запрещено: "ГК РФ, часть 4, раздел VII: Права на результаты интеллектуальной деятельности".

Информация размещенная на сайте, не является публичной офертой.
Политика конфеденциальности