Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Шаблоны (TPL) » Как реализовать зависимость доп полей?

Как реализовать зависимость доп полей?


     17.11.2016    Шаблоны (TPL), Хаки    1479

вопрос
В DLE (у меня 11.1) при добавлении новости (неважно от куда), при выборе категории автоматически подгружаются доп-поля которые участвуют в этой категории.
Так сказать: Category => Xfield
Мне нужно реализовать: Xfield => Xfield
Ситуация такова: есть 140 категорий для каждой нужно доп-поле с одинаковым именем но разными значениями.
Можно конечно сделать 140 доп-полей и назначить каждой категории. Но далее туго станет вопрос фильтра по доп-полям.
Как бы мне подгружать значения в зависимости от категории, либо какие другие способы?

Ответа пока нет


5 комментариев

kprod
Юзер

kprod - 17 ноября 2016 13:12 -

Как вариант использовать jquery

karakymv
Юзер

karakymv - 17 ноября 2016 14:05 -

Хорошо, если с помощью jQuery подгружать значения исходя из выбранной категории. Как будет выводится новость? Имею в виду, подгруженные значения будут сохранятся при добавлении? Или движок будет выводить исходные значения доп-поля?
К примеру есть доп-поле типа список (пуст изначально), выбираем категорию "Бабузуке" и jQuery подгрузил списки в пустое поле, выбираем из списка значение и жмякаем добавить новость. Далее заходим на главную и...
... каково значение будет доп-поля? Подгруженное или пусто?

kprod
Юзер

kprod - 17 ноября 2016 14:30 -

Я бы реализовал следующим образом:

Есть доп.поле список с тремя значениями, назовём его папой:
1. Value 1
2. Value 2
3. Value 3


Есть еще одно доп.поле(одна строка), значение которого должно напрямую зависеть от первого поля.
Скрываем это поле установив type="hidden" или просто display: none, назовём его мама.

Создаём еще один список, назовём дочкой(не доп.поле, простой список). При выборе значение у папы, мы помещаем в дочку нужные нам значения. При выборе значения у дочки мы копируем значение и переносим его к маме.

Важно: Обязательно при выборе в списке папы очищайте доп.поле мамы.

karakymv
Юзер

karakymv - 17 ноября 2016 17:13 -

На сколько я понял
Добавим доп-поле, в моем случае название "модель",одна строка, пустое
В addnews добавим просто селект в который и будем подгружать значения в зависимости от категории, а так же строем наше доп поле "модель".
И когда значение в селекте было выбрано, устанавливаем скрытому доп-полю выбранное значение.
И когда кнопка "добавить новость" будет нажата, в бд передаст правильное значение.
Спасибо, попробую чет покрутить. Если что выйдет, поделюсь здесь.

karakymv
Юзер

karakymv - 18 ноября 2016 18:52 -

Значит помудрил немного, получилось что то такое:
<!DOCTYPE HTML>
<html>
<head>
  <meta charset="UTF-8" />
  <meta name="description" content="HTML5 sample" />
  <meta name="keywords" content="keyword1, keyword2" />
  <title>My Page</title>
  <link rel="stylesheet" href="style.css" />
</head>

<body>
<select id="category">
  <option value="6">значение 6</option>
  <option value="7">значение 7</option>
</select>
<select id="selectmodel">
</select>
<input type="text" name="xfield[model]" id="xf_model" value="" rel="essential" data-rel="links" />
</body>
<script src="http://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script>
var arr=[
	{value:6,list: [{text: 'A3'},{text: 'A4'},{text: 'A5'}]},
	{value:7,list: [{text: 'M3'},{text: 'M6'},{text: 'X5'},{text: 'X6'}]},
];

$("#category").change(function() {
selval = $(this).val();
forval = arr[selval - 6].list;
  $("#selectmodel").empty();
  $.each(forval, function(i, val) {
  $("#selectmodel").append("<option value='"+val.text+"'>"+val.text+"</option>");
})});
$("#selectmodel").change(function() {
text = $(this).val();
  $("#xf_model").val(text);
});
</script>
</html>

Только вот значение не совсем записывается в value инпата!
По крайней мере так считает форма, поле у меня обязательное и оно заполняется по скрипту необходимым значением, если глянуть в исходный код (Ctrl+Shift+I) то видно что value инпата остается пустое, хотя на странице оно заполняется отлично.
Кто что может посоветовать?

Нате вам пример сего чуда, логин и пароль (test)

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх