Вывести пользовательское свойство ( UF_ ) типа ФАЙЛ в каталоге Битрикс

Решение проблем с сайтом на Битрикс

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

Копал инет, в итоге - рабочий способ:
[exec off]

//Получаем нужное свойство. Айди основного инфоблока и Айди подраздела обязательны, свойства можно получить все, задав UF_*
<? $rsSeo = CIBlockSection::GetList(array("SORT"=>"ASC"), array("IBLOCK_ID"=>$arResult["ORIGINAL_PARAMETERS"]["IBLOCK_ID"], "ID"=>$arResult["ORIGINAL_PARAMETERS"]["SECTION_ID"]), false, array("UF_CAT_IMAGE"));

while($arSeo = $rsSeo->GetNext())
{
//если есть свойства, выводим

if($arSeo['UF_CAT_IMAGE'] != false) { ?>
<divclass="col-xs-12 cat_image_wrapper"style="">
<h4>Фотографии <b><?=$arResult["NAME"];?></b> интерьере</h4>
<br>
<?
foreach($arSeo['UF_CAT_IMAGE'] as $item) {
if(empty($item)) break;
$arFile[$item] = CFile::GetFileArray($item);
// Ресайзим если надо
$arFileTmp = CFile::ResizeImageGet(
$item,
array("width" => 1024, "height" => 768),
BX_RESIZE_IMAGE_PROPORTIONAL,
true, $arFilter
);
?>

//Выводим в нужном нам формате и стилях

<div class="cat_image" data-entity="image">
<ahref="<?=$arFileTmp["src"];?>"rel="lightbox-cats">
<imgsrc="<?=$arFileTmp["src"];?>"alt=""class="lightbox"title=""itemprop="image">
</a>
</div>
<?
}
echo'</div>';
}
}

?>

[/exec]

Сайт для магазина строительных материалов и керамогранита — ALEKSSTROI.RU

Сайт для магазина строительных материалов и керамогранита - ALEKSSTROI.RU

Сделали сайт для компании АЛЕКССТРОЙ.

Сайт создан на движке 1С-Битрикс.

Вот что говорят о себе сами ребята:

Вас приветствует компания ООО ТД "АлексСтрой" .

Мы рады предложить Вам наши услуги по комплексному снабжению организаций и строительных объектов.

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

В 2007 году наша компания начала работу на строительном рынке г.Новосибирска и Новосибирской области, клиенты компании - физические лица, промышленные компании, строительные организации, ремонтно-отделочные бригады и т.д. Линейка предлагаемой продукции составляет более 10000 позиций, что позволяет скомплектовать полностью Вашу заявку.

Сотрудничество с  производителями  KNAUF INSULATION, ИЗОСПАН, Henkel Ceresit, ПЕНОПЛЭКС, Технониколь, Изовер, Геркулес, Bergauf, Скала,  и многие другие производители, что  позволяет держать цены конкурентноспособными.

 

Сайт для магазина строительных материалов и керамогранита - ALEKSSTROI.RU

Цветовая гамма - в соответствии с новыми веяниями 2021-2022, по версии Adobe. Самый топчик, моднее пока не придумали 🙂

Работать еще есть над чем, но уже компания может о себе заявить на просторах интернета и показать товар лицом!

Посмотреть сработавшие исходящие почтовые события в Битрикс

Решение проблем с сайтом на Битрикс

Как посмотреть сработавшие исходящие почтовые события в Битрикс

При конфигурации и начале работы в 1С Битрикс Управление сайтом возникает вопрос: как посмотреть отправленные письма в Битрикс?

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

Здесь очень важный момент – по способу отправки. При установке многих модулей и далее отправке сайт начинает падать с 50X ошибками.

И при переключении между страницами сайт постоянно тормозит и падает.

Это происходит по той причине, что модуль осуществляет сетевые подключения к «вашему SMTP» серверу что в случае работы «Агентов на хитах» может увеличивать время генерации страниц и приводить к ошибкам 50X.

В случае возникновения проблем рекомендуется перевести Агент на Cron либо уменьшить интенсивность отправки писем в настройках соответствующих модулей.

Мы же можем посмотреть все события на отправку писем и их статусы специальным запросом к MySQL в консоли либо через GUI-интерфейс Битрикса: Рабочий стол > Настройки > Инструменты > SQL запрос:

