• DONATE to NULLED!
    Форуму и его команде можно помочь, мотивировать модераторов разделов.
    Помогите модератору этого раздела killoff лично.

Помощь выбор категории в Добавить Новость

Статус
В этой теме нельзя размещать новые ответы.

GLuRE

Постоялец
Заблокирован
Регистрация
14 Мар 2007
Сообщения
65
Реакции
38
  • Автор темы
  • Заблокирован
  • #1
Собственно, хотелось бы изменить выбор категории при создании новости на сайте и в админ-панеле (если на сайте нельзя, то только в админке) в таком порядке.
Выбираешь категорию. Если есть подкатегория, она выходит в новом поле (что-то типа tree-menu), если же есть у этой подкатегории ещё подкатегоррия(и), тогда даётся выбор выбрать и там, ну и т.д.
Только нужно, чтобы это выбиралось по типу
categoryxu4.jpg
 
легко.

js в помошь. создаешь несколько списков и оперируешь ими.
 
  • Заблокирован
  • #3
Я не специалист в скриптах...Но я нашел подобный java скрипт.
Описание: Данный скрипт при правильной настройке изменяет второй combobox относительно первого. (Показано на примере городов)

Вот source страницы ...

Код:
<html>
<head>

<title>Тест</title>

<script language="JavaScript">

function cGorod(strana_in, gorod_in)
 {
    this.gorod = gorod_in;
    this.strana = strana_in;
}

Strani = new Array();
Strani["1"] = "Германия";
Strani["2"] = "Украина";
Strani["3"] = "Франция";

Goroda = new Array();
Goroda["Берлин"] = new cGorod(1,'Берлин');
Goroda["Гамбург"] = new cGorod(1,'Гамбург');
Goroda["Бонн"] = new cGorod(1,'Бонн');
Goroda["Киев"] = new cGorod(2,'Киев');
Goroda["Львов"] = new cGorod(2,'Львов');
Goroda["Харьков"] = new cGorod(2,'Харьков');
Goroda["Париж"] = new cGorod(3,'Париж');
Goroda["Марсель"] = new cGorod(3,'Марсель');
Goroda["Бордо"] = new cGorod(3,'Бордо');

function addgorod(key)
{
	document.searchfrm.gorod.length++;
	document.searchfrm.gorod[document.searchfrm.gorod.length-1].text = gorod[key];
	document.searchfrm.gorod[document.searchfrm.gorod.length-1].value = key;
}


function chkkeyword(words,word) {
 for(a in words) {
  if(words[a]==word)
			{
			return true;
			}
 }
 return false;
}

function checkall(strana,gorod,i)
	{
	 if (strana=="")
	  {
		if(chkkeyword(Goroda[i].gorod,gorod) || gorod==999)
		return true;
		}// end if

		else {
	 if (Goroda[i].strana==strana || strana==999)
		if(Goroda[i].gorod==gorod || gorod==999)
			return true;
		}//end else
	 return false;
	}

function creategorod(strana,gorod)
{
	document.searchfrm.gorod.length=2;
	document.searchfrm.gorod[0].value = 999;
	document.searchfrm.gorod[0].text  = "все";
	k=1;
	for (i in Goroda)
	 {
	  if (checkall(strana,999,i))
	   {
		document.searchfrm.gorod[k].value=i;
		document.searchfrm.gorod[k].text=Goroda[i].gorod;
		document.searchfrm.gorod.length=k+2;
		k++;
	   }
	 }
	 document.searchfrm.gorod.length=k;
}

function createstrana(strana,gorod)
{
	document.searchfrm.strana.length=2;
	document.searchfrm.strana[0].value = 999;
	document.searchfrm.strana[0].text  = "все";
	k=1;
	for (i in Goroda)
	 {

	 if (checkall(999,gorod,i))
	   {if (document.searchfrm.strana[k-1].text!=Strani[Goroda[i].strana])
	     {
		document.searchfrm.strana[k].value=Goroda[i].strana;
		document.searchfrm.strana[k].text=Strani[Goroda[i].strana];
		document.searchfrm.strana.length=k+2;
		k++;
		}
	      } //end if

	  }//end for

document.searchfrm.strana.length=k;
}

