0 Пользователей и 1 Гость просматривают эту тему.
  • 46 Ответов
  • 12975 Просмотров
*

srg

  • Захожу иногда
  • 209
  • 41 / 1
Добрый день, перекопал кучу тем, но требуемого не нашел, задачка в следующем:
как сделать более наглядный выбор категории при добавлении нового объявления? А то в одном раскрывающемся списке может быть 40-50-100 категорий для добавления. Т.е. сделать два раскрывающихся списка (второй формируется как под категории выбранной категории в первом списке). На  скриншоте, например, в списке "Аренда >> Квартиры", а нужно сделать первый список, выбор "Аренда", после появляется второй список с выбором "Квартиры".

[вложение удалено Администратором]
« Последнее редактирование: 06.11.2012, 16:38:55 от smart »
*

srg

  • Захожу иногда
  • 209
  • 41 / 1
Класс. А это для какой версии 2.6 или 2.5.? Выложите пожалуйста. Не раз поднималась эта проблема.

ADS_2.6.1 Связные поля выбора категории и под категории.
Подчеркиваю, у меня по задаче только родительские категории и под категории, если у Вас 3-4-5 и т. д. вложенные под категории нужно вводить еще <select>`ы и модифицировать скрипт динамического селектбокса.

Изменяем шаблон добавления объявления:
в файле \components\com_adsmanager\views\edit\tmpl\default.php функция function updateFields() примерно 208 строка, между, ну например <!-- titel --> и  <!-- form --> вставляем скрипт

Код
  <!--/*my script*/-->
  <script>
  function dynamicSelect(id1, id2) {

// Сперва необходимо проверить поддержку W3C DOM в браузере

if (document.getElementById && document.getElementsByTagName) {

// Определение переменных, ссылающихся на списки

var sel1 = document.getElementById(id1);
var sel2 = document.getElementById(id2);

// Клонирование динамического списка

var clone = sel2.cloneNode(true);

// Определение переменных для клонированных элементов списка

var clonedOptions = clone.getElementsByTagName("option");

// Вызов функции собирающей вызываемый список

refreshDynamicSelectOptions(sel1, sel2, clonedOptions);

// При изменении выбранного элемента в первом списке:
// вызов функции пересобирающей вызываемый список

sel1.onchange = function() {
refreshDynamicSelectOptions(sel1, sel2, clonedOptions);
}
}
}

// Функция для сборки динамического списка

function refreshDynamicSelectOptions(sel1, sel2, clonedOptions) {

// Удаление всех элементов динамического списка

while (sel2.options.length) {
sel2.remove(0);
}
var pattern1 = /( |^)(select)( |$)/;
var pattern2 = new RegExp("( |^)(" + sel1.options[sel1.selectedIndex].value + ")( |$)");

// Перебор клонированных элементов списка

for (var i = 0; i < clonedOptions.length; i++) {

// Если название класса клонированного option эквивалентно "select"
// либо эквивалентно значению option первого списка

if (clonedOptions[i].className.match(pattern1) ||
clonedOptions[i].className.match(pattern2)) {

// его нужно клонировать в динамически создаваемый список

sel2.appendChild(clonedOptions[i].cloneNode(true));
}
}
}

// Вызов скрипта при загрузке страницы

window.onload = function() {
dynamicSelect("parentcats", "subcats");
}
  </script>
  <!--/*end my script*/-->

идем в файл \components\com_adsmanager\views\edit\view.html.php и меняем функции (не забывайте старые версии файлов сохранить, что бы откатиться можно было)

Код
	function selectCategories($id, $level, $children,&$catid,$root_allowed,$link,$current_cat_only =0) {
if (@$children[$id]) {
foreach ($children[$id] as $row) {
if (($root_allowed == 1)||(!@$children[$row->id])) {
if ($current_cat_only == 0)
{?>
<option class="<?php echo 'cat'.$row->parent;?>" value="<?php echo JRoute::_("$link&catid=".$row->id); ?>" <?php if ($row->id == $catid) { echo "selected='selected'"; } ?>>
<?php echo $level.$row->name; ?>
</option>
<?php
}
else if ($row->id == $catid)
{
echo $level.$row->name;
}
}
$this->selectCategories($row->id, /*убрано что бы не дублировать родительские категории $level.$row->name." >> "*/"", $children,$catid,$root_allowed,$link,$current_cat_only);
}
}
}

function displaySingleCatChooser($ad_id,$conf,$option,$cats,$catid,$itemid)
{

if (($ad_id != "")&&
  file_exists( JPATH_BASE . "/components/com_paidsystem/api.paidsystem.php"))
{
$display_current_cat_only = 1;
$this->selectCategories(0,"",$cats,$catid,$conf->root_allowed,""/*$link*/,$display_current_cat_only);
}
else
{
?>
<script language="JavaScript" type="text/JavaScript">
<!--
function jumpmenu(target,obj,restore){
  eval(target+".location='"+obj.options[obj.selectedIndex].value+"'");
  obj.options[obj.selectedIndex].innerHTML="<?php echo JText::_('ADSMANAGER_WAIT');?>";
}
//-->
</script>

<?php
/*my*/
$parcat=-1;
if ($catid <> 0){
$keys=array_keys($cats);
$count = count($keys);
for ($i = 0; $i < $count; $i++) {
foreach ($cats[$keys[$i]] as $row){
if ($row->id==$catid) $parcat=$row->parent;
}
}

}
?>
<select name="ParentCats" id="parentcats">
<?php
echo "<option class='select' value='select' selected=selected>".JText::_('ADSMANAGER_SELECT_CATEGORY')."</option>";
foreach ($cats[0] as $row) {
$selected='';
if ($row->id == $parcat) $selected= "selected='selected'";
echo '<option value="cat'.$row->id.'" '.$selected.'>'.$row->name.'</option>';
}
?>
  </select>

<select id='subcats' class='adsmanager_required' name='category_choose' onchange="jumpmenu('parent',this)">
<?php

if ((@$ad_id)&&($ad_id != ""))
$link = "index.php?option=com_adsmanager&Itemid=$itemid&task=write&id=$ad_id";
else
$link = "index.php?option=com_adsmanager&Itemid=$itemid&task=write";
/*if ($catid == 0)*/ /* не нужно т.к. при смене род.категории требуется повторно выбрать и под категорию*/
echo "<option class='select' value='select' selected=selected>".JText::_('ADSMANAGER_SELECT_CATEGORY')."</option>";
if (function_exists("selectPaidCategories"))
selectPaidCategories(0,"",$cats,$catid,$conf->root_allowed,$link,0);
else
$this->selectCategories(0,"",$cats,$catid,$conf->root_allowed,$link,0);
?>
</select>
<?php
}
}

Вроде все! Спасибо автору статьи http://www.my-article.net/get/html/select/динамические-выпадающие-списки , тут можно подробнее почитать о технике
*

Алекс82

  • Захожу иногда
  • 120
  • 4 / 0
  • Совсем новичок
ADS_2.6.1 Связные поля выбора категории и под категории.
Подчеркиваю, у меня по задаче только родительские категории и под категории, если у Вас 3-4-5 и т. д. вложенные под категории нужно вводить еще <select>`ы и модифицировать скрипт динамического селектбокса.

