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

Erkin

  • Новичок
  • 1
  • 0 / 0
Привет всем! А как сделать чтоб второй категории не было видно пока не выбириш пунк из первой категории?
« Последнее редактирование: 04.11.2012, 17:56:11 от Erkin »
*

max_1985

  • Давно я тут
  • 611
  • 56 / 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) {

// Сперва необходимо проверить поддержку 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/динамические-выпадающие-списки , тут можно подробнее почитать о технике
сделал все как написано. все получилось, спасибо!
но есть небольшая проблема в IE9 выбрать категорию можно, а под категории вообще не подгружаются
в IE8 IE9 выбрать категорию можно, выбрать под категорию можно, но под категория после загрузки страницы исчезает.
Как исправить в ads 2.6.5
*

webday

  • Осваиваюсь на форуме
  • 42
  • 0 / 0
с вложенностью более 2-х. категорий получилось у кого-то сделать? ?
« Последнее редактирование: 09.11.2012, 22:06:00 от webday »
*

seva3401

  • Осваиваюсь на форуме
  • 34
  • 1 / 1
сделал все как написано. все получилось, спасибо!
но есть небольшая проблема в IE9 выбрать категорию можно, а под категории вообще не подгружаются
в IE8 IE9 выбрать категорию можно, выбрать под категорию можно, но под категория после загрузки страницы исчезает.
Как исправить в ads 2.6.5

а у меня вот проблема почему то...сделал всё как указано, но при добавлении объявления никаких изменений не произошло. обновлял страницу - толку нет. всё так же. сайт telefon.tomsk.ru
помогите, кто знает как решить, пожалуйста, очень бы хотелось заменить стандартный вид добавления...заранее спасибо!
*

max_1985

  • Давно я тут
  • 611
  • 56 / 0
а у меня вот проблема почему то...сделал всё как указано, но при добавлении объявления никаких изменений не произошло. обновлял страницу - толку нет. всё так же. сайт telefon.tomsk.ru
помогите, кто знает как решить, пожалуйста, очень бы хотелось заменить стандартный вид добавления...заранее спасибо!
В админке Количество категорий должно равняться 1
*

seva3401

  • Осваиваюсь на форуме
  • 34
  • 1 / 1
В админке Количество категорий должно равняться 1
а остальное как? т.е. примерно так:?

Категория 1
 - категория 01
 - - подкатегория 01
 - - подкатегория 02
 - - подкатегория 03
 - категория 02
 - - подкатегория 04
 - - подкатегория 05
 - - подкатегория 06
 - категория 03
 - - подкатегория 07
 - - подкатегория 08
 - - подкатегория 09
 - категория 04

а не так как у меня сейчас на сайте:
Категория 1
- подкатегория 1
- подкатегория 2
Категория 2
- подкатегория 3
- подкатегория 4

ага?
*

lovivolnu

  • Захожу иногда
  • 323
  • 8 / 0
делал для адс 2.7
вроде всё сделал правильно.категории и под категории в разных селекторах, но пишет вот такую матюхню
"Warning: Missing argument 6 for AdsmanagerViewEdit::displaySingleCatChooser(), called in ........components/com_adsmanager/views/edit/tmpl/default.php on line 334 and defined in ........components/com_adsmanager/views/edit/view.html.php on line 308
*

GlooM

  • Давно я тут
  • 558
  • 91 / 0
  • AdsManager
lovivolnu, просто в function displaySingleCatChooser($ad_id,$conf,$option,$cats,$catid,$Itemid) уберите $Itemid (и запятую перед ней), ну и в $link тоже сотрите все упоминания )))
*

srg

  • Захожу иногда
  • 209
  • 41 / 1
делал для адс 2.7
вроде всё сделал правильно.категории и под категории в разных селекторах, но пишет вот такую матюхню
"Warning: Missing argument 6 for AdsmanagerViewEdit::displaySingleCatChooser(), called in ........components/com_adsmanager/views/edit/tmpl/default.php on line 334 and defined in ........components/com_adsmanager/views/edit/view.html.php on line 308

в ADS 2.7 сделали (или начали делать) последовательный вывод селектов для вложеных категорий при добавлении объявления, правда у них работает только под ФФ, т.к. лишние option они скрывают как display:hidden, а оно не работает кроме как для ФФ. Пришлось поковырять, что бы для всех браузеров работало.

[вложение удалено Администратором]
*

max_1985

  • Давно я тут
  • 611
  • 56 / 0
Пришлось поковырять, что бы для всех браузеров работало.
Расскажите что делать?
*

srg

  • Захожу иногда
  • 209
  • 41 / 1
Расскажите что делать?
работаем с components\com_adsmanager\views\edit\view.html.php версия ADS 2,7
Еще раз подчеркну эту функцию, видимо, разработчики только доделывают, по этому сохраните свой файл перед заменой на этот (для отката если что).
Функцию autocomplit уже оценили? она видно в админке включается
if ($conf->autocomplete) {тут вызывается}
а вот функция сплитования категорий по селектам в админке не включается (видимо появиться к следующему релизу в 2,7,5 или 2,8 )
if (@$toto == 1){ тут вызывается} // строка 374 в моем файле
по этому пришлось жестко включать её
if (@$toto == 1 || 1){}
после включения все заработает, НО только в ФФ, другие браузеры не понимают скрытия <option> для селектов, в аттаче файл с доделанным скриптом там <option> удаляются и восстанавливаются, по этому все работает. Тестировалось в IE, Opera, FF, а так же тестировал с деревом категорий в 3-и уровня. НО такой момент, дерево должно быть РОВНЫМ, т.е. если 3 уровня, то в каждой ветке должно быть 3 уровня.
Код
cat1 
   cat11
      cat111
