LASER PRO — ГАРАНТИЯ КАЧЕСТВА! Мы специализируемся на безболезненной лазерной эпиляции на современном и безопасном оборудовании и аппаратной коррекции фигуры с помощью вакуумно-роликового массажера. Уже более 20 лет лазерное удаление волос — это современный способ избавиться от нежелательных волос на длительный срок. Процедура безопасна и абсолютно безболезненна. В наших студиях работают только специалисты с медицинским образованием. На курс процедур лазерной эпиляции мы предоставляем гарантию результата.
лазерная эпиляция в севастополе отзывы
Управление
Друзья
Нет друзей
Ближайшие дни рождения друзей
Информация доступна только на странице текущего пользователя.
Используем PhpStorm для разработки На текущий момент есть много замечательных IDE с поддержкой PHP/JS/HTML, но я с давних пор пользуюсь PhpStorm Далее - подробная инструкция как начать работу с этой замечательной IDE. [spoiler]
Рассмотрим самый простой вариант - битрикс уже развернут на хостинге, есть ftp/sftp доступ. Создаем новый проект: Выбираем создание проекта из исходников, доступных по ftp: Задаем название проекта, папку, где будет находиться проект и обязательно выбираем "custom": В дополнительных настройках много пунктов, нам потребуется изменить следующие: "Upload changed files automatically to the default server" - "Always" - загружать измененные файлы на сервер "warn when uploading over newer file" - "Compare content" и "Notify about remote changes" - полезно, если над проектом работает больше одного разработчика - phpstorm будет предупреждать об изменениях файлов на сервере, это поможет избежать перезаписи изменений друг друга.
Настраиваем параметры соединения:
Далее - необходимо указать корневую папку сайта на сервере (Project root) и исключить все остальные папки(или по крайней мере папку bitrix. Иначе скачивание проекта может занять несколько часов, проще это позже сделать в фоновом режиме).
Открываем в правой части экрана вкладку "Remote Host" и заходим в настройки (иконка с тремя точками рядом с названием подключения). Во вкладке "Excluded path" удаляем из исключений все локальные папки
Теперь можно выкачивать все остальное - для этого удаляем папку из исключений (правый клик, Remove path from excluded) и выкачиваем в проект(Download from here)
Проект готов к работе:
Работаем с проектом Помимо стандартных фич (автодополнение кода, проверка на ошибки и т.д.) в PhpStorm есть множество возможностей, которые могут послужить стимулом для миграции
Одна из проблем битрикса - тяжелое наследие из старого кода, очень многие методы, которые по факту являются static, объявлены как обычные. Из-за этого автодополнение в phpstorm не может их подхватить. Решается эта проблема исключением из проекта папки bitrix/modules и подключение этой папки из замечательного проекта bxApiDocs
Еще одной киллер-фичей являются сниппеты для подключения компонентов. Для этого необходимо установить bxCompSnpt и добавлять компоненты из IDE простым нажатием комбинации Ctrl+J
При создании проекта исключил папку /bitrix/components/ как теперь ее вернуть что бы она выгрузилась локально и индексировалась? Remove Path From Exluded выставлял, Deployment => Download... на папке локальной bitrix выставлял толку ноль! Не загружается! Как быть то не могу понять.... Подскажите пожалуйста!
Вкратце: при создании раздела, если в форму редактирования выведена вкладка "Свойства элементов" (или они выведены в какой-нибудь другой вкладке), фасетный индекс начинает требовать обновления. И из-за этого время от времени пропадают товары из публички (особенности работы CIBlockElement::GetList). Ясное дело, меня это не устраивало. (Можно просто скрыть вывод "Свойств элементов", но это слишком просто для таких извращенцев, как я)
Собственно мне помогло вот это в init.php
AddEventHandler("iblock", "OnBeforeIBlockSectionAdd", "OnBeforeIBlockSectionAddHandler");
/*
* Удаляет из массива настройки свойств элементов, если они не изменились.
* Если ничего не изменилось, не придётся пересоздавать фасетный индекс.
*/
function OnBeforeIBlockSectionAddHandler(&$arFields)
{
if(!empty($arFields['SECTION_PROPERTY']))
{
$arPropLinks = CIBlockSectionPropertyLink::GetArray($arFields['IBLOCK_ID'], $arFields['IBLOCK_SECTION_ID']);
// Если у инфоблока есть торговые предложения, пройдёмся по их свойствам тоже
$arCatalog = false;
if (CModule::IncludeModule("catalog"))
$arCatalog = CCatalogSku::GetInfoByProductIBlock($arFields['IBLOCK_ID']);
if (is_array($arCatalog))
$arPropLinks += CIBlockSectionPropertyLink::GetArray($arCatalog['IBLOCK_ID']);
foreach($arFields['SECTION_PROPERTY'] as $propId => $options)
{
if(!empty($arPropLinks[$propId]))
{
// Форма возвращает нам SMART_FILTER и DISPLAY_EXPANDED либо как 'Y', либо как null,
// CIBlockSectionPropertyLink::GetArray может вернуть и 'N'. Не порядок.
if($arPropLinks[$propId]['SMART_FILTER'] === 'N')
$arPropLinks[$propId]['SMART_FILTER'] = null;
if($arPropLinks[$propId]['DISPLAY_EXPANDED'] === 'N')
$arPropLinks[$propId]['DISPLAY_EXPANDED'] = null;
if($arPropLinks[$propId]['FILTER_HINT'] === null) // такое тоже бывает
$arPropLinks[$propId]['FILTER_HINT'] = '';
foreach($options as $key => $value) {
if($arPropLinks[$propId][$key] !== $value)
return;
}
}
}
unset($arFields['SECTION_PROPERTY']);
}
}
CIBlockSectionPropertyLink::GetArray - подсмотрел в /bitrix/modules/iblock/admin/iblock_section_edit.php. Документации нет, но есть хороший комментарий здесь.
В принципе всё. В комментариях в коде самое главное написано. В любом случае, если соберётесь использовать это у себя - перепроверьте. Мало ли что.
P.S. При таком подходе (как и при скрытии вывода "Свойств элементов") у свежесозданных разделов (у которых вы ничего не меняли в "Свойствах элементов" при создании) теряется возможность редактировать эти самые "Свойства элементов", что нормально. Тут что скриптом исключай, что изначально не отображай. И тут уж вам самим выбирать, пересоздавать ли фасетный индекс при добавлении любого раздела, или получить нередактируемые поля.
Всё ещё считаю, что такое поведение GetList'а - это чёрная магия
Странно что до сих пор нет такого свойства в стандартной поставке. Может где-то проскакивало на форуме - не помню, решил написать своё для удобства работы, может кому-то пригодится:
Как использовать: 1. разместить файл CViDiPropSection.php в папке /bitrix/php_interface/lib/ 2. в файле /bitrix/php_interface/init.php добавить код:
AddEventHandler("main", "OnBeforeProlog", "IBlockOnBeforePrologHandler");
function IBlockOnBeforePrologHandler()
{
// Пользовательское свойство - привязка к разделам в виде списка
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/php_interface/lib/CViDiPropSection.php");
}
После этого на странице настроек свойств инфоблока появится это свойство:
Если разделы имеют вложенную структуру - то они показываются последовательно, один под одним (после выбора раздела первого уровня предлагается выбрать раздел второго уровня, и тд.). Удобно если разделов очень большое количество.
Согласен, если методы юзертайпа не планируется использовать до вызова CIBlockProperty::GetUserType(), то можно обойтись пятым параметром AddEventHandler().
Сколько времени пишу под Битрикс, никогда не знал о существовании константы SITE_TEMPLATE_PATH (не описанной, как всегда, в документации, но любезно подсказанной моим коллегой).
После восстановления пароля, пользователь нажимает на кнопку авторизации, вводит свой логин и новый пароль, но авторизация не происходит. Ошибок не выдает, просто обновляется страница и на этом все. После повторного нажатия на кнопку авторизации - авторизует. В чем может быть проблема?
После восстановления пароля, пользователь нажимает на кнопку авторизации, вводит свой логин и новый пароль, но авторизация не происходит. Ошибок не выдает, просто обновляется страница и на этом все. После повторного нажатия на кнопку авторизации - аторизует. В чем может быть проблема?
Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».