|
|
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
Панасин Александр
Зарегистрирован: 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
Панасин Александр
Зарегистрирован: 2011-04-05
Сообщений: 1037
|
Используйте рекурсивную функцию. Я добавил к предыдущему.
Модуль "Почтовые уведомления" – настройка email уведомлений на вашем сайте без программирования. Бесплатно. http://netcat.ru/products/CatStore/solution_242.html
|
|
|
21.10.2014, 18:42
|
|
Елена Когтина
Зарегистрирован: 2014-05-12
Сообщений: 9
|
Александр, спасибо за ответы, на днях подобное тоже захотели реализовать для удобства.
А можете подсказать с такой ситуацией..в примере выше, выводятся все подкатегории находящиеся в одной категории, а если товар находится в 2-х разных категориях..т.е. вывод всех разделов каталога, не зависимо в категории находится товар или в подкатегории
спасибо
|