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

Отображение chekbox для выборки в разных разделах

Страницы: 1  |  2
11.02.2014, 17:41
Вячеслав
Студия "Кронос"
Вячеслав

Зарегистрирован:
2013-04-12
Сообщений: 91

Здравствуйте.
Постараюсь внятно объяснить появившеюся задачу.

Разделы сайта выглядят так:
- № 1. Раздел
---№ 1.1 Первый подраздел
---№ 1.2 Второй подраздел
---№ 1.3 Третий подраздел


В шаблоне компонента раздела № 1 подключаю выборку через чекбокс. В этом разделе 2 поля с чекбоксами в каждом скажем по 7 чекбоксов, и в системных настройках прописано условие $ignore_sub = 1; $ignore_cc = 1; (т.е. игнорировать разделы и отобразить все элементы компонента). В разделе отображаются все элементы инфоблока в не зависимости от подразделов и выборка осуществляется корректно из всех подразделов. Все поля чекбоксов служат своему делу.

Но в подразделах с номерами № 1.1, № 1.2 и № 1.3 количесво чекбоксов должно быть меньше, потому как выборка осуществляется только по элементам в ихних компонентах (условие в шаблоне компонента $ignore_sub = 1; $ignore_cc = 1; в них осутствует).

Вопрос в том автоматизировать отображение чекбоксов в зависимости от раздела. Можно конечно на каждый раздел сделать свой шаблон отображения, но когда подразделов может быть 20 это рутиная работа. Сделать вывод проверкой номеру инфоблока раздела
<?= $cc == '389'? "1-ое поле с выборкой <input type='checkbox' name='srchPat[1][]' value='1'>первый
<input type='checkbox'>второй
<input type='hidden' name='srchPat[1]' value='2'>
<br />

2-ое поле с выборкой <input type='checkbox' name='srchPat[2][]' value='2'>первый
<input type='checkbox'>второй
<input type='hidden' name='srchPat[2]' value='2'>

":""?>

Но это по сути тоже самое...

Предполагаю, что это можно осуществить запросом через mysql. Если бы поле раздела Subdivision_ID как то было связанно с этими чекбоксами, кроме того что они находятся в одной таблице, то это был б реально.
Кто сталкивался подобной задачей, прошу откликнуться.
12.02.2014, 13:00
Nexwich
Панасин Александр
Nexwich

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

Тут сложно что то советовать, может вам стоит пересмотреть подход к задаче и изменить ее логику?

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

Зарегистрирован:
2013-04-12
Сообщений: 91

Да, я решил пересмотреть.. в итоге пока остановился на решении, с помощью двига, в системных таблицах разделов создавал новые поля с логической переменной, а в шаблоне компонентов вызывал проверкой если включено
<? if ($current_sub["Поле"]) { ?>
#1<input 'checkbox'>
<? } ?>
поскольку эти чекбоксы перекликаются с разными разделами... не самолет, но кода в десятки раз меньше. А как вы бы поступили?
12.02.2014, 18:51
Nexwich
Панасин Александр
Nexwich

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

А какова задача? В ваших двух постах лишь решение но чего не совсем ясно.
Наверное вам в основном разделе нужно выводить объекты из подразделов. Если так то я бы записал номера всех родительских разделов в объект. И при помощи трех строк выводил бы объекты
$ignore_sub = $ignore_cc = 1;
$query_where = "a.Checked = 1";
if ($action!='full') $query_where .= " AND a.nc_category LIKE '%:".$current_sub['Subdivision_ID'].":%'";

где nc_category созданное системное поле для хранения родительских разделов.
В общем если я угадал задачу то у меня есть на нее автоматизированное решение

Опишите задачу и возможно мы найдем ей решение

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

Зарегистрирован:
2013-04-12
Сообщений: 91

Да, виноват, к сожалению не всегда получается правильно объяснить.

Я создаю раздел (основной), а в нем 10 подразделов. В 10 подразделах подключаю компонент каталога и добавляю туда товар. В основном подразделе отдельным шаблоном компонента каталога вывожу весь товар. Затем в шаблоне компонента каталога добавляю поле для выборки чекбоксом. Чекбоксы добавлены в суффиксе шаблона компонента обычным html кодом.
Для того чтобы работать с основным разделом я нарисовал html выборку этими чекбоксами. Для основного раздела это актуально, т.к. в нем весь товар, НО в его 10 подразделах товар отличается, т.е. он может не соответствовать этим чекбоксам и выборка в них покажет где-то 20% товара от наличия чекбоксов. Задача скрыть чекбосы в этих подразделах, если они не актуальны ...