select * from b_event order by id desc

Данный запрос покажет список всех сообщений и статусы отправки. Если сообщение не отправлено — можно определить причину.

1) В результатах запросы разбираем столбец SUCCESS_EXEC

SUCCESS_EXEC = Y — значит все в порядке, сообщение отправлено (если не пришло на почту, проблема с сервером)

SUCCESS_EXEC = N — не обработано событие (значит не отправлено)

SUCCESS_EXEC = 0 — не найден шаблон (указан не верный шаблон)

Соответственно, просмотрев код, вы можете убедиться что со стороны битрикса почта ушла хорошо (Y, 0) или же узнать по какой причине этого не произошло. Если стоит код Y, однако письма не доходят, с большой вероятностью надо проконсультироваться с системным администратором сервера, скорее всего дело в настройке почтового сервера.

2) Далее смотрим: EVENT_NAME

Это тип почтового события, т.е. по сути метка о том какого типа было это сообщение. Все типы (а собственно узнать их по кодам) можно увидеть по пути /bitrix/admin/type_admin.php?lang=ru

3) Поле: DATE_EXEC

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

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

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

Убрать PAGEN_ из адресной строки (сайт на битрикс)

Часто SEO просит убрать PAGEN_1 и все остальные из адреса пагинации битрикс. Попробуйте этот вариант в .htaccess:

#Beautiful paginations
php_value auto_prepend_file "/home/d/УЧЕТНАЯ_ЗАПИСЬ_ХОСТИНГА/ВАШ_САЙТ/public_html/bitrix/pagen.php"
RewriteRule ^(.*)/pagen([\d]+)/ /$1/?PAGEN_1=$2 [L,QSA]

Содержимое файла pagen.php:

<?php
function __isPathTraversalUri($uri)
{
    if (($pos = strpos($uri, '?')) !== false) {
        $uri = substr($uri, 0, $pos);
    }
    $uri = trim($uri);
    return preg_match("#(?:/|2f|^|\\\\|5c)(?:(?:%0*(25)*2e)|\\.){2,}(?:/|%0*(25)*2f|\\\\|%0*(25)*5c|$)#i", $uri) ? true : false;
}
$newUri = preg_replace('#(pagen[\d]+/)#is', '', $_SERVER['REQUEST_URI']);
if (!__isPathTraversalUri($newUri)) {
    $_SERVER['REQUEST_URI'] = $newUri;
}

Сайт для студии кузовного ремонта и детейлинга VipPro (carnano.ru)

Сайт для студии кузовного ремонта и детейлинга VipPro (carnano.ru) - WEBSTUDIUS

Обновили сайт для детейлинг-центра VipPro.

Выполнен полный редизайн сайта, с нуля. Новая айдентика.

Теперь все выгоды, плюсы и характер центра — яркий, мощный, но серьезный и внимательный к мелочам.

В планах — переезд на новый движок, настройка рекламы Директ.

Что говорят о себе?

«VipPro» — Старейший Детейлинг-Центр В Новосибирске (Carnano.Ru) При наличии этих составляющих в определенной последовательности можно достигнуть достойного результата! Имея квалифицированного специалиста, знающего технологию процессов мойки, полировки, химчистки состав и специализацию средств авто химии, Вы на пол пути к успеху. Другие важные составляющие — это качество, безопасность и эффективность применяемых средств авто химии. Современные автомобили состоят из различных материалов отделки экстерьера и интерьера; хром, пластик, лак, кожа, дерево, алюминий, текстиль и т.д. для поддержания которых в первозданном, презентабельном виде, продлении им срока службы требуется правильный уход и защита.

Ссылка на сайт: carnano.ru


Заказать сайт-визитку, лендинг, форум, портал или интернет-магазин вы можете, написав нам в Директ, WhatsApp, в ВК, на почту или позвонив нам по телефону +7-913-013-45-51.

Заказывайте у нас сайт любой сложности, на Tilda, WordPress, 1C-Bitrix, Joomla, OpenCart или на той системе, которая удобнее вам. Все сделаем в лучшем виде!

#WEBSTUDIUS

ЧИНИМДОМА.РФ — сайт для AG SERVICE на Tilda. Ремонт гаджетов с выездом

