- компонент, позволяющий выводить формы на сайте, очень выручает и экономит время на младших редакциях. Но нашелся один недостаток - если сделать свойство "Привязка к элементам" - он выведет обычное текстовое поле input="text" вместо выбора элементов.
Решил исправить эту ситуацию. Что нужно отредактировать:
result_modifier.php
template.php
style.css
Теперь по порядку. В result_modifier.php нужно дополнить информацию о полях и загрузить элементы к которым должна быть установлена привязка:
Затем, эту информацию необходимо вывести в шаблоне из файла template.php. Добавим следующий код перед строкой "<?elseif($arField["TYPE"] != "F"
:?>":
И дооформим все это в style.css:
Готово!
Решил исправить эту ситуацию. Что нужно отредактировать:
result_modifier.php
template.php
style.css
Теперь по порядку. В result_modifier.php нужно дополнить информацию о полях и загрузить элементы к которым должна быть установлена привязка:
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
$resProperty = CIBlockProperty::GetList(
Array("SORT" => "ASC"),
Array("IBLOCK_ID" => $arParams["IBLOCK_ID"])
);
$iFieldKey = 0;
while($arProp = $resProperty->Fetch()) {
if(in_array($arProp["CODE"], $arParams["PROPERTY_FIELDS"])) {
$arResult["FIELDS"][$iFieldKey]["PROPERTY"] = $arProp;
$iFieldKey++;
}
}
// elements for E property
foreach($arResult["FIELDS"] as $keyField=>$arField) {
if($arField["TYPE"] == "E") {
$iBlockID = $arField["PROPERTY"]["LINK_IBLOCK_ID"];
$resElement = CIBlockElement::GetList(
Array("SORT" => "ASC"),
Array(
"IBLOCK_ID" => $iBlockID,
"ACTIVE" => "Y"
),
false,
false,
Array("IBLOCK_ID", "ID", "ACTIVE", "NAME")
);
while($arElement = $resElement->Fetch()) {
$arResult["FIELDS"][$keyField]["LINKED_ELEMENTS"][] = $arElement;
}
}
}
?> |
Затем, эту информацию необходимо вывести в шаблоне из файла template.php. Добавим следующий код перед строкой "<?elseif($arField["TYPE"] != "F"
:?>":<?elseif($arField["TYPE"] == "E"):?> <div class="alx_feed_back_form_element_bg" id="error_<?=$arField["CODE"]?>"> <?if($arField["PROPERTY"]["MULTIPLE"] == "Y"):?> <?foreach($arField["LINKED_ELEMENTS"] as $arElement):?> <p class="alx_feed_back_form_checkbox"> <input type="checkbox" name="FIELDS[<?=$arField["CODE"]?>][]" value="<?=$arElement["ID"]?>" id="<?=$arField["CODE"]?>1_<?=$arElement["ID"]?>" <?if(!empty($_POST["FIELDS"][$arField["CODE"]]) && in_array($arElement["ID"], $_POST["FIELDS"][$arField["CODE"]])):?>checked="checked"<?endif;?> /> <label for="<?=$arField["CODE"]?>1_<?=$arElement["ID"]?>"><?=$arElement["NAME"]?></label> </p> <?endforeach;?> <?endif;?> </div> |
И дооформим все это в style.css:
/* element & checkbox */
.alx_feed_back_default .alx_feed_back_form_feedback_poles .alx_feed_back_form_item_pole .alx_feed_back_form_element_bg {
margin-left: 20px;
}
.alx_feed_back_default .alx_feed_back_form_feedback_poles .alx_feed_back_form_item_pole .alx_feed_back_form_element_bg .alx_feed_back_form_checkbox {
margin-bottom: 8px;
}
.alx_feed_back_default .alx_feed_back_form_feedback_poles .alx_feed_back_form_item_pole .alx_feed_back_form_element_bg .alx_feed_back_form_checkbox input {
vertical-align: baseline;
margin: 0 !important;
}
.alx_feed_back_default .alx_feed_back_form_feedback_poles .alx_feed_back_form_item_pole .alx_feed_back_form_element_bg .alx_feed_back_form_checkbox label {
vertical-align: middle;
} |
Готово!