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

Тема в разделе "DLE", создана пользователем GLuRE, 5 фев 2009.

Информация :
Актуальная версия DataLife Engine 12.0
( Final Release v.12.0 | Скачать DataLife Engine | Скачать 12.0 demo )
Нужно ли обновляться | Как обновиться | Изменения в шаблонах
> Нет русских символов <
[Приватная тема DLE (Все подробности в ЛС к модератору раздела)]

Версии 11.3 и ниже - уязвимы!

Локализации | F.A.Q. | Внешний вид
Правила раздела | Правила форума
Обсуждение хайда карается баном!
В каждом сообщении указывайте версию DLE, которого они касаются!
Статус темы:
Закрыта.
Модераторы: killoff
  1. GLuRE

    GLuRE Постоялец

    Заблокирован
    Регистр.:
    14 мар 2007
    Сообщения:
    65
    Симпатии:
    38
    Собственно, хотелось бы изменить выбор категории при создании новости на сайте и в админ-панеле (если на сайте нельзя, то только в админке) в таком порядке.
    Выбираешь категорию. Если есть подкатегория, она выходит в новом поле (что-то типа tree-menu), если же есть у этой подкатегории ещё подкатегоррия(и), тогда даётся выбор выбрать и там, ну и т.д.
    Только нужно, чтобы это выбиралось по типу
    [​IMG]
     
  2. dm_mb

    dm_mb

    Регистр.:
    6 июн 2006
    Сообщения:
    610
    Симпатии:
    122
    легко.

    js в помошь. создаешь несколько списков и оперируешь ими.
     
  3. megafreeman

    megafreeman Читатель

    Заблокирован
    Регистр.:
    8 июн 2008
    Сообщения:
    164
    Симпатии:
    137
    Я не специалист в скриптах...Но я нашел подобный 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. GLuRE

    GLuRE Постоялец

    Заблокирован
    Регистр.:
    14 мар 2007
    Сообщения:
    65
    Симпатии:
    38
    Хех, это круто всё конечно, но мне нужен готовый модуль, т.к. сам я в php - 0 :(
     
  5. dm_mb

    dm_mb

    Регистр.:
    6 июн 2006
    Сообщения:
    610
    Симпатии:
    122
    это я в php ноль. :)

    а тут чистый html

    создаешь несколько списков. категории подкатегории и через выше данный js их выбираешь. только значения поменять.
     
  6. FL@SH

    FL@SH Читатель

    Заблокирован
    Регистр.:
    20 июл 2008
    Сообщения:
    193
    Симпатии:
    25
    От вы люди простые :) Сделать то выборку на HTML можно, втемболее уже предоставлен более-мение подходящий js, но почемуто никто не подумало том, что значения полей отсылаются скрипту, который должен их обработать.. Тут уже чистым HTML + JS необойтись :confused: Это целое дело, создавать новые поля в таблице dle_post, проверять введённые значения, при выводе новости обрабатывать данных из базы... Вобщем мороки прилично...
     
  7. GLuRE

    GLuRE Постоялец

    Заблокирован
    Регистр.:
    14 мар 2007
    Сообщения:
    65
    Симпатии:
    38
    Тогда пойдём следущим ходом. Сколько будет стоить создание подобного скрипта, который я хочу?
     
  8. dm_mb

    dm_mb

    Регистр.:
    6 июн 2006
    Сообщения:
    610
    Симпатии:
    122
    ну-ну. напишите модуль :))


    убери {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. GLuRE

    GLuRE Постоялец

    Заблокирован
    Регистр.:
    14 мар 2007
    Сообщения:
    65
    Симпатии:
    38
    Честно - нет :) Если напишешь пример хотябы с 2-3мя категориями, подкатегориями и под-подкатегориями, тогда ещё может додумаюсь.

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

    dm_mb

    Регистр.:
    6 июн 2006
    Сообщения:
    610
    Симпатии:
    122
    на автомате - заказывай мод. здесь именно тот случай когда быстрее и проще сделать руками
     
Статус темы:
Закрыта.