Регистрация
Вход через соцсети
Восстановление пароля

Вывод всех материалов в разделе

Новый топик
31.08.2014, 15:40
Ответить | Цитировать
Алексей

Зарегистрирован:
2014-08-29
Сообщений: 46

Недавно приобрел NetCat, опыта с работой в системе 0.
Имеется вот такая структура

Продукция
Спецодежда
Утепленная одежда
Летняя одежда
Головные уборы
Кепки
Средства защиты
Спецобувь
___________________________________________________________

Перерыл весь форум в поисках решений:
1. Вывод всех материалов на станице продукция, т.е. все те материалы, которые добавлены в подразделы (Кепки, Утепленная одежда и другие)
А так же вывод в Подразделе Спецодежда товаров, которые добавлены в (Утепленная одежда, Летняя)
Как это сделать?
___________________________________________________________
2. Открываем страницу Продукция (Видим весь каталог товаров) жмем редактирование - добавить материал - как организовать выбор раздела, при добавлении материла?
31.08.2014, 19:17
Ответить | Цитировать
Руслан Густокашин
Студия Вэлпис
Руслан Густокашин

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

1. Вывод товаров из текущего раздела + всех вложенных подразделов. В системных настройках товарного компонента напишите:
Код:

$ignore_sub=$ignore_cc=1;
$cursubs=join(",",nc_get_sub_children($current_sub['Subdivision_ID']));
$query_where = "a.Subdivision_ID IN ($cursubs)";


2. Выбор раздела при добавлении товара на сайте. Делаем альтернативную форму, ищем там строчку: <input name='sub' type='hidden' value='<?= $sub ?>' />
удаляем ее и вместо нее пишем такой вот код:
Код:

<?
// выбор разделов при добавлении товаров:
$sublist[0]['prefix'] = "";
$sublist[0]['active'] = "<option value='%SUB'>%NAME</option>%NEXT_LEVEL";
$sublist[0]['unactive'] = $sublist[0]['active'];
$sublist[0]['divider'] = "";
$sublist[0]['suffix'] = "";

$sublist[1]['prefix'] = "";
$sublist[1]['active'] = "<option value='%SUB'>&nbsp;&nbsp;&nbsp;%NAME</option>%NEXT_LEVEL";
$sublist[1]['unactive'] = $sublist[1]['active'];
$sublist[1]['divider'] = "";
$sublist[1]['suffix'] = "";

$sublist[2]['prefix'] = "";
$sublist[2]['active'] = "<option value='%SUB'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;%NAME</option>%NEXT_LEVEL";
$sublist[2]['unactive'] = $sublist[2]['active'];
$sublist[2]['divider'] = "";
$sublist[2]['suffix'] = "";

$sublist[3]['prefix'] = "";
$sublist[3]['active'] = "<option value='%SUB'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;%NAME</option>%NEXT_LEVEL";
$sublist[3]['unactive'] = $sublist[3]['active'];
$sublist[3]['divider'] = "";
$sublist[3]['suffix'] = "";

$sublist_options=nc_browse_sub(123, $sublist); // 123-номер раздела "Продукция"

if(count($_POST)) $selsub=$_POST['sub']; // если уже была неудачная попытка сохранить товар, запоминаем выбранный ранее номер раздела
else $selsub=0;

if($selsub) $sublist_options=str_replace("value='$selsub'","value='$selsub' selected='selected'",$sublist_options); // делаем атрибут selected для ранее выбранного варианта
?>
Выберите, пожалуйста, раздел, куда добавлять товар:<br />
<select name='sub'><?=$sublist_options?></select>
<br /><br />


Потом в условиях добавления объекта нужно еще сформировать правильный номер инфоблока, например, таким кодом:
Код:

$cc=$db->get_var("select Sub_Class_ID from Sub_Class where Class_ID='$classID' and Subdivision_ID='$sub' limit 1");


