Форум программистов, компьютерный форум, киберфорум
1С Битрикс
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 0
Регистрация: 28.02.2017
Сообщений: 30
1

Почему через wizard установщик тип инфоблока берется из ядра bitrix?

26.07.2019, 14:30. Просмотров 568. Ответов 0

Есть установщик готового решения расположен по /bitrix/wizards/softwarepass6454597test

В готовом решении есть импорт инфоблоков из xml

В файле types.php , который расположен по адресу /bitrix/wizards/softwarepass6454597test/swptest/site/services/iblock я задаю новый тип инфоблока и потом его прописываю в файлах portfolio.php potolki.php services.php . Тип называю "contentsoft"

Далее после установки решения все хорошо устанавливается, но вместо моего заданного типа инфоблока появляется другой тип с ID 1c_catalog - этот тип берет из ядра битрикса и в него записываются все нужные мне инфоблоки.

Ребят, где упускаю?

вот кодэ пример
types.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?
if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)
  die();
if(!CModule::IncludeModule("iblock"))
  return;
$arTypes = Array(
  Array(
    "ID" => "contentsoft",
    "SECTIONS" => "Y",
    "IN_RSS" => "N",
    "SORT" => 200,
    "LANG" => Array(),
  ),
);
$arLanguages = Array();
$rsLanguage = CLanguage::GetList($by, $order, array());
while($arLanguage = $rsLanguage->Fetch())
  $arLanguages[] = $arLanguage["LID"];
$iblockType = new CIBlockType;
foreach($arTypes as $arType)
{
  $dbType = CIBlockType::GetList(Array(),Array("=ID" => $arType["ID"]));
  if($dbType->Fetch())
    continue;
  foreach($arLanguages as $languageID)
  {
    WizardServices::IncludeServiceLang("type.php", $languageID);
    $code = strtoupper($arType["ID"]);
    $arType["LANG"][$languageID]["NAME"] = GetMessage($code."_TYPE_NAME");
    $arType["LANG"][$languageID]["ELEMENT_NAME"] = GetMessage($code."_ELEMENT_NAME");
    if ($arType["SECTIONS"] == "Y")
      $arType["LANG"][$languageID]["SECTION_NAME"] = GetMessage($code."_SECTION_NAME");
  }
  $iblockType->Add($arType);
}
?>
type.php
PHP
1
2
3
4
5
<?
$MESS["CONTENTSOFT_TYPE_NAME"] = "Контент2";
$MESS["CONTENTSOFT_ELEMENT_NAME"] = "Элементы";
$MESS["CONTENTSOFT_SECTION_NAME"] = "Разделы";
?>
инфоблок

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)
  die();
 
if(!CModule::IncludeModule("iblock"))
  return;
 
$iblockXMLFile = WIZARD_SERVICE_RELATIVE_PATH."/xml/".LANGUAGE_ID."/services.xml";
$iblockCode = "services".WIZARD_SITE_ID;
$iblockType = "contentsoft";
 
$rsIBlock = CIBlock::GetList(array(), array("CODE" => $iblockCode, "TYPE" => $iblockType));
$iblockID = false;
if ($arIBlock = $rsIBlock->Fetch())
{
  $iblockID = $arIBlock["ID"];
  if (WIZARD_REINSTALL_DATA)
  {
    CIBlock::Delete($arIBlock["ID"]);
    $iblockID = false;
  }
}
 