Изменяем шаблон добавления объявления:
в файле \components\com_adsmanager\views\edit\tmpl\default.php функция function updateFields() примерно 208 строка, между, ну например <!-- titel --> и  <!-- form --> вставляем скрипт

Код
  <!--/*my script*/-->
  <script>
  function dynamicSelect(id1, id2) {



Вроде все! Спасибо автору статьи http://www.my-article.net/get/html/select/динамические-выпадающие-списки , тут можно подробнее почитать о технике
[/quote]





.

Дополнительный пункт появился, но подкатегории почему то не отображаются. Это может быть из-за тог, что у меня категории 4й вложенности?

Посмотрите пожалуйста


Дополнительный пункт появился, но подкатегории почему то не отображаются. Это может быть из-за тог, что у меня категории 4й вложенности?

Посмотрите пожалуйста


[вложение удалено Администратором]
« Последнее редактирование: 02.08.2011, 23:39:30 от Алекс82 »
*

mbgr

  • Захожу иногда
  • 88
  • 11 / 0
гляньте что не так

[вложение удалено Администратором]
« Последнее редактирование: 03.08.2011, 01:28:43 от mbgr »
*

srg

  • Захожу иногда
  • 209
  • 41 / 1
гляньте что не так
Хммм... посмотрел, заменил на Ваши файлы у себя все работает...
На всякий случай спрошу, что за браузер?
структура категорий?
должно быть так:
род.катег -|- под катег.
               +- под катег.
а так работать скорее всего не будет:
род.катег -|- под катег. -под катег
               +-  под катег - под катег.
*

srg

  • Захожу иногда
  • 209
  • 41 / 1
Дополнительный пункт появился, но подкатегории почему то не отображаются. Это может быть из-за тог, что у меня категории 4й вложенности?
Посмотрите пожалуйста
да 2 селекта только на 2х уровневый каталог, что бы обрабатывать все N уровней нужно динамически создавать N селектов, что под силу AJAX технологии, я пока такое не делал, но тут можно почитать разобраться http://pyha.ru/forum/topic/86.0
*

Алекс82

  • Захожу иногда
  • 120
  • 4 / 0
  • Совсем новичок
да 2 селекта только на 2х уровневый каталог, что бы обрабатывать все N уровней нужно динамически создавать N селектов, что под силу AJAX технологии, я пока такое не делал, но тут можно почитать разобраться http://pyha.ru/forum/topic/86.0

Спасибо за ответ. будем ждать пока кто-нибудь не выложит. Я в PHP не бум бум.
*

mbgr

  • Захожу иногда
  • 88
  • 11 / 0
Хммм... посмотрел, заменил на Ваши файлы у себя все работает...
На всякий случай спрошу, что за браузер?
структура категорий?
должно быть так:
род.катег -|- под катег.
               +- под катег.
а так работать скорее всего не будет:
род.катег -|- под катег. -под катег
               +-  под катег - под катег.
опера-браузер
род.катег -|- под катег.
               +- под катег. ---вот так у меня
и не пашет нормально
http://real.adresnmsk.ru/
_____________________________
странно а мозиле все нормально, почему?
« Последнее редактирование: 03.08.2011, 15:00:39 от mbgr »
*

srg

  • Захожу иногда
  • 209
  • 41 / 1
http://real.adresnmsk.ru/
_____________________________
странно а мозиле все нормально, почему?

Все работает, выбираю род.категорию и фильтруется 7 под категорий у вас всего их 35.
Если у вас не фильтруются под категории, а вылезают все 35 во втором селекте, вероятно в браузере отключены скрипты...т.к. у меня в опере работает в мазиле работает.
*

Алекс82

  • Захожу иногда
  • 120
  • 4 / 0
  • Совсем новичок

http://real.adresnmsk.ru/
_____________________________
странно а мозиле все нормально, почему?
У меня в опере тоже нормально отображается
*

rusdark

  • Захожу иногда
  • 130
  • 0 / 0
  • RusDark
...вероятно в браузере отключены скрипты...т.к. у меня в опере работает в мазиле работает.

Огого! Я тут общаясь с коллегами (в недвижимости), товарищами, друзьями понял, что многие отключают скрипты, ставят всякие дополнения от скриптов и настраивают высокий уровень безопасности в браузерах. Как же тогда будет отображаться это поиск? )
А уж если речь идет о крупной компании, так  там админы настраивают сеть так, что люди часто не видят даже элементарных вещей.
Недавно одна барышня выносила мозг по телефону на предмет отсутствия на сайте фотографий коттеджного поселка.
Фотки там есть и очень давно! Вот, бывает, что люди с такими настройками сёрфят! )))
*

