Advertisement
konyakov

Двуязычная форма в Битриксе

Feb 13th, 2018
935
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 3.57 KB | None | 0 0
  1. <?
  2.  
  3. global $APPLICATION;
  4.  
  5. //  Определение директории страницы (русская или английская сторона сайта)
  6. $dir = $APPLICATION->GetCurDir();
  7.  
  8. ?>
  9.  
  10. <fieldset>
  11. <ul>
  12.  
  13. <?
  14.  
  15. //  Цикл вывода Описания и HTML-кода элементов формы (input, select, textarea, etc...)
  16. foreach ($arResult["QUESTIONS"] as $FIELD_SID => $arQuestion) {
  17.     if ($arQuestion['STRUCTURE'][0]['FIELD_TYPE'] == 'hidden') {
  18.         echo $arQuestion["HTML_CODE"];
  19.     } else {
  20. ?>
  21. <li>
  22. <label for="note"><?
  23.        
  24.         //  Простая проверка: если количество элементов в массиве больше 200, то вероятно этот массив состоит из списка стран        
  25.         if (count($arQuestion["STRUCTURE"]) > 200) {
  26.            
  27.             $arQuestionSTRUCTURE = $arQuestion["STRUCTURE"];
  28.            
  29.             echo '<select class="inputselect" name="form_dropdown_country" id="form_dropdown_country">';
  30.            
  31.             //  Перебираем все элементы-страны
  32.             foreach ($arQuestionSTRUCTURE as &$value) {
  33.                
  34.                 //  Каждая страна имеет вид: Россия, Центральный регион / Russia, Central region (здесь сепаратор в виде слеша)
  35.                
  36.                 //  Разбираем каждую страну на 2 части: Русская ($valueMESSAGE[0]) и Английская ($valueMESSAGE[1])
  37.                 $valueMESSAGE = explode("/", trim($value["MESSAGE"]));
  38.                
  39.                 //  Если английская сторона, выводим Английское написание, иначе выводим Русскоязычное описание
  40.                 if ($dir == '/en/reg/') {
  41.                     echo '<option value="' . $value["ID"] . '">' . $valueMESSAGE[1] . '</option>';
  42.                 } else {
  43.                     echo '<option value="' . $value["ID"] . '">' . $valueMESSAGE[0] . '</option>';
  44.                 }
  45.                
  46.             }
  47.             //  Разорвать ссылку на последний элемент
  48.             unset($value);
  49.             echo '</select>';
  50.            
  51.         } else {
  52.             //  Если это вопрос не связанный со странами, выводим его
  53.             echo $arQuestion["HTML_CODE"];
  54.         }
  55. ?></label>
  56. <span class="fld-labeled js-fld-labeled is-empty">
  57. <?
  58.         if (is_array($arResult["FORM_ERRORS"]) && array_key_exists($FIELD_SID, $arResult['FORM_ERRORS'])) {
  59.             ?><span class="error-fld" title="<?= htmlspecialcharsbx($arResult["FORM_ERRORS"][$FIELD_SID]) ?>"></span><?
  60.         }
  61.        
  62.         //  То-же самое делаем с описаниями вопросов. Общее описание вопроса вида: Фамилия/Surname мы разбираем на отдельные элементы.
  63.         $arQuestionSTRUCTURE = explode("/", trim($arQuestion["CAPTION"]));
  64.        
  65.         //  Если английская сторона, выводим Английское написание, иначе выводим Русскоязычное описание
  66.         if ($dir == '/en/reg/') {
  67.             echo $arQuestionSTRUCTURE[1];
  68.         } else {
  69.             echo $arQuestionSTRUCTURE[0];
  70.         }
  71.  
  72.         if ($arQuestion["REQUIRED"] == "Y") {
  73.             echo $arResult["REQUIRED_SIGN"];
  74.         }
  75. ?>
  76. <?= $arQuestion["IS_INPUT_CAPTION_IMAGE"] == "Y" ? "<br />" . $arQuestion["IMAGE"]["HTML_CODE"] : "" ?>
  77. </span>
  78. </li>
  79. <?
  80.     }
  81. } //end_foreach
  82. ?>
  83.  
  84. </ul>
  85. </fieldset>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement