使用 API 篇文章创建的文章(产品)未显示在前面

Article(Product) is not showing in front which is created using API article

我使用 api 的 shopware 创建了一个产品。

参考:https://developers.shopware.com/developers-guide/rest-api/api-resource-article/

此产品(文章)已列在项目 -> 商店用品概览中。但是当我编辑这个产品并尝试预览这个产品(文章)它在前面的样子时,它并没有显示在前面。表明 : 不幸的是,该产品不再可用。

谁能帮我看看为什么这个产品没有出现在前面?我想在前面显示我在插件中使用 API 创建的文章。

我在 shopware 中插入文章数据的数组如下。

$client->post('articles', 
    array(
        'name'             => 'Damen Organic T-Shirt',
        'description'      => 'Description',
        'descriptionLong' => 'Test Description',
        'active'           => 1,
        'taxId'            => 1,
        'metaTitle'        => '',
        'keywords'         => '',
        'changetime'       => date("Y-m-d H:i:s"),
        'notification'     => 0,
        'supplier'         => 'Shirtee',
        'categories'       => 'Shopware',
        'mainDetail'       => array(
            'number'   => 'MO1C38Q',
            'inStock'  => 1,
            'weight'   => '1.000',
            'position' => '1',
            'width'    => null,
            'height'   => null,
        'attribute' => array(
            'attr1' => '',
        ),
        'prices' => array(
            array(
                'customerGroupKey' => 'EK',
                'price'            => 50,
            ),
        ),
    ),
    'images'            => array(
        'link' => 'test.png'
    ),
    'configuratorSet'   => array(
        'groups' => array(
            array(
                'name'    => 'Size',
                'options' => 'M'
            ),
            array(
                'name'    => 'Color',
                'options' => 'Green'
            ),
        )
    )
));

你的回答对我很有帮助。

需要在mainDetail内通过active => true,如example所示:

    $minimalTestArticle = array(
    'name' => 'Sport Shoes',
    'active' => true,
    'tax' => 19,
    'supplier' => 'Sport Shoes Inc.',
    'categories' => array(
        array('id' => 15),
    ),
    'mainDetail' => array(
        'number' => 'turn',
        'active' => true,
        'prices' => array(
            array(
                'customerGroupKey' => 'EK',
                'price' => 999,
            ),
        )
    ),
);

$client->post('articles', $minimalTestArticle);

以下是您可以在 engine/Shopware/Bundle/StoreFrontBundle/Service/Core/ProductNumberService.php -> isNumberAvailable

中找到的查询
SELECT variant.ordernumber FROM s_articles_details variant INNER JOIN s_articles product ON product.id = variant.articleID AND variant.active = 1 WHERE (variant.ordernumber = 'number') AND ((variant.laststock * variant.instock) >= (variant.laststock * variant.minpurchase)) LIMIT 1

此外,如果您创建它们,则需要为每个变体设置 active => true