if($iblockID == false)
{
  $permissions = Array(
    "1" => "X",
    "2" => "R"
  );
  $dbGroup = CGroup::GetList($by = "", $order = "", Array("STRING_ID" => "content_editor"));
  if($arGroup = $dbGroup -> Fetch())
  {
    $permissions[$arGroup["ID"]] = 'W';
  };
  $iblockID = WizardServices::ImportIBlockFromXML(
    $iblockXMLFile,
    "services",
    $iblockType,
    WIZARD_SITE_ID,
    $permissions
  );
 
  if ($iblockID < 1)
    return;
 
  //WizardServices::SetIBlockFormSettings($iblockID, Array ( 'tabs' => GetMessage("W_IB_GROUP_PHOTOG_TAB1").$REAL_PICTURE_PROPERTY_ID.GetMessage("W_IB_GROUP_PHOTOG_TAB2").$rating_PROPERTY_ID.GetMessage("W_IB_GROUP_PHOTOG_TAB3").$vote_count_PROPERTY_ID.GetMessage("W_IB_GROUP_PHOTOG_TAB4").$vote_sum_PROPERTY_ID.GetMessage("W_IB_GROUP_PHOTOG_TAB5").$APPROVE_ELEMENT_PROPERTY_ID.GetMessage("W_IB_GROUP_PHOTOG_TAB6").$PUBLIC_ELEMENT_PROPERTY_ID.GetMessage("W_IB_GROUP_PHOTOG_TAB7"), ));
 
  //IBlock fields
  $iblock = new CIBlock;
  $arFields = Array(
    "ACTIVE" => "Y",
    "FIELDS" => array ( 'IBLOCK_SECTION' => array ( 'IS_REQUIRED' => 'N', 'DEFAULT_VALUE' => '', ), 'ACTIVE' => array ( 'IS_REQUIRED' => 'Y', 'DEFAULT_VALUE' => 'Y', ), 'ACTIVE_FROM' => array ( 'IS_REQUIRED' => 'N', 'DEFAULT_VALUE' => '=today', ), 'ACTIVE_TO' => array ( 'IS_REQUIRED' => 'N', 'DEFAULT_VALUE' => '', ), 'SORT' => array ( 'IS_REQUIRED' => 'N', 'DEFAULT_VALUE' => '', ), 'NAME' => array ( 'IS_REQUIRED' => 'Y', 'DEFAULT_VALUE' => '', ), 'PREVIEW_PICTURE' => array ( 'IS_REQUIRED' => 'N', 'DEFAULT_VALUE' => array ( 'FROM_DETAIL' => 'N', 'SCALE' => 'N', 'WIDTH' => '', 'HEIGHT' => '', 'IGNORE_ERRORS' => 'N', ), ), 'PREVIEW_TEXT_TYPE' => array ( 'IS_REQUIRED' => 'Y', 'DEFAULT_VALUE' => 'text', ), 'PREVIEW_TEXT' => array ( 'IS_REQUIRED' => 'N', 'DEFAULT_VALUE' => '', ), 'DETAIL_PICTURE' => array ( 'IS_REQUIRED' => 'N', 'DEFAULT_VALUE' => array ( 'SCALE' => 'N', 'WIDTH' => '', 'HEIGHT' => '', 'IGNORE_ERRORS' => 'N', ), ), 'DETAIL_TEXT_TYPE' => array ( 'IS_REQUIRED' => 'Y', 'DEFAULT_VALUE' => 'text', ), 'DETAIL_TEXT' => array ( 'IS_REQUIRED' => 'N', 'DEFAULT_VALUE' => '', ), 'XML_ID' => array ( 'IS_REQUIRED' => 'N', 'DEFAULT_VALUE' => '', ), 'CODE' => array ( 'IS_REQUIRED' => 'N', 'DEFAULT_VALUE' => '', ), 'TAGS' => array ( 'IS_REQUIRED' => 'N', 'DEFAULT_VALUE' => '', ), ),
    "CODE" => $iblockCode,
    "XML_ID" => $iblockCode,
    "NAME" => $iblock->GetArrayByID($iblockID, "NAME"),
    //"NAME" => "[".WIZARD_SITE_ID."] ".$iblock->GetArrayByID($iblockID, "NAME")
  );
 
  $iblock->Update($iblockID, $arFields);
}
else
{
  $arSites = array();
  $db_res = CIBlock::GetSite($iblockID);
  while ($res = $db_res->Fetch())
    $arSites[] = $res["LID"];
  if (!in_array(WIZARD_SITE_ID, $arSites))
  {
    $arSites[] = WIZARD_SITE_ID;
    $iblock = new CIBlock;
    $iblock->Update($iblockID, array("LID" => $arSites));
  }
}
 
CWizardUtil::ReplaceMacros(WIZARD_SITE_PATH."/services/index.php", array("PROMOS_IBLOCK_ID" => $iblockID));
 
?>
Добавлено через 18 минут
разобрался... в папке lang кроме ru, должна быть еще папка en
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.07.2019, 14:30
Ответы с готовыми решениями:

Вывод инфоблока bitrix:news
Здравствйте! Подскажите как с помощью компоненты news.list вывести данные 2 и более инфоблоков...

Установщик "Setup Wizard" Visual Studio 2008
Всем привет!!! Подскажите пожалуйста, как в установщик добавить иконку, при нажатии на которую...

Почему не берется необходимый массив?
Есть код,который должен выводить определенное число массива. my_list= z = input()...

Почему перед некоторыми ф-ми в некоторых источниках пишут через тип:
Почему перед некоторыми ф-ми в некоторых источниках пишут через тип: int printf ()... int...

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.07.2019, 14:30

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

Почему берется исключение при парсинге
Столкнулся с такой проблемой, есть у меня код, в 13 студии он работает нормально, нет никаких...

Почему не значение из переменой не берется из формы 2 в форму 3
public partial class Form2 : Form { public string text=&quot;smth&quot;; } public...

почему в уравнении эйнштейна для внешнего фотоэффекта скорость берется максимальная?
почему в уравнении эйнштейна для внешнего фотоэффекта скорость берется максимальная?

Почему для поиска по массиву берется значение его первого элемента, а не ноль?
Свем доброго времени суток и всех с праздником! #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.