Последние темы


Товары с разными параметрами shopkeeper+migx

  • Здрасьте все.

    Возможно на старом форуме эта тема уже поднималась, но поскольку он умер...
    Так вот.
    Есть shopkeeper+migx.
    Каталог №1 с товарами - пакет shop, класс shopContent.
    Вывожу каталог №1 с товарами:

    [[!getPage?
    &element=`getProducts`  
    &limit=`12`
    &className=`shopContent`
    &packageName=`shop`
    &tpl=`product`
    ]]
    

    Есть ещё другой каталог №2 с товарами, у которых другие параметры, поэтому они в другой таблице migx с пакетом lastshop и классом lastshopContent
    Его я вывожу так:

    [[!getPage?
    &element=`getProducts`  
    &limit=`12`
    &className=`lastshopContent`
    &packageName=`lastshop`
    &tpl=`product`
    ]]
    

    Но, естественно, страницы товаров по ссылкам из этого каталога отсутствуют, поскольку в плагине shk_contextSwitch параметры prodClassName и prodPackageName соответственно ShopContent и shop.
    Полагаю, нужно создать набор параметров плагина shk_contextSwitch (допустим last) со значениями lastshopContent и lastshop и выводить каталог №2 применяя этот набор. Но как это сделать. Никак не могу додумать - не хватает опыта.
    Пробовал так:

    [[!getPage?
    &element=`getProducts`  
    &limit=`12`
    &context=`last`
    &className=`lastshopContent`
    &packageName=`lastshop`
    &tpl=`product`
    ]]
    

    но ничего не получается...

  • Нужно в шаблоне категории товаров добавить параметры:
    prodPackageName - имя пакета товаров
    prodClassName - имя класса товаров
    prodTemplateId - ID шаблона товаров

    Если две таблицы, то будет два разных шаблона категорий товаров с разными параметрами.

  • То есть категорию выводить так?

    [[!getPage?
    &element=`getProducts`  
    &limit=`12`
    &prodPackageName=`shopstab`
    &prodClassName=`shopStabContent`
    &prodTemplateId=`4`
    &className=`shopStabContent`
    &packageName=`shopstab`
    &orderby=`{"pagetitle":"DESC"}`
    &tpl=`product`
    &depth=`2`
    ]]
    

    Попробовал — не получилось. Страниц товаров так и нет.

  • Нет, не так. Параметры для шаблона категории нужно задавать в админке. "Элементы" -> Шаблон -> вкладка "Параметры".
    И при чём тут getPage? Вы же выше писали, что всё выводится, только не открывается страница товара.

  • Значит getPage не трогаю, дело не в нём?
    Оставляю вывод категории в шаблоне таким:

    [[!getPage?
    &element=`getProducts`  
    &limit=`12`
    &className=`lastshopContent`
    &packageName=`lastshop`
    &orderby=`{"pagetitle":"DESC"}`
    &tpl=`product`
    &depth=`2`
    ]]
    

    в параметрах категории задал:
    prodPackageName - lastshop
    prodClassName - lastshopContent
    prodTemplateId — 4

    но страницы с товарами так и отсутствуют, хотя пути у них верные — типа «категория/товар.html»

  • Оставляю вывод категории в шаблоне таким:

    Давайте будем выражаться более точно. Не вывод категории, а вывод товаров категории. Не параметры категории, а параметры шаблона категории.

    Правильно ли я понял, что товары у вас выводятся, но когда переходите по ссылке на страницу товара, то получаете 404?

  • @Andchir сказал Товары с разными параметрами shopkeeper+migx:

    Оставляю вывод категории в шаблоне таким:

    Давайте будем выражаться более точно. Не вывод категории, а вывод товаров категории. Не параметры категории, а параметры шаблона категории.

    Так точно

    Правильно ли я понял, что товары у вас выводятся, но когда переходите по ссылке на страницу товара, то получаете 404?

    Совершенно верно

  • Покажите скриншоты чтобы убедиться, что категориям назначены правильные шаблоны с правильными параметрами.

  • 0_1461761907897_2016-04-27_15-56-19.png
    0_1461761958976_2016-04-27_15-59-06.png

  • Какая версия Шопкипера? У категории установлен флажок "Контейнер"?
    Покажите XML схему таблицы товаров.

  • shopkeeper3-3.2.3
    да

    	<?xml version="1.0" encoding="UTF-8"?>
    	<model package="shopstab" baseClass="xPDOObject" platform="mysql" defaultEngine="MyISAM" version="1.1">
    	    <object class="ShopStabContent" table="shopstab_content" extends="xPDOSimpleObject">
    		<field key="resource_id" dbtype="int" precision="10" phptype="int" null="false" index="index" />
    		<field key="priceold" dbtype="float" null="true" default="" />
    		<field key="gallery" dbtype="text" null="true" default="" />
    		<field key="faze" dbtype="text" null="true" default="" />
    		<field key="power" dbtype="double" null="true" default="" />
    		<field key="voltagein" dbtype="text" null="true" default="" />
    		<field key="voltageout" dbtype="text" null="true" default="" />
    		<field key="weight" dbtype="float" null="true" default="" />
    		<field key="length" dbtype="float" null="true" default="" />
    		<field key="width" dbtype="float" null="true" default="" />
    		<field key="height" dbtype="float" null="true" default="" />
    		<field key="country" dbtype="text" null="true" default="" />
    		<field key="guarant" dbtype="text" null="true" default="" />
    		<field key="manuf" dbtype="text" null="true" default="" />
    		<field key="pagetitle" dbtype="varchar" precision="255" phptype="string" null="false" default="" index="fulltext" indexgrp="shopstab_content_ft_idx" />
    		<field key="longtitle" dbtype="varchar" precision="255" phptype="string" null="false" default="" index="fulltext" indexgrp="shopstab_content_ft_idx"  />
    		<field key="alias" dbtype="varchar" precision="255" phptype="string" null="true" default="" index="index" />
    		<field key="deleted" dbtype="int" precision="10" phptype="integer" null="false" default="0" />
    		<field key="deletedon" dbtype="int" precision="20" phptype="timestamp" null="false" default="0" />
    		<field key="deletedby" dbtype="int" precision="10" phptype="integer" null="false" default="0" />
    		<field key="introtext" dbtype="text" phptype="string" null="true" index="fulltext" indexgrp="shopstab_content_ft_idx" />
    		<field key="content" dbtype="mediumtext" phptype="string" null="true" index="fulltext" indexgrp="shopstab_content_ft_idx" />
    		<field key="template" dbtype="int" precision="10" phptype="integer" null="false" default="0" />
    		<field key="menuindex" dbtype="int" precision="10" phptype="integer" null="false" default="0" />
    		<field key="editedon" dbtype="int" precision="20" phptype="timestamp" null="false" default="0" />
    		<field key="editedby" dbtype="int" precision="10" phptype="integer" null="false" default="0" />
    		<field key="createdon" dbtype="int" precision="20" phptype="timestamp" null="false" default="0" />
    		<field key="createdby" dbtype="int" precision="10" phptype="integer" null="false" default="0" />
    		<field key="publishedon" dbtype="int" precision="20" phptype="timestamp" null="false" default="0" />
    		<field key="unpublishedon" dbtype="int" precision="20" phptype="timestamp" null="false" default="0" />
    		<field key="published" dbtype="tinyint" precision="1" attributes="unsigned" phptype="boolean" null="false" default="0" index="index" />
    		<field key="publishedby" dbtype="int" precision="10" phptype="integer" null="false" default="0" />
    		<field key="hidemenu" dbtype="tinyint" precision="1" attributes="unsigned" phptype="integer" null="false" default="0" index="index" />
    		
    		<field key="price" dbtype="float" phptype="float" null="true" default="0" />
    		<field key="image" dbtype="varchar" precision="255" null="true" default="" />
    		<field key="inventory" dbtype="varchar" precision="255" phptype="string" null="false" default="" />
    		<field key="articul" dbtype="varchar" precision="255" phptype="string" null="false" default="" />
    		<field key="param1" dbtype="varchar" precision="255" phptype="string" null="false" default="" />
    		
    		<index alias="resource_id" name="resource_id" primary="false" unique="false" type="BTREE">
    	            <column key="resource_id" length="" collation="A" null="true" />
    	        </index>
    		<index alias="alias" name="alias" primary="false" unique="false" type="BTREE">
    	            <column key="alias" length="" collation="A" null="true" />
    	        </index>
    	        <index alias="published" name="published" primary="false" unique="false" type="BTREE">
    	            <column key="published" length="" collation="A" null="false" />
    	        </index>
    		<index alias="hidemenu" name="hidemenu" primary="false" unique="false" type="BTREE">
    	            <column key="hidemenu" length="" collation="A" null="false" />
    	        </index>
    		
    		<index alias="shopstab_content_ft_idx" name="shopstab_content_ft_idx" primary="false" unique="false" type="FULLTEXT">
    	            <column key="pagetitle" length="" collation="A" null="false" />
    	            <column key="longtitle" length="" collation="A" null="false" />
    	            <column key="introtext" length="" collation="A" null="true" />
    	            <column key="content" length="" collation="A" null="true" />
    	        </index>
    		
    	    </object>
    	</model>
  • Проверьте в БД чтобы у товаров было
    published = 1
    deleted = 0

  • @Andchir сказал Товары с разными параметрами shopkeeper+migx:

    Проверьте в БД чтобы у товаров было
    published = 1
    deleted = 0

    published = 1 deleted = 0

    если это немного приблизит решение, то мне удавалось выводить страницы товаров, когда в плагине shk_contextSwitch я задавал параметры prodClassName=ShopStabContent и prodPackageName=shopstab
    Но при этом, естественно, пропадали страницы товаров пакета shop

    И вот ещё какая особенность.
    Сейчас попробовал опять поменять параметры плагина shk_contextSwitch, чтобы вывести страницы товаров пакета shopstab. Результат - отрицательный. Удалил параметры prodPackageName, prodClassName, prodTemplateId шаблона категории и страницы товаров пакета shopstab появились, ну а товаров пакета shop само собой пропали.

  • Можете скинуть мне в чатик доступы в админку, я посмотрю. Думаю так было бы быстрее.

  • скинул в чат

  • В параметре шаблона "prodClassName" почему-то у вас стояло "shopStabContent" а в MIGX (в XML данном выше тоже видно) это название - ShopStabContent (с большой буквы).

  • Большое спасибо

  • Существует такая же задача.
    Все прописываю в шаблонах, но получаю 404
    Скажите, а в плагине что нужно оставить? или пустые поля?

 