function reselect(field,check)
{
	for (i=0;i<=field.length-1;i++)
	 {
		if (field[i].value==check)
			{
		field.selectedIndex = i;
		}
	}
}

function change(what)
{
	var selectedStrana = document.searchfrm.strana[document.searchfrm.strana.selectedIndex].value;
	/*tmp = document.searchfrm.gorod.selectedIndex;
	if(tmp >= 0)
		selectedGorod = document.searchfrm.gorod[tmp].value;
	else selectedGorod = 0;*/
	var selectedGorod =  document.searchfrm.gorod[document.searchfrm.gorod.selectedIndex].value;

	createstrana(selectedStrana,selectedGorod);
	creategorod(selectedStrana,selectedGorod);

	reselect (document.searchfrm.strana,selectedStrana);
	reselect (document.searchfrm.gorod,selectedGorod);

}

function makelist()
{
	document.searchfrm.strana.length = 1;
	document.searchfrm.strana[0].value = 999;
	document.searchfrm.strana[0].text = "все";

	for(i in Strani)
	{
		document.searchfrm.strana.length++;
		l = document.searchfrm.strana.length;
		document.searchfrm.strana[l-1].value = i;
		document.searchfrm.strana[l-1].text = Strani[i];
	}
}

</script>

</head>

<br>

<form method=GET action="search.cgi" name="searchfrm">
<b>Страна:</b>
<BR>
<select style="width: 150" name=strana onChange="change()" size="1">
<option value="999">** Ошибка **</option>
<option value=*></option>
</select>
<BR>
<b>Город:</b><BR>
<select style="width: 150" name=gorod onChange="change()">
<option value="999">** Ошибка **</option>
<option value=*></option>
</select>

</form>

<script language="JavaScript">
<!--
makelist();
change();
//-->
</script>

</body>

</html>
 
  • Автор темы
  • Заблокирован
  • #4
Хех, это круто всё конечно, но мне нужен готовый модуль, т.к. сам я в php - 0 :(
 
это я в php ноль. :)

а тут чистый html

создаешь несколько списков. категории подкатегории и через выше данный js их выбираешь. только значения поменять.
 
  • Заблокирован
  • #6
От вы люди простые :) Сделать то выборку на HTML можно, втемболее уже предоставлен более-мение подходящий js, но почемуто никто не подумало том, что значения полей отсылаются скрипту, который должен их обработать.. Тут уже чистым HTML + JS необойтись :confused: Это целое дело, создавать новые поля в таблице dle_post, проверять введённые значения, при выводе новости обрабатывать данных из базы... Вобщем мороки прилично...
 
  • Автор темы
  • Заблокирован
  • #7
Тогда пойдём следущим ходом. Сколько будет стоить создание подобного скрипта, который я хочу?
 
ну-ну. напишите модуль :))


убери {category} при добавлении новости и замени

<select name="catlist[]" id="category" onchange="onCategoryChange(this.value)">
<option value="0"></option>
<option value="21"> На продажу</option>
<option value="22"> Услуги</option>
<option value="23"> Недвижимость</option>
<option value="24"> Работа</option>
<option value="25"> Знакомства</option>
</select>

надеюсь дальше ума хватит самостоятельно вписать значения?
 
  • Автор темы
  • Заблокирован
  • #9
Честно - нет :) Если напишешь пример хотябы с 2-3мя категориями, подкатегориями и под-подкатегориями, тогда ещё может додумаюсь.

Ещё 1 вопрос. Я так понял, что придётся постоянно добавлять в файлик в ручную категории. На автомате конечно этого не получится сделать данным способом. А мне нужно именно на автомате :)
 
на автомате - заказывай мод. здесь именно тот случай когда быстрее и проще сделать руками
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху