Регистрация
Регистрируясь, вы подтверждаете свое согласие с соглашением об использовании персональных данных.
Восстановление пароля

Добавление товару нескольких категорий

Страницы: 1  |  2  |  3
06.09.2013, 15:01
Руслан Густокашин
Студия Вэлпис

Зарегистрирован:
2012-02-06
Сообщений: 962

Если у вас все нужные подразделы находятся в одном разделе, тогда так:
1. В главном макете дизайна:
Код:
$abrowse_b['prefix'] = "";
$abrowse_b['active'] = "<option value='\".\$data[\$i][Subdivision_ID].\"'>%NAME</option>";
$abrowse_b['unactive'] = "<option value='\".\$data[\$i][Subdivision_ID].\"'>%NAME</option>";
$abrowse_b['divider'] = "";
$abrowse_b['suffix'] = "";
$altsubs_selector=s_browse_sub(123, $abrowse_b);
$GLOBALS['altsubs_selector']=$altsubs_selector;


2. В форме добавления объекта (в начале):
Код:
";
if(count($_POST)) $cursubs=$_POST['altsubstmp'];
else $cursubs=explode(',', $f_AltSubs );
foreach(array_values($cursubs) as $key=>$val)
{
if(intval($val)) $altsubs_selector=str_replace("value='$val'","value='$val' selected",$altsubs_selector);
}

$addForm .="


3. В той же форме, но там, где нужно вывести селектор:
Код:
Выберите, удерживая клавишу ctrl, один или несколько разделов, в которых будет отображаться товар:<br />
<select name='altsubstmp[]' multiple='multiple' size='15'>$altsubs_selector</select>


4. В условии добавления:
Код:
if(!intval(count($_POST['altsubstmp'])))
{
$warnText = "Пожалуйста, выберите хотя бы один раздел каталога, где будет отображаться товар.<br /><br />";
$posting = 0;
}


5. В действии после добавления:
Код:
if(count($_POST[altsubstmp]))
{
$sublist=join(',',$_POST[altsubstmp]);
$db->query("update Message$classID set AltSubs=',$sublist,' where Message_ID=$message limit 1");
}


