use Bitrix\Main\Mail;
/**
* Get from b_event table
* @var integer Existed event id
*/
$displayedEventId = 336020;
/**
* List of site ids, for event theme generation
* must be replaced by current site id in public
* @var array
*/
$arSites = [
's1'
];
try
{
/**
* First, try to find event
*/
$arEvent = Mail\Internal\EventTable::getRow([
'filter' => [
'=ID' => $displayedEventId,
]
]);
if ( !$arEvent )
{
throw new \Exception('Event not found');
}
$arEvent['FIELDS'] = $arEvent['C_FIELDS'];
/**
* Try to find all message templates for
* sites. In event handler we send for one letter
* per site.
*/
$arEventMessageFilter = [
'=ACTIVE' => 'Y',
'=EVENT_NAME' => $arEvent["EVENT_NAME"],
'=EVENT_MESSAGE_SITE.SITE_ID' => $arSites,
];
$messageDb = Mail\Internal\EventMessageTable::getList([
'select' => ['ID'],
'filter' => $arEventMessageFilter,
'group' => ['ID']
]);
foreach ($messageDb as $arMessage)
{
$eventMessage = Mail\Internal\EventMessageTable::getRowById($arMessage['ID']);
$eventMessage['FILES'] = array();
$attachmentDb = Mail\Internal\EventMessageAttachmentTable::getList(array(
'select' => array('FILE_ID'),
'filter' => array('=EVENT_MESSAGE_ID' => $arMessage['ID']),
));
while($arAttachmentDb = $attachmentDb->fetch())
{
$eventMessage['FILE'][] = $arAttachmentDb['FILE_ID'];
}
$arFields = $arEvent['FIELDS'];
// get message object for send mail
$arMessageParams = array(
'EVENT' => $arEvent,
'FIELDS' => $arFields,
'MESSAGE' => $eventMessage,
'SITE' => $arSites,
'CHARSET' => $charset,
);
$message = Mail\EventMessageCompiler::createInstance($arMessageParams);
$message->compile();
echo $message->getMailBody();
}
}
catch( \Exception $e )
{
var_dump($e);
}
не должно быть сложно!
Интересуют отличия CMS Bitrix и работы с ним, от работы с фреймворками
Есть желание доработать сайт на Битрикс CMS, но никогда раньше с ним не работал.
Отличия в плане архитектуры приложения, ограничений лицензии (он же платный), документации по API для плагинов с понятными примерами...
Слышал у них есть какой-то свой CDN который якобы многократно ускоряет сайты (когда-то видел один сайт с их CDN, как-то не впечатлило, у бесплатного Cloudflare вероятно побыстрее будет). Если это правда, как эффективно его использовать?
Нужно ли получать жёлтый листок от 1C для работы с их CMS как фрилансер, или это только в 1C: Предприятие?
// создаём отгрузки
$shipmentCollection = $orderBx->getShipmentCollection();
foreach (importJson['Shipments'] as $importOrderShipment)
$shipment = $shipmentCollection->createItem();
Если сделать dump basketItem, то все поля будут типа string
Как-то можно используя возможности D7 извлечь допданные сразу, в том же запросе, где извлекаются данные по локациям?
$res = \Bitrix\Sale\Location\LocationTable::getList([
'filter' => [
'=ID' => intval($id),
'=CHILDREN.NAME.LANGUAGE_ID' => 'ru',
],
'select' => [
'_ID' => 'CHILDREN.ID',
'CODE' => 'CHILDREN.CODE',
'DEPTH_LEVEL' => 'CHILDREN.DEPTH_LEVEL',
'LATITUDE' => 'CHILDREN.LATITUDE',
'LONGITUDE' => 'CHILDREN.LONGITUDE',
'NAME_RU' => 'CHILDREN.NAME.NAME',
'TYPE_CODE' => 'CHILDREN.TYPE.CODE',
'UF_XML_ID' => 'LOCODES.UF_XML_ID',
'UF_LOCATION_ID' => 'LOCODES.UF_LOCATION_ID',
],
'runtime' => [
new \Bitrix\Main\Entity\ReferenceField(
'LOCODES',
$this->locodes_data_class,
['=this.ID' => 'ref.UF_LOCATION_ID'],
['join_type' => 'LEFT']
)
],
'order' => [
'CHILDREN.NAME.NAME' => 'ASC'
]
]);
Но спустя какое-то время (через пару часов/дней), все картинки 404, и в файлах их нет, пути меняются.
Но ведь почему-то разработчики Битрикса решили от него отказаться?
Выходит нужно использовать старый CIBlockElement::Add() без вариантов?
Есть какой-то аналог Batch Processing от Doctrine?