• Автор:

    Flesha
  • Добавлено:

    янв 06, 2016
  • Комментариев:

    1
  • Просмотров:

    754

Хак Раздельные доп поля для категорий в addnews

Хак Раздельные доп поля для категорий в addnews

Пример, как разделить доп поля категорий в 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>


Автор: Georka
Версия DLE: 10.6
Вернуться

Комментарии:


  1. ravchik → 15 января 2016 15:57
    Разве по умолчанию не так в ДЛЕ? Т.е. допполя появляются ТОЛЬКО после выбора категории. И появляются ТОЛЬКО приписанные к этой категории допполя...
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.