ЧИНИМДОМА.РФ - сайт для AG SERVICE на Tilda. Ремонт гаджетов с выездом
Сайт ЧИНИМДОМА.РФ сделан на конструкторе Тильда (Tilda)
ПОЧИНИ СВОЙ ГАДЖЕТ
НЕ ВЫХОДЯ ИЗ ДОМА
Качественно, быстро и недорого. Выездной ремонт техники — самый простой и удобный способ починить ваш сломанный девайс.
ЧИНИМДОМА.РФ - сайт для AG SERVICE на Tilda. Ремонт гаджетов с выездом
ЧИНИМДОМА.РФ — сайт для AG SERVICE на Tilda. Ремонт гаджетов с выездом

 

Ссылка на сайт: https://чинимдома.рф

 


Заказать сайт-визитку, лендинг, форум, портал или интернет-магазин вы можете, написав нам в Директ, WhatsApp, в ВК, на почту или позвонив нам по телефону +7-913-013-45-51.

Заказывайте у нас сайт любой сложности, на Tilda, WordPress, 1C-Bitrix, Joomla, OpenCart или на той системе, которая удобнее вам. Все сделаем в лучшем виде!

#WEBSTUDIUS

УЧУРЕМОНТУ.РФ — сайт для AG SERVICE на Tilda. Обучение ремонту гаджетов

УЧУРЕМОНТУ.РФ - сайт для AG SERVICE на Tilda. Обучение ремонту гаджетов

Сайт УЧУРЕМОНТУ.РФ сделан на конструкторе Тильда (Tilda)

 

УЧУРЕМОНТУ.РФ - сайт для AG SERVICE на Tilda. Обучение ремонту гаджетов
УЧУРЕМОНТУ.РФ — сайт для AG SERVICE на Tilda. Обучение ремонту гаджетов

 

Ссылка на сайт: https://учуремонту.рф

 


Заказать сайт-визитку, лендинг, форум, портал или интернет-магазин вы можете, написав нам в Директ, WhatsApp, в ВК, на почту или позвонив нам по телефону +7-913-013-45-51.

Заказывайте у нас сайт любой сложности, на Tilda, WordPress, 1C-Bitrix, Joomla, OpenCart или на той системе, которая удобнее вам. Все сделаем в лучшем виде!

#WEBSTUDIUS

СТЕКЛА.НЕТ — сайт для AG SERVICE на Tilda. Ремонт и замена стекол на гаджетах

СТЕКЛА.НЕТ - сайт для AG SERVICE на Tilda. Ремонт и замена стекол на гаджетах WEBSTUDIUS

Сайт сделан на конструкторе Тильда (Tilda)

СТЕКЛА.НЕТ - сайт для AG SERVICE на Tilda. Ремонт и замена стекол на гаджетах WEBSTUDIUS
СТЕКЛА.НЕТ — сайт для AG SERVICE на Tilda. Ремонт и замена стекол на гаджетах WEBSTUDIUS

 

Ссылка на сайт: https://стекланет.рф

 


Заказать сайт-визитку, лендинг, форум, портал или интернет-магазин вы можете, написав нам в Директ, WhatsApp, в ВК, на почту или позвонив нам по телефону +7-913-013-45-51.

Заказывайте у нас сайт любой сложности, на Tilda, WordPress, 1C-Bitrix, Joomla, OpenCart или на той системе, которая удобнее вам. Все сделаем в лучшем виде!

#WEBSTUDIUS

Универсальный .htaccess для всех 301 редиректов сразу — http на https, www на без www и т.д.

Чисто памятка для универсального .htaccess для всех редиректов сразу — http на https, www на без www, со слешем, без слеша, с поддоменов одного домена на поддомены другого и т.д.

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

Options -Indexes 
ErrorDocument 404 /404.php


RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://site.ru/$1 [R=301,L]

#ROBOTS.TXT
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{REQUEST_URI} !robots.txt
RewriteRule ^(.*)$ https://site.ru/$1 [R=301,L]

#DOMAIN AND SUBDOMAIN REDIRECTION
RewriteBase /