Алекс82

  • Захожу иногда
  • 120
  • 4 / 0
  • Совсем новичок
Кто-нибудь реализовал выбор категорий с вложенностью более 2-х.? ?
« Последнее редактирование: 12.08.2011, 02:59:45 от Алекс82 »
*

Алекс82

  • Захожу иногда
  • 120
  • 4 / 0
  • Совсем новичок
*

homelux

  • Захожу иногда
  • 190
  • 1 / 1
классно, srg можешь сделать такое для расширенного поиска и модуля поиска?
*

apelsin

  • Захожу иногда
  • 129
  • 0 / 1
Подкатегории выбираются, но не отображается (написано выберите категорию) в ie8, но объявление добавляется правильно. Как нибудь можно исправить?
*

homelux

  • Захожу иногда
  • 190
  • 1 / 1
правда есть такая проблема
*

Высотник

  • Осваиваюсь на форуме
  • 48
  • 3 / 0
как сделать три взаимосвязанных селекта  ?
*

srg

  • Захожу иногда
  • 209
  • 41 / 1
как сделать три взаимосвязанных селекта  ?
в 1ом селекте, выводим из базы 1 уровень категорий, после выбора делаем запрос к базе с фильтром по 2ому уровню категорий и так рекурсия на N вложенность, т.е. запросы к базе непосредственно после выбора, а это под силу технологии AJAX, нужно написать обработчик, или самим или заказываете на фрилансе, навряд ли в ближайших аптейтах АДС это появиться.
*