Код составил для Вас, но не проверял. Однако должно все работать.
Если захотите это дело использовать не на сайте, а в админке сайта, то там нужно будет немного поколдовать с $GLOBALS.

31.08.2014, 19:28
Ответить | Цитировать
Алексей

Зарегистрирован:
2014-08-29
Сообщений: 46

Код:
$ignore_sub=$ignore_cc=1;

$cursubs=join(",",nc_get_sub_children($current_sub['Subdivision_ID']));

$query_where = "a.Subdivision_ID IN ($cursubs)";


Испольщовал код, единственный который сработал, спасибо. Но я вижу только товары, когда включен режим редактирования. Или в адми. панели.
31.08.2014, 20:24
Ответить | Цитировать
Гость
Гость

Когда выключен режим редактирования, товары невидны
31.08.2014, 22:25
Ответить | Цитировать
Алексей

Зарегистрирован:
2014-08-29
Сообщений: 46

С первым пунктом разобрался, все работает, спасибо.
А вот со вторым пунктом проблема, нету такого кода в компонентах v4
Там такой код:
Код:
".( $warnText ? "<div class='warnText'>$warnText</div>" : NULL )."
<form name='adminForm' class='nc-form' id='adminForm' enctype='multipart/form-data' method='post' action='".$SUB_FOLDER.$HTTP_ROOT_PATH."add.php'>
<div id='nc_moderate_form'>
<div class='nc_clear'></div>
<input name='admin_mode' type='hidden' value='$admin_mode' />
".$nc_core->token->get_input()."
<input name='catalogue' type='hidden' value='$catalogue' />
<input name='cc' type='hidden' value='$cc' />
<input name='sub' type='hidden' value='$sub' />
<input name='posting' type='hidden' value='1' />
<input name='curPos' type='hidden' value='$curPos' />
<input name='f_Parent_Message_ID' type='hidden' value='$f_Parent_Message_ID' />
".nc_form_moderate('add', $admin_mode, 0, $systemTableID, $current_cc, (isset($f_Checked) ? $f_Checked : null), $f_Priority , $f_Keyword, $f_ncTitle, $f_ncKeywords, $f_ncDescription )."
</div>

".nc_string_field("Title", "maxlength='255' size='50'", $classID, 1, '', false, null, 0)."<br />
<br />
".nc_int_field("Price", "maxlength='12' size='12'", $classID, 1)."<br />
<br />
".nc_file_field("PhotoSmall", "size='50'", $classID, 1)."<br />
<br />
".nc_file_field("PhotoLarge", "size='50'", $classID, 1)."<br />
<br />
".nc_text_field("Description", "", $classID, 1)."<br />
<br />
".nc_text_field("TextFull", "", $classID, 1)."<br />
<br />
".(!$AUTH_USER_ID && $current_cc['UseCaptcha'] && $MODULE_VARS['captcha'] ? nc_captcha_formfield()."<br/><br/>".NETCAT_MODERATION_CAPTCHA." (*):<br/><input type='text' name='nc_captcha_code' size='10'><br/><br/>" : "")."
<div>".NETCAT_MODERATION_INFO_REQFIELDS."</div><br/>
".nc_submit_button(NETCAT_MODERATION_BUTTON_ADD)."
</form>
01.09.2014, 10:03
Ответить | Цитировать
Руслан Густокашин
Студия Вэлпис
Руслан Густокашин

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

Хорошо, что разобрались!
Если у вас компонент 4-й версии, то мой код нужно привести к соответствующему виду, ведь я его написал для вас из расчета на 5-ый неткат.
А упомянутая строчка у вас есть, вот она:
<input name='sub' type='hidden' value='$sub' />
Чем отличаются компоненты 4.х от 5.х и как делать php-вставки, знаете?

01.09.2014, 19:49
Ответить | Цитировать
Алексей

Зарегистрирован:
2014-08-29
Сообщений: 46

Это вызывает огромные неудобства при знакомстве с системой, где то "так", а где то "сяк" 4x и 5x версии. Неудобно и не привычно. Был бы код единый было бы проше.
У меня NetCat 5.4 Бизнес, позовчера приобрел.
К сожалению не знаю, есть ли какой нибудь мануал?
Замечал ссылку Конвертировать в 5.0, но боюсь нажимать, ведь могу возникнуть ошибки, а скачать компонент неоткуда ( На сайте НетКат все ссылки на скачивание выдают 404)
__________
Спасибо за отзывчивость, не могли бы Вы прислать свой номер кошелька (Было бы хорошо, если Янекс.Деньги), все таки коммерческий продукт улыбка
02.09.2014, 08:06
Ответить | Цитировать
Руслан Густокашин
Студия Вэлпис
Руслан Густокашин

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

Довольно странно, что купив систему версии 5.4, Вы смогли найти в ней компонент от нетката 4.х версии, ведь компоненты 4.х большинство разработчиков уже довольно давно похоронили из-за множества неудобств этого стандарта. Возможно, при установке системы вы нажали галочку про установку компонентов 4.х, вот они и установились у вас. улыбка
Некоторое неудобство из-за двух версий, конечно, есть, но разработка нового стандарта, к сожалению, была вынужденной мерой - в старом было много архитектурных ограничений, не подлежащих исправлению.

Компоненты 4.х находятся в админке в меню Разработка -> Компоненты v4,
а новые компоненты(5.х) находятся в меню Разработка -> Компоненты. Посмотрите, по-идее там в 5.х должен быть аналогичный набор компонентов, как и в v4.
Использовать на новом неткате компоненты старой версии очень не рекомендую - намучаетесь не только с переделкой приведенного мною кода, но и с другими штуковинами. Насчет конвертации ваши опасения тоже оправданы, я бы не стал этого делать, ведь, действительно, подводные камни могут быть, да и какой смысл, если проект у вас новый.
Вот мануал разработчика и поль....
Кошель только вебманиулыбка R256951531064 Спасибо.
А что за компонент вы пробуете редактировать? Какой-то стандартный, который идет в дистрибутиве?

02.09.2014, 09:51
Ответить | Цитировать
Алексей

Зарегистрирован:
2014-08-29
Сообщений: 46

И о счастье я вижу нормальный код, понятный и упрощенный.
Ни разу не заходил в Разработка - компоненты, потому что ошибочно думал, что компоненты v4 новее.
Вместо
Код:
  ".( $f_PhotoSmall ? "$f_PhotoSmall" : NULL )."

Есть упрощенная альтернатива.
Код:
<?=$f_PhotoLarge?>

Надеюсь, эта "упрощенная альтернатива" есть везде.
__________
К сожалению с Яндекс.Денег на Webmoney нельзя перевести, обменники требуют одинаковые контактные данные на WM и Яндекс.
__________
Использую стандартный компонент Товары и услуги - Простой каталог товаров
__________
А как мне убрать из системы Компоненты v4?
03.09.2014, 07:09
Ответить | Цитировать
Руслан Густокашин
Студия Вэлпис
Руслан Густокашин

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

Да, приведенная вами "альтернатива" будет работать везде в 5-ых компонентах, где можно вставлять php-код. Но если вы хорошо знакомы с php, то должны помнить о том, что такая конструкция применима только в том случае, если вы точно знаете, что эта переменная проинициализирована, иначе это вызовет предупреждение PHP о том, что переменная неизвестна (хотя скорее всего вы его нигде не увидите).
Если вам нужно вывести картинку, то наиболее правильно было бы поступить вот таким образом:
Код:
<?=$f_PhotoSmall?"<img src='$f_PhotoSmall' alt='' />":NULL?>

Раздел "Компоненты v4" не убрать. Это ведь часть системы - наша история и молодость, которые нельзя забывать. улыбка)))

198 196 2014-09-03 07:09:01 13791
Описание проекта