RewriteCond %{HTTP_HOST} !^(www\.)?old-site\.ru$
RewriteCond %{HTTP_HOST} ^(.+)\.old-site\.ru$
RewriteRule (.*) https://%1.new-site.ru/$1 [R=301,L]

RewriteCond %{HTTP_HOST} ^old-site.ru$ [NC]
RewriteRule ^(.*)$ https://new-site.ru/$1 [R=301,L]


RewriteCond %{SERVER_PORT} !^443$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [L,R=301]

#one-to-301-wo-www-and-slash

RewriteCond %{REQUEST_URI} !\?
RewriteCond %{REQUEST_URI} !\&
RewriteCond %{REQUEST_URI} !\=
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_URI} !\/$
RewriteCond %{HTTP_HOST} ^www\.(.*)$
RewriteRule ^(.*)$ https://%1/$1/ [L,R=301]

RewriteCond %{REQUEST_URI} !\?
RewriteCond %{REQUEST_URI} !\&
RewriteCond %{REQUEST_URI} !\=
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_URI} ![^\/]$
RewriteCond %{HTTP_HOST} ^www\.(.*)$
RewriteRule ^(.*)$ https://%1/$1 [L,R=301]

RewriteCond %{REQUEST_URI} !\?
RewriteCond %{REQUEST_URI} !\&
RewriteCond %{REQUEST_URI} !\=
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_URI} !\/$
RewriteCond %{HTTP_HOST} ^([^www].*)$
RewriteRule ^(.*)$ https://%1/$1/ [L,R=301]
RewriteCond %{REQUEST_URI} !\&
RewriteCond %{REQUEST_URI} !\=
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_URI} !\/$
RewriteCond %{HTTP_HOST} ^([^www].*)$
RewriteRule ^(.*)$ https://%1/$1/ [L,R=301]


#RewriteCond %{HTTPS} =off
#RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L]


  php_flag session.use_trans_sid off
  #php_flag default_charset UTF-8
  #php_value display_errors 1



  php_flag session.use_trans_sid off
  php_flag default_charset UTF-8

  #php_value display_errors 1



  Options +FollowSymLinks
  RewriteEngine On
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-l
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !/bitrix/urlrewrite.php$
  RewriteRule ^(.*)$ /bitrix/urlrewrite.php [L]
  RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization}]



  DirectoryIndex index.php index.html



  ExpiresActive on
  ExpiresByType image/jpeg "access plus 3 day"
  ExpiresByType image/gif "access plus 3 day"
  ExpiresByType image/png "access plus 3 day"
  ExpiresByType text/css "access plus 3 day"
  ExpiresByType application/javascript "access plus 3 day"

Убрать index.php (при .html — заменить .php в записи) в конце адреса

# remove index.php from the end of URI
RewriteEngine On
RewriteRule ^index\.php$ / [R=301,L]
RewriteRule ^(.*)/index\.php$ /$1/ [R=301,L]

Редирект GET параметров

Например, сделать редирект со страницы /?act=page&id=2 на /page-2/

RewriteCond %{QUERY_STRING} act=page [NC]
RewriteCond %{QUERY_STRING} id=(\d+) [NC]
RewriteRule .* /page/%1/? [R=301,L]]

Как убрать все get запросы htaccess redirect

Бывает необходимо убрать все GET запросы/параметры из url, т.к на сайте они не используются, а поисковики пытаются индексировать страницы с этими параметрами и отмечают их как дубли.Для того, чтобы убрать GET параметры со всего сайта и сделать 301 редирект на ту же страницу но без параметров необходимо использовать следующую конструкцию:RewriteCond %{QUERY_STRING} ^(.+) [NC]
RewriteRule ^(.*)$ /$1? [R=301,L]

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

Однако если административная панель сайта использует GET запросы, необходимо исключить из этой конструкции папку административной панели сайта, и переделать ее в следующий вид:

RewriteCond %{REQUEST_URI} !^/admin/
RewriteCond %{QUERY_STRING} ^(.+) [NC]
RewriteRule ^(.*)$ /$1? [R=301,L]

Массовая генерация символьного кода в Битрикс

Решение проблем с сайтом на Битрикс

Честно сдернуто со страницы оригинала для удобства поиска )

Генерация символьных кодов для разделов и элементов инфоблоков
Задача:
С генерировать символьные коды для разделов или элементов инфоблока — если они не заданы