cat2
   cat22

работать не будет т.к. юзер выбрав cat2 затем cat22, и упрется в 3ий селект, а он пустой. Селектов 3 т.к. по подсчету скрипта 3 уровня есть в одной из веток.

cat1
   cat11
      cat111
cat2
   cat22
      cat222
а так работать будет норм
Ну этот нюанс, думаю, сами разработчики устранят потом, мне не нужно, у самого 2 уровня только по всему дереву...

Хак тут http://pozitiv-studio.ru/view.html.zip
*

grinat

  • Захожу иногда
  • 356
  • 34 / 2
Интересно сделано. По моему в таких случаях проще перевести все дерево категорий в json, и затем просто циклично по нему проходиться и создавать ветки с select, по крайней мере я так сделал. В этом случае никаких ограничений нет, и решение 100% кроссбраузерное.
*

vitamax

  • Осваиваюсь на форуме
  • 46
  • 2 / 0
работаем с components\com_adsmanager\views\edit\view.html.php версия ADS 2,7
Еще раз подчеркну эту функцию, видимо, разработчики только доделывают, по этому сохраните свой файл перед заменой на этот (для отката если что).
Функцию autocomplit уже оценили? она видно в админке включается
if ($conf->autocomplete) {тут вызывается}
а вот функция сплитования категорий по селектам в админке не включается (видимо появиться к следующему релизу в 2,7,5 или 2,8 )
if (@$toto == 1){ тут вызывается} // строка 374 в моем файле
по этому пришлось жестко включать её
if (@$toto == 1 || 1){}
после включения все заработает, НО только в ФФ, другие браузеры не понимают скрытия <option> для селектов, в аттаче файл с доделанным скриптом там <option> удаляются и восстанавливаются, по этому все работает. Тестировалось в IE, Opera, FF, а так же тестировал с деревом категорий в 3-и уровня. НО такой момент, дерево должно быть РОВНЫМ, т.е. если 3 уровня, то в каждой ветке должно быть 3 уровня.
Код
cat1 
   cat11
      cat111
cat2
   cat22

работать не будет т.к. юзер выбрав cat2 затем cat22, и упрется в 3ий селект, а он пустой. Селектов 3 т.к. по подсчету скрипта 3 уровня есть в одной из веток.

cat1
   cat11
      cat111
cat2
   cat22
      cat222
а так работать будет норм
Ну этот нюанс, думаю, сами разработчики устранят потом, мне не нужно, у самого 2 уровня только по всему дереву...

Хак тут http://pozitiv-studio.ru/view.html.zip

как всё же решить проблему с разной длиной веток?
*

vitamax

  • Осваиваюсь на форуме
  • 46
  • 2 / 0
может в 2.8 эту проблему решили? кто смотрел уже?
*

vitamax

  • Осваиваюсь на форуме
  • 46
  • 2 / 0
Люди, есть же реализация. Нужно только как-то отловить глубину ветки с категорией. Кто уже сталкивался с такой проблемой?
*

ruslanshvedov91

  • Новичок
  • 7
  • 0 / 0
Спасибо за файл view. Помогло с разбивкой на категории, подкатегории и подподкатегории при создании объявления. Можно ли такое провернуть в кратком поиске? Имею в виду - создать дополнительное поле подкатегорий и подподкатегорий?

В 2.8 эта проблема решена.

К сведению, если у кого такое будет. Установил версию 2.8 (с русским переводом), в которой краткий поиск барахлит: какие бы значения не были выставлены в нём - выдаёт в результате все объявления. Проблему решил установкой другой версии (с иностранным языком, но перевод всё равно есть (лично у меня, от AdsManager 2.7).
« Последнее редактирование: 15.04.2013, 22:33:52 от ruslanshvedov91 »
*

adjuster

  • Давно я тут
  • 786
  • 55 / 2
Спасибо за файл view. Помогло с разбивкой на категории, подкатегории и подподкатегории при создании объявления. Можно ли такое провернуть в кратком поиске? Имею в виду - создать дополнительное поле подкатегорий и подподкатегорий?

В 2.8 эта проблема решена.

К сведению, если у кого такое будет. Установил версию 2.8 (с русским переводом), в которой краткий поиск барахлит: какие бы значения не были выставлены в нём - выдаёт в результате все объявления. Проблему решил установкой другой версии (с иностранным языком, но перевод всё равно есть (лично у меня, от AdsManager 2.7).
Так и есть.
Устанавливать нужно 2.8 с офф сайта.
Перевод здесь присутсвует (ищите темку). Перевод ставится отдельно.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

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

Автор guardnext

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

Автор Doc

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

Автор Olegarh

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

Автор Ksenia2009

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

Автор efimov777

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