Вы писали:
Если так то я бы записал номера всех родительских разделов в объект. И при помощи трех строк выводил бы объекты
$ignore_sub = $ignore_cc = 1;
$query_where = "a.Checked = 1";
if ($action!='full') $query_where .= " AND a.nc_category LIKE '%:".$current_sub['Subdivision_ID'].":%'";
где nc_category созданное системное поле для хранения родительских разделов.


Мне не совсем понятно, что за поле nc_category и как хранить в нем разделы
13.02.2014, 14:33
Nexwich
Панасин Александр
Nexwich

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

Вы опять расписали решение, но не задачу. Задача пока остается не ясной.
Предположу что вам нужно показывать определенные товары из подразделов?
Чекбоксы отвечают за товары? Товаров много или 1?
Честное слово все экстрасенсы в отпуске. Я не могу читать мысли.
Конкретно задачу опишите а не решения
Прежде чем я что то буду объяснять я хотел бы узнать задачу, а не варианты решения не пойми чего. Или позвоните в скайп.
А может у вас задача выводить чекбоксы не пойми чего которые отвечают не пойми за что?
Тогда подсчитывайте количество подразделов и выводите согласно их количеству.
Бред какойто

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

Зарегистрирован:
2013-04-12
Сообщений: 91

Задачу изложил в заголовке темы.
Разжевал все подробно, чтобы понять - а зачем?
Не буду вгонять вас в ступор, закрываю тему.
Спасибо большое за ответы.
13.02.2014, 16:07
Nexwich
Панасин Александр
Nexwich

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

Если вы разжевали все подробно скрывая истинную суть, то почему вам не кто не может ответить?
Вы ее можете удалить а закрыть сомневаюсь.
Может чекбоксы это типо показать товар? Потому вы и отображаете все, а в одном подразделе один товар. Сколько товаров столько и чекбоксов. В итоге чекбоксы скрывают их. Соответственно от глубины товаров становится меньше и чекбоксов также.
Тогда в этом случаи вам нужен шаблон для вывода объектов в виде чекбоксов. И проверка текущего раздела. Что была описан выше. Но это если я снова угадал

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

Зарегистрирован:
2013-04-12
Сообщений: 91

Да, да, вы наконец угадали!

Но задача решена, описал в своем втором комментарии, идеи приходят во время обсуждения.
Александр, спасибо большое
13.02.2014, 17:35
Nexwich
Панасин Александр
Nexwich

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

Тогда я бы эту задачу решил бы с помощью дополнительного шаблона где объект в списке это чекбокс товара.
Добавил бы поле nc_category

Действия после добавления
Код:
// Добавление родительских категорий
$treesub = $nc_core->subdivision->get_parent_tree($sub);
$Subdivision = ':';
foreach($treesub as $item){
$Subdivision .= $item[Subdivision_ID].":";
};
$db->query("UPDATE Message".$classID." SET nc_category='".$Subdivision."' WHERE Message_ID=".$message."");

Таким образом товар будет знать всех своих родителей.

В системных настройках шаблона чекбоксов написал бы
Код:
$ignore_sub = $ignore_cc = 1;
$query_where = "a.Checked = 1";
if ($action!='full') $query_where .= " AND a.nc_category LIKE '%:".$current_sub['Subdivision_ID'].":%'";


<?=nc_objects_list(111,222,"&nc_ctpl=90",true)?> Эту запись в шапку компонента и готово

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

Зарегистрирован:
2013-04-12
Сообщений: 91

не понимаю

У меня чекбоксы прописываются руками в макете шаблона, потому как при администрации, т.е. добавлении товара мне нужно отображение их списком для удобства.

<?=nc_objects_list(111,222,"&nc_ctpl=90",true)?> - это для отображения товара или чекбоксов?
198 196 2014-07-02 19:01:08 13505
Страницы: 1  |  2
Описание проекта