6. В форме изменения объекта:
Код:
Выберите, удерживая клавишу ctrl, один или несколько разделов, в которых будет отображаться товар:<br />
";
if(!empty($_POST)) $cursubs=$_POST['altsubstmp'];
else $cursubs=explode(',', $f_AltSubs );
if(count($cursubs)) foreach(array_values($cursubs) as $key=>$val)
{
if(intval($val)) $altsubs_selector=str_replace("value='$val'","value='$val'

selected='selected'",$altsubs_selector);
}
echo "<select name='altsubstmp[]' multiple='multiple' size='7'>
$altsubs_selector</select>


7. В условии изменения объекта:
Код:
if(!intval(count($_POST['altsubstmp'])))
{
$warnText = "Пожалуйста, выберите хотя бы один раздел каталога, где будет отображаться товар.<br /><br />";
$posting = 0;
}


8. В действии после изменения объекта:
Код:
if(count($_POST[altsubstmp]))
{
$sublist=join(',',$_POST[altsubstmp]);
$db->query("update Message$classID set AltSubs=',$sublist,' where Message_ID=$message limit 1");
}
06.09.2013, 16:10
e-aston
Евтишин Сергей

Зарегистрирован:
2012-07-02
Сообщений: 5

1 код вставил в макет дизайна (интернет магазин - он вроде главный) а именно в поле "шаблоны вывода навигации", все остальное вроде правильно вставил, при редактировании или добавлении товара появилось окошко (с надписью сверху: "Выберите, удерживая клавишу ctrl, один или несколько разделов, в которых будет отображаться товар:") под строкой куда я прописывал номера разделов, но окошко множественного выбора пустое в нем нет страниц, видимо я что-то не так сделал...
09.09.2013, 08:07
Руслан Густокашин
Студия Вэлпис

Зарегистрирован:
2012-02-06
Сообщений: 962

Проверьте в конце шаблонах вывода навигации, какое значение получилось в переменной после вызова
$altsubs_selector=s_browse_sub(123, $abrowse_b);
Например так:
$altsubs_selector=s_browse_sub(123, $abrowse_b);
echo "[".htmlspecialchars($altsubs_selector)."]";
- и увидите, есть ли что-то между квадратными скобками вверху сайта или нет.
Если нет, значит Вы неправильно указали номер корневого раздела (Вы не забыли исправить 123 на ваш номер раздела, из которого надо брать подразделы?).
09.09.2013, 17:30
e-aston
Евтишин Сергей

Зарегистрирован:
2012-07-02
Сообщений: 5

проверил в скобках появляются подразделы, у меня что-то не получается добавить код "2. В форме добавления объекта (в начале):" я его куда не вставлю что в начало что не в начало у меня при добавлении товара после этого кода просто белый экран, т.е. если добавляю в начало то весь экран пустой.
10.09.2013, 06:08
Руслан Густокашин
Студия Вэлпис

Зарегистрирован:
2012-02-06
Сообщений: 962

Код, который я привел - для 4-го нетката. У Вас тоже 4-ый? Если 5-ый, то синтаксис другой будет.
20.10.2014, 13:47
Нерсесов Сергей Николаевич

Зарегистрирован:
2014-06-16
Сообщений: 35

Пожалуйста, можете привести пример для 5-ой версии?

Чтоб чекбоксами отмечать
20.10.2014, 15:12
Nexwich
Панасин Александр
Nexwich

Зарегистрирован:
2011-04-05
Сообщений: 1037

Создайте поле select_category тип строка.
Альтернативная форма добавления. Вставьте там где должны отображаться чекбоксы.
Код:
<?
$select_category = explode(":",$f_select_category);
$Subdivisions= $nc_core->db->get_results("SELECT * FROM Subdivision WHERE Parent_Sub_ID=".$sub."", ARRAY_A );
foreach($Subdivisions as $Subdivision){ ?>
<label><input name='f_select_category[]' value='<?=$Subdivision[Subdivision_ID]?>' <? if(array_search('$Subdivision[Subdivision_ID]',$select_category)){ ?> checked<? } ?>> <?=$Subdivision[Subdivision_Name]?></label>
<?
} ?>

Для вывода всех подразделов разделов использовать рекурсивную функцию
Код:
<?
$select_category = explode(":",$f_select_category);
function recursSub($sub){
global $nc_core;
$Subdivisions= $nc_core->db->get_results("SELECT * FROM Subdivision WHERE Parent_Sub_ID=".$sub."", ARRAY_A );
foreach($Subdivisions as $Subdivision){ ?>
<label><input name='f_select_category[]' value='<?=$Subdivision[Subdivision_ID]?>' <? if(array_search('$Subdivision[Subdivision_ID]',$select_category)){ ?> selected<? } ?>> <?=$Subdivision[Subdivision_Name]?></label>
<?
recursSub($Subdivision[Subdivision_ID]);
}
}
recursSub($sub); ?>



Действия после добавления. Генерируйте код и вставьте вверх.
Код:
$nc_core->db->query("UPDATE Message".$classID." SET select_category=':".implode(":",$f_field).":' WHERE Message_ID=".$message."");


Для вывода на сайте. Системные настройки компонента
Код:
<? $ignore_sub = $ignore_cc = 1;
$query_where = "a.select_category LIKE '%:".$sub.":%'"; ?>

Двоеточия используются для более точного определения. Например если у вас есть раздела 1 и раздел 12 то в обоих случаях есть 1 а значит он найдет оба что не хорошо.

Модуль "Почтовые уведомления" – настройка email уведомлений на вашем сайте без программирования. Бесплатно. http://netcat.ru/products/CatStore/solution_242.html
20.10.2014, 22:27
Нерсесов Сергей Николаевич

Зарегистрирован:
2014-06-16
Сообщений: 35

Спасибо огромное! щас получается выводятся подкатегории род. категории...а если такая структура:

Родительская категория
- Первая
-- Подкатегория первая
---Подкатегория подкатегории первой
- Вторая
--Подкатегория вторая
---Подкатегория подкатегории пвторой
и т.д.

Если я публикую товары в Родительской категории, то чекбоксы выводятся только на ее подкатегории (это "Первая" и "Вторая"), а чтоб вывести древо категорий, нужно шаблон вывода?
21.10.2014, 10:35
Nexwich
Панасин Александр
Nexwich

Зарегистрирован:
2011-04-05
Сообщений: 1037

Используйте рекурсивную функцию. Я добавил к предыдущему.

Модуль "Почтовые уведомления" – настройка email уведомлений на вашем сайте без программирования. Бесплатно. http://netcat.ru/products/CatStore/solution_242.html
21.10.2014, 18:42
Елена Когтина

Зарегистрирован:
2014-05-12
Сообщений: 9

Александр, спасибо за ответы, на днях подобное тоже захотели реализовать для удобства.

А можете подсказать с такой ситуацией..в примере выше, выводятся все подкатегории находящиеся в одной категории, а если товар находится в 2-х разных категориях..т.е. вывод всех разделов каталога, не зависимо в категории находится товар или в подкатегории

спасибо
198 196 2017-01-25 13:53:57 13096
Страницы: 1  |  2  |  3
Описание проекта