Nervniy

  • Новичок
  • 4
  • 1 / 0
Подскажите где подправить,чтобы если нет подкатегорий,то второй селект не отображал,а сразу показывал дальше поля для заполнения?
*

runis1

  • Новичок
  • 5
  • 0 / 0
Подкатегории выбираются, но не отображается (написано выберите категорию) в ie8, но объявление добавляется правильно. Как нибудь можно исправить?
проблема есть в IE не работает!
*

sav

  • Осваиваюсь на форуме
  • 20
  • 0 / 0
кто знает что за хрень? у меня раньше выбор категории был выпадающим списком, а в один прекрасный момент стал списком с мультивыбором. Кто-нибудь знает как сделать назад? Или подскажите файл хотя бы который отвечает за отображение выбора категории при подаче объявления.
*

Alex89

  • Давно я тут
  • 555
  • 198 / 1
  • Joomlaman :)
Цитировать
кто знает что за хрень?
Вы наверно в админке поменяли значение (Конфигурация->Общие->Количество категорий). Значение должно быть равным единице, если больше, то появляется мультивыбор
Увеличить посещаемость сайта помогут здесь - http://tinyurl.com/kpaprwy
Если помог, ткните "крестик" в репу!
*

lovivolnu

  • Захожу иногда
  • 323
  • 8 / 0
Спасибо всё работает!
Но возник такой вопрос?Первая колонка категорий отличается по цвету от всех остальных.Где находится файл отвечающий за её цвет?никак не могу найти
*

lionman

  • Осваиваюсь на форуме
  • 40
  • 0 / 0
Вопрос такой. Можно тоже самое сделать в расширенном поиске?
*

lionman

  • Осваиваюсь на форуме
  • 40
  • 0 / 0
ЛЛЛЮДИ! Что никто не делал для расширенного поска. Или надо тоже самое почти делать?
*

HoBu4oK1982

  • Новичок
  • 1
  • 0 / 0
Люди добрые! ПОМОГИТЕ сделать 3-х уровневый список категорий и подкатегорий!
*

erick29

  • Захожу иногда
  • 74
  • 0 / 0
поддерживаю насчёт поиска!
*

lovivolnu

  • Захожу иногда
  • 323
  • 8 / 0
кто знает решение для 2.7?
представленное здесь решение для версии 2.7 работает не совсем корректно
*

shketok

  • Осваиваюсь на форуме
  • 36
  • 0 / 0
кто-нибудь в курсе как для поиска сделать?
*

leprikon_s

  • Захожу иногда
  • 60
  • 4 / 0
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Слетают категории объявления

Автор guardnext

Ответов: 1
Просмотров: 431
Последний ответ 09.07.2019, 10:10:59
от guardnext
Изменить категории в AdsManager 3.1.5

Автор Doc

Ответов: 2
Просмотров: 6672
Последний ответ 17.03.2019, 21:17:30
от Doc
Как сделать сортировку объявдений в AdsManager

Автор Olegarh

Ответов: 9
Просмотров: 14779
Последний ответ 03.06.2018, 22:59:57
от Sabotage
AdsManager - как сделать несколько адресов?

Автор Ksenia2009

Ответов: 0
Просмотров: 10754
Последний ответ 21.04.2018, 15:13:44
от Ksenia2009
Привязать модуль mod_adsmanager_ads к категории

Автор efimov777

Ответов: 2
Просмотров: 15256
Последний ответ 01.02.2018, 14:01:16
от efimov777