Используя скрипт предложенный Николаем Ефремовым делаем так:

1/ открываем командную строку PHP — Рабочий стол — Настройки — Инструменты — Командная PHP-строка [/bitrix/admin/php_command_line.php]
Скопировать в область кода следующий скрипт

if(!CModule::IncludeModule("iblock"))
{
   echo "Error with iblock module!";
   die;
}
$arParams['IBLOCK_ID'] = 17;
$arParams['LIST_CNT'] = 50;
$arParams['IS_ADD_RAND'] = false;
$arParams['TYPE_WORK'] = 'section'; // {section | element}


$arOrder = array(
   "sort" => "inc",
);

$arFilter = array(
   "IBLOCK_ID" => $arParams['IBLOCK_ID'],
   "IBLOCK_LID" => SITE_ID,
   //"CODE" => "",
   "CODE" => false
);

$arTransParams = array(
   "max_len" => 100,
   "change_case" => 'L', // 'L' - toLower, 'U' - toUpper, false - do not change
   "replace_space" => '-',
   "replace_other" => '-',
   "delete_repeat_replace" => true
);

if($arParams['TYPE_WORK'] == 'section'){
   //for SECTIONS
   $db_elemens = CIBlockSection::GetList($arOrder, $arFilter, false);
   $db_elemens->NavStart($arParams['LIST_CNT']);
   echo '<pre>';
   while($ar_res = $db_elemens->GetNext())
   {
      $transName = CUtil::translit($ar_res["NAME"], "ru", $arTransParams);
      if($arParams['IS_ADD_RAND']){
         $transName = $transName.$arTransParams["replace_space"].$ar_res["ID"];
      }
      $arPropArray = Array( "CODE" => $transName );
      
      $el = new CIBlockSection;
      $res = $el->Update($ar_res["ID"], $arPropArray);
      echo "result for <b>".$ar_res["NAME"]."</b> is <b>".$transName.'</b>'.($res?" and OK":" and failed")."\r\n";
   }
   echo '</pre>';
}elseif($arParams['TYPE_WORK'] == 'element'){
   // for ELEMENTS
   $db_elemens = CIBlockElement::GetList($arOrder, $arFilter, false, array("nTopCount" => $arParams['LIST_CNT']));

   $i = 0;
   echo '<pre>';
   while($obElement = $db_elemens->GetNextElement())
   {
      $ar_res = $obElement->GetFields();
      
      $transName = CUtil::translit($ar_res["NAME"], "ru", $arTransParams);
      if($arParams['IS_ADD_RAND']){
         $transName = $transName.$arTransParams["replace_space"].$ar_res["ID"];
      }
      $arPropArray = Array( "CODE" => $transName, );
      
      $el = new CIBlockElement;
      $res = $el->Update($ar_res["ID"], $arPropArray);
      echo "result for <b>".$ar_res["NAME"]."</b> is <b>".$transName.'</b>'.($res?" and OK":" and failed")."\r\n";
   }
   echo '</pre>';
}

2/ Определяемся с инфоблоком — ниже в скрипте в параметр $arParams[‘IBLOCK_ID’] нужно записать его ID

3/ Решаем, нужно ли нам генерировать совсем уникальные коды. Можно вначале пройтись и создать не повторяющиеся, а для повторяющихся добавить в конце ID. За это отвечает параметр $arParams[‘IS_ADD_RAND’] — {true|false}

4/ Указываем шаг выборки — параметр $arParams[‘LIST_CNT’] — большим не стоит делать, максимум 100 элементов за раз

5/ Настраиваем параметры транслита. За это отвечает массив $arTransParams

$arTransParams = array(
   "max_len" => 100,
   "change_case" => 'L', // 'L' - toLower, 'U' - toUpper, false - do not change
   "replace_space" => '-',
   "replace_other" => '-',
   "delete_repeat_replace" => true
);

6/ Указываем для чего будем проводить генерацию — для разделов или для элементов — параметр $arParams[‘TYPE_WORK’] — возможные значения — {section | element}

7/ Жмем кнопку выполнить — прогнать скрипт нужное количество раз

Открыть чат
1
Попробуйте написать нам в WhatsApp!
Попробуйте написать нам в WhatsApp!