Последние комментарии

  • Y

    В чем может быть проблема?

    Читать далее
  • Y

    Big и Small Images могут быть от 1 до 10, Summary иногда имеет внутри текст и выглядит так:

    <Summary> <item>текст</item> </Summary>

    Читать далее
  • Y

    Не импортируются товары из Xml, вместо них выводит такие ошибки:

    Invalid argument supplied for foreach()
    SimpleXMLElement::xpath(): Invalid expression
    PHP warning: SimpleXMLElement::xpath(): xmlXPathEval: evaluation failed
    PHP warning: current() expects parameter 1 to be array, boolean given

    Вот как выглядит строка товара xml:
    <root>

    <Big_Images> <Big_Images0>url to img</Big_Images0> <Big_Images1>url to img</Big_Images0> </Big_Images> <Small_Images> <Small_Images0>url to img</Small_Images0> <Small_Images1>url to img</Small_Images1> </Small_Images> <Title>рандомное имя</Title> <Summary/> <Price>7.43</Price> <Main_Info><item>много html кода</item></Main_Info> </root>

    И вот сам php файл для импорта:

    <?php //разбивка по столбцам при импорте и экспорте (content|tv|category) //$cf_config['content_row'] = array( //array('Title',array('pagetitle','content')), //array('Title',array(43,'tv')), //array('Big_Images',array(44,'tv')), //array('Price',array(45,'tv')) //); //значения по умолчанию при импорте или проверка при экспорте $cf_config['imp_content_default'] = array( 'content' => array( 'deleted' => 0, 'published' => 1, 'description' => '', 'show_in_tree' => 0, 'class_key' => 'msProduct', 'template' => 8 // ID шаблона товара //'createdon' => strtotime("now") //'publishedon' => strtotime("now") //'pub_date' => strtotime("now") //'editedby' => 1 //'editedon' => strtotime("now") ), 'tv' => array( //7 => 0 ) ); //первая строка - названия полей $cf_config['include_captions'] = false; //число товаров импортируемых за один раз (загрузка по группам). 0 - не ограничивать. $cf_config['batch_import'] = 0; //разбивать по категориям $cf_config['include_categories'] = false; //удалять дочерние категории при очистке и обновлении каталога $cf_config['delete_subcategories'] = true; //по какому полю проверять соответствие товара при обновлении. false - не проверять (очистка категории при обновлении). $cf_config['imp_chk_field'] = 'pagetitle'; //проверять соответствие товара при обновлении по значению TV. Указать ID TV. false - не проверять (очистка категории при обновлении). $cf_config['imp_chk_tvid_val'] = false; //Добавлять товары, которые не найдены при обновлении по TV (imp_chk_tvid_val) или полю (imp_chk_field) $cf_config['imp_if_not_exist'] = false; //удалять HTML-теги при экспорте $cf_config['exp_strip_tags'] = false; //автоматически генерировать псевдоним (alias) при импорте //false - выключено; true - генерировать с переводом в транслит; 'notranslit' - генерировать без перевода в транслит. $cf_config['imp_autoalias'] = false; //Изменить значения поля для всех вложенных товаров до начала импорта. //Например можно отменить публикацию для всех товаров и публиковать только те, которые есть в новом прайс-листе. //первый массив - какие поля и на какие значения менять, второй массив - условия которые нужно проверять (можно сделать пустым) $cf_config['imp_before_change'] = false;//'[{"tv.inventory":0},{}]';//'[{"published":0},{"tv.pricename":"Поставщик1"}]';//false - для отмены //удалить файл после экспорта (скачивания) $cf_config['exp_delete_file'] = false; //кодировка CSV-файла при экспорте $cf_config['exp_csv_charset'] = 'UTF-8'; //'windows-1251' //Импортировать (обновлять) пустые значения $cf_config['imp_empty'] = true; //Имя файла процессора, который использовать для импорта. Если пусто, используется стандартный процессор "import". $cf_config['imp_custom_processor'] = ''; //путь (xpath) в XML структуре до товаров $cf_config['imp_xml_itemsparent_path'] = '';//'/catalog/shop/offers'; //Структура XML файла для импорта $cf_config['imp_xml_structure'] = <<<EOF <root> <Big_Images> <Big_Images0>tv44</Big_Images0> <Big_Images1>tv48</Big_Images1> <Big_Images2>tv49</Big_Images2> <Big_Images3>tv50</Big_Images3> <Big_Images4>tv51</Big_Images4> <Big_Images5>tv52</Big_Images5> <Big_Images6>tv53</Big_Images6> <Big_Images7>tv54</Big_Images7> <Big_Images8>tv55</Big_Images8> <Big_Images9>tv56</Big_Images9> </Big_Images> <Small_Images> <Small_Images0>tv47</Small_Images0> <Small_Images1>tv58</Small_Images1> <Small_Images2>tv59</Small_Images2> <Small_Images3>tv60</Small_Images3> <Small_Images4>tv61</Small_Images4> <Small_Images5>tv62</Small_Images5> <Small_Images6>tv63</Small_Images6> <Small_Images7>tv64</Small_Images7> <Small_Images8>tv65</Small_Images8> <Small_Images9>tv66</Small_Images9> </Small_Images> <Title>pagetitle</Title> <Summary> <item>tv57</item> </Summary> <Price>tv45</Price> <Main_Info> <item>tv46</item> </Main_Info> </root> EOF; //тестирование конфигурации (без записи в БД). Отчёты -> Журнал ошибок. $cf_config['imp_testmode'] = false; //функция для фильтрации значений при ИМПОРТЕ function filter_import($value_arr){ $output_arr = $value_arr; /* if(isset($output_arr['content']['pagetitle'])) $output_arr['content']['pagetitle'] = mb_strtoupper($output_arr['content']['pagetitle'], 'UTF-8'); */ return $output_arr; } //функция для фильтрации значений при ЭКСПОРТЕ function filter_export($value_arr,$doc_id=0){ $output_arr = $value_arr; //var_dump($value_arr,$output_arr); //exit; /* if(isset($output_arr['price'])) $output_arr[1] = floatval($output_arr[1]) - 200; */ return $output_arr; } ?>

    Читать далее
  • Начать нужно с документации. Потом открыть файл конфигурации. Потом можно на форуме почитать темы, связанные с CatalogFill.

    Читать далее