Раздельные доп поля, для категорий в addnews.tpl [DLE 10.6]

Раздельные доп поля, для категорий в addnews.tpl [DLE 10.6]

Название: Раздельные доп поля, для категорий в addnews.tpl
Автор: Georka
CMS: DLE 10.6
Описание: Привожу пример, как разделить доп поля категорий в addnews.tpl
В общем по умолчанию в addnews.tpl выводятся все доп. поля которые мы создали. Не смотря на то, к каким категориям мы их отнесли.
А что если мы создали много категорий и хотим видеть к каждой категории свои доп поля?
Например: у нас 2 категории: Игры и Фильмы. И 2 доп поля: Жанр и Системные требования.
Не логично ведь видеть все поля до выбора категории? Но они все равно отображаются! И это не кайф!
Для того чтобы у нас отображались доп. поля после выбора категории и в нужном порядке относительности.
Есть решение:
создаём нужные нам категории (если не созданны),
создаём нужные нам доп поля и указываем, на каких категориях их отображать.
— далее открываем страницу добавления новости (в ПУ)
— жмём CTRL + U (открываем исходный текст)
— ищём скрипт с таким началом:


  <script type="text/javascript">
  function ShowOrHideEx(id, show) {

— в нём перечислены все условия для текущих доп полей которые мы указали при создании.
копируем его полностью! и вставляем вместо {xfields}
— далее, снова в исходном тексте добавления новости, ищем начало ваших доп полей.
— Первая строка которой, примерно выглядит так:


<div id="xfield_holder_[color=#FF6600]название поля[/color]" class="form-group" uid="essential" >
  <label class="control-label col-md-2">[color=#FF6600]Описание поля[/color]:</label>
  <div class="col-md-10">
     <input type="text" style="width:99%;max-width:437px;" name="xfield[[color=#FF6600]название поля[/color]]" id="xf_image" value="значение" rel="essential" />&nbsp;&nbsp;<span class="note large"> <i class="icon-warning-sign"></i> обязательно</span>
  </div>
</div>

вставляем весь код, под скрипт, который мы установили (вместо {xfields})
— далее идёт третий кусок пирога, и вставляем его под второй кусок.


<script type="text/javascript">
    onCategoryChange($('#category'));
</script>

В итоге: мы должны скопировать 3 куска кода, с исходного кода страница добавления в ПУ. И вставить их вместо {xfields}. Далее можете устанавливать свои стили для input’ов.
Чтоб не путаться, приведу пример 3-х кусков кода которые я вставил вместо {xfields} в addnews.tpl в необходимом порядке.


  <script type="text/javascript">
  function ShowOrHideEx(id, show) {
    var item = null;
    if (document.getElementById) {
      item = document.getElementById(id);
    } else if (document.all) {
      item = document.all[id];
    } else if (document.layers){
      item = document.layers[id];
    }
    if (item && item.style) {
      item.style.display = show ? "" : "none";
    }
  }
  function onCategoryChange(obj) {
	var value = $(obj).val();
	if ($.isArray(value)) {
ShowOrHideEx("xfield_holder_date", jQuery.inArray('12', value) != -1 || jQuery.inArray('13', value) != -1 || jQuery.inArray('14', value) != -1 || jQuery.inArray('15', value) != -1 || jQuery.inArray('16', value) != -1 || jQuery.inArray('17', value) != -1 || jQuery.inArray('18', value) != -1 || jQuery.inArray('19', value) != -1 || jQuery.inArray('20', value) != -1 || jQuery.inArray('21', value) != -1 || jQuery.inArray('22', value) != -1 || jQuery.inArray('23', value) != -1 || jQuery.inArray('24', value) != -1 || jQuery.inArray('25', value) != -1 || jQuery.inArray('26', value) != -1 || jQuery.inArray('27', value) != -1 );
ShowOrHideEx("xfield_holder_creator", jQuery.inArray('12', value) != -1 || jQuery.inArray('13', value) != -1 || jQuery.inArray('14', value) != -1 || jQuery.inArray('15', value) != -1 || jQuery.inArray('16', value) != -1 || jQuery.inArray('17', value) != -1 || jQuery.inArray('18', value) != -1 || jQuery.inArray('19', value) != -1 || jQuery.inArray('20', value) != -1 || jQuery.inArray('21', value) != -1 || jQuery.inArray('22', value) != -1 || jQuery.inArray('23', value) != -1 || jQuery.inArray('24', value) != -1 || jQuery.inArray('25', value) != -1 || jQuery.inArray('26', value) != -1 || jQuery.inArray('27', value) != -1 );
ShowOrHideEx("xfield_holder_language", jQuery.inArray('12', value) != -1 || jQuery.inArray('13', value) != -1 || jQuery.inArray('14', value) != -1 || jQuery.inArray('15', value) != -1 || jQuery.inArray('16', value) != -1 || jQuery.inArray('17', value) != -1 || jQuery.inArray('18', value) != -1 || jQuery.inArray('19', value) != -1 || jQuery.inArray('20', value) != -1 || jQuery.inArray('21', value) != -1 || jQuery.inArray('22', value) != -1 || jQuery.inArray('23', value) != -1 || jQuery.inArray('24', value) != -1 || jQuery.inArray('25', value) != -1 || jQuery.inArray('26', value) != -1 || jQuery.inArray('27', value) != -1 );
ShowOrHideEx("xfield_holder_crack", jQuery.inArray('12', value) != -1 || jQuery.inArray('13', value) != -1 || jQuery.inArray('14', value) != -1 || jQuery.inArray('15', value) != -1 || jQuery.inArray('16', value) != -1 || jQuery.inArray('17', value) != -1 || jQuery.inArray('18', value) != -1 || jQuery.inArray('19', value) != -1 || jQuery.inArray('20', value) != -1 || jQuery.inArray('21', value) != -1 || jQuery.inArray('22', value) != -1 || jQuery.inArray('23', value) != -1 || jQuery.inArray('24', value) != -1 || jQuery.inArray('25', value) != -1 || jQuery.inArray('26', value) != -1 || jQuery.inArray('27', value) != -1 );
ShowOrHideEx("xfield_holder_os", jQuery.inArray('12', value) != -1 || jQuery.inArray('13', value) != -1 || jQuery.inArray('14', value) != -1 || jQuery.inArray('15', value) != -1 || jQuery.inArray('16', value) != -1 || jQuery.inArray('17', value) != -1 || jQuery.inArray('18', value) != -1 || jQuery.inArray('19', value) != -1 || jQuery.inArray('20', value) != -1 || jQuery.inArray('21', value) != -1 || jQuery.inArray('22', value) != -1 || jQuery.inArray('23', value) != -1 || jQuery.inArray('24', value) != -1 || jQuery.inArray('25', value) != -1 || jQuery.inArray('26', value) != -1 || jQuery.inArray('27', value) != -1 );
ShowOrHideEx("xfield_holder_cpuram", jQuery.inArray('12', value) != -1 || jQuery.inArray('13', value) != -1 || jQuery.inArray('14', value) != -1 || jQuery.inArray('15', value) != -1 || jQuery.inArray('16', value) != -1 || jQuery.inArray('17', value) != -1 || jQuery.inArray('18', value) != -1 || jQuery.inArray('19', value) != -1 || jQuery.inArray('20', value) != -1 || jQuery.inArray('21', value) != -1 || jQuery.inArray('22', value) != -1 || jQuery.inArray('23', value) != -1 || jQuery.inArray('24', value) != -1 || jQuery.inArray('25', value) != -1 || jQuery.inArray('26', value) != -1 || jQuery.inArray('27', value) != -1 );
ShowOrHideEx("xfield_holder_gc", jQuery.inArray('12', value) != -1 || jQuery.inArray('13', value) != -1 || jQuery.inArray('14', value) != -1 || jQuery.inArray('15', value) != -1 || jQuery.inArray('16', value) != -1 || jQuery.inArray('17', value) != -1 || jQuery.inArray('18', value) != -1 || jQuery.inArray('19', value) != -1 || jQuery.inArray('20', value) != -1 || jQuery.inArray('21', value) != -1 || jQuery.inArray('22', value) != -1 || jQuery.inArray('23', value) != -1 || jQuery.inArray('24', value) != -1 || jQuery.inArray('25', value) != -1 || jQuery.inArray('26', value) != -1 || jQuery.inArray('27', value) != -1 );
ShowOrHideEx("xfield_holder_space", jQuery.inArray('12', value) != -1 || jQuery.inArray('13', value) != -1 || jQuery.inArray('14', value) != -1 || jQuery.inArray('15', value) != -1 || jQuery.inArray('16', value) != -1 || jQuery.inArray('17', value) != -1 || jQuery.inArray('18', value) != -1 || jQuery.inArray('19', value) != -1 || jQuery.inArray('20', value) != -1 || jQuery.inArray('21', value) != -1 || jQuery.inArray('22', value) != -1 || jQuery.inArray('23', value) != -1 || jQuery.inArray('24', value) != -1 || jQuery.inArray('25', value) != -1 || jQuery.inArray('26', value) != -1 || jQuery.inArray('27', value) != -1 );
	} else {
ShowOrHideEx("xfield_holder_date", value == 12||value==13||value==14||value==15||value==16||value==17||value==18||value==19||value==20||value==21||value==22||value==23||value==24||value==25||value==26||value==27);
ShowOrHideEx("xfield_holder_creator", value == 12||value==13||value==14||value==15||value==16||value==17||value==18||value==19||value==20||value==21||value==22||value==23||value==24||value==25||value==26||value==27);
ShowOrHideEx("xfield_holder_language", value == 12||value==13||value==14||value==15||value==16||value==17||value==18||value==19||value==20||value==21||value==22||value==23||value==24||value==25||value==26||value==27);
ShowOrHideEx("xfield_holder_crack", value == 12||value==13||value==14||value==15||value==16||value==17||value==18||value==19||value==20||value==21||value==22||value==23||value==24||value==25||value==26||value==27);
ShowOrHideEx("xfield_holder_os", value == 12||value==13||value==14||value==15||value==16||value==17||value==18||value==19||value==20||value==21||value==22||value==23||value==24||value==25||value==26||value==27);
ShowOrHideEx("xfield_holder_cpuram", value == 12||value==13||value==14||value==15||value==16||value==17||value==18||value==19||value==20||value==21||value==22||value==23||value==24||value==25||value==26||value==27);
ShowOrHideEx("xfield_holder_gc", value == 12||value==13||value==14||value==15||value==16||value==17||value==18||value==19||value==20||value==21||value==22||value==23||value==24||value==25||value==26||value==27);
ShowOrHideEx("xfield_holder_space", value == 12||value==13||value==14||value==15||value==16||value==17||value==18||value==19||value==20||value==21||value==22||value==23||value==24||value==25||value==26||value==27);
}  }
</script>
<div id="xfield_holder_image" class="form-group" uid="essential" >
  <label class="control-label col-md-2">Изображение:</label>
  <div class="col-md-10">
     <input type="text" style="width:99%;max-width:437px;" name="xfield[image]" id="xf_image" value="/templates/wsrf/images/none.jpg" rel="essential" />&nbsp;&nbsp;<span class="note large"> <i class="icon-warning-sign"></i> обязательно</span>
  </div>
</div><div id="xfield_holder_link" class="form-group" uid="essential" >
  <label class="control-label col-md-2">Скачать файл:</label>
  <div class="col-md-10">
     <input type="text" style="width:99%;max-width:437px;" name="xfield[link]" id="xf_link" value="" rel="essential" />&nbsp;&nbsp;<span class="note large"> <i class="icon-warning-sign"></i> обязательно</span>
  </div>
</div><div id="xfield_holder_date" class="form-group" uid="essential" >
  <label class="control-label col-md-2">Дата выхода:</label>
  <div class="col-md-10">
     <input type="text" style="width:99%;max-width:437px;" name="xfield[date]" id="xf_date" value="" rel="essential" />&nbsp;&nbsp;<span class="note large"> <i class="icon-warning-sign"></i> обязательно</span>
  </div>
</div><div id="xfield_holder_creator" class="form-group" uid="essential" >
  <label class="control-label col-md-2">Разработчик:</label>
  <div class="col-md-10">
     <input type="text" style="width:99%;max-width:437px;" name="xfield[creator]" id="xf_creator" value="" rel="essential" />&nbsp;&nbsp;<span class="note large"> <i class="icon-warning-sign"></i> обязательно</span>
  </div>
</div><div id="xfield_holder_language" class="form-group" uid="essential" >
  <label class="control-label col-md-2">Язык:</label>
  <div class="col-md-10">
     <input type="text" style="width:99%;max-width:437px;" name="xfield[language]" id="xf_language" value="" rel="essential" />&nbsp;&nbsp;<span class="note large"> <i class="icon-warning-sign"></i> обязательно</span>
  </div>
</div><div id="xfield_holder_crack" class="form-group" uid="essential" >
  <label class="control-label col-md-2">Лекарство:</label>
  <div class="col-md-10">
     <input type="text" style="width:99%;max-width:437px;" name="xfield[crack]" id="xf_crack" value="" rel="essential" />&nbsp;&nbsp;<span class="note large"> <i class="icon-warning-sign"></i> обязательно</span>
  </div>
</div><div id="xfield_holder_os" class="form-group" uid="essential" >
  <label class="control-label col-md-2">Операционная система:</label>
  <div class="col-md-10">
     <input type="text" style="width:99%;max-width:437px;" name="xfield[os]" id="xf_os" value="" rel="essential" />&nbsp;&nbsp;<span class="note large"> <i class="icon-warning-sign"></i> обязательно</span>
  </div>
</div><div id="xfield_holder_cpuram" class="form-group" uid="essential" >
  <label class="control-label col-md-2">CPU и RAM:</label>
  <div class="col-md-10">
     <input type="text" style="width:99%;max-width:437px;" name="xfield[cpuram]" id="xf_cpuram" value="" rel="essential" />&nbsp;&nbsp;<span class="note large"> <i class="icon-warning-sign"></i> обязательно</span>
  </div>
</div><div id="xfield_holder_gc" class="form-group" uid="essential" >
  <label class="control-label col-md-2">Видеокарта:</label>
  <div class="col-md-10">
     <input type="text" style="width:99%;max-width:437px;" name="xfield[gc]" id="xf_gc" value="" rel="essential" />&nbsp;&nbsp;<span class="note large"> <i class="icon-warning-sign"></i> обязательно</span>
  </div>
</div><div id="xfield_holder_space" class="form-group" uid="essential" >
  <label class="control-label col-md-2">Место на диске:</label>
  <div class="col-md-10">
     <input type="text" style="width:99%;max-width:437px;" name="xfield[space]" id="xf_space" value="" rel="essential" />&nbsp;&nbsp;<span class="note large"> <i class="icon-warning-sign"></i> обязательно</span>
  </div>
</div>
<script type="text/javascript">
<!--
    onCategoryChange($('#category'));
// -->
</script>

 Скриншоты