跨境电商 · 2022年02月25号 0

如何管理 OpenCart 库存状态

在这篇博文中,我们将仔细研究 OpenCart 的库存状态,向您展示如何添加更多库存以及如何以所需的方式更改其颜色。

通常,库存状态会向您的客户显示您在线商店中每种产品的当前库存。OpenCart 使用产品的当前数量来确定商店产品页面中显示的库存状态。如果产品的数量大于 0,则前店中产品的可用性将始终设置为 In Stock。但是,当数量为 0 时,OpenCart 让您可以从管理面板中选择特定产品的缺货状态。您可以选择几种预设的缺货状态:缺货、2-3 天、有货、预购。此外,如果这些对您来说似乎还不够,您可以从 OpenCart 商店的管理面板轻松添加自定义库存状态。

添加自定义库存状态

要添加自定义库存状态,请转到您的管理面板 > 设置 > 本地化 > 库存状态,然后单击右上角带有加号的蓝色按钮。您唯一需要添加的是新库存状态的名称。如果您有多语言设置,您将看到不同语言的不同输入字段。

单击保存按钮,您将创建新的库存状态。转到目录 > 产品 > 编辑 > 数据 > 缺货状态并从下拉菜单中选择后,您可以将其添加到产品中。

在这篇博文的第二部分,我们将向您展示如何轻松更改前店库存状态的颜色。这将引起客户的注意,并为您的商店提供更加个性化和完整的外观。不幸的是,OpenCart 没有为您提供开箱即用的此功能,但我们将向您展示如何创建一个 OCMOD 文件,该文件不会更改您的任何核心文件。

我们将向您展示两种修改产品库存状态颜色的方法。第一个是用一种颜色着色 In Stock 产品的状态,用另一种颜色着色 Out-Of-Stock 产品的状态(见下图)。第二个是用不同的颜色为您的所有库存状态着色。

有现货和缺货商品的两种不同颜色

我们将根据您的产品数量仅添加两种颜色开始。在我们的示例中,如果数量大于 0,库存状态将设置为有库存,并以绿色着色。否则,无论具体的缺货状态如何,库存状态都将显示为红色。

让我们首先在您喜欢的文本编辑器中创建一个空白文档。复制并粘贴以下代码(稍后将解释代码):

<modification><font></font>
<font></font>
    <name>Stock Status Color by iSenseLabs</name><font></font>
    <version>1.0</version><font></font>
    <link>https://isenselabs.com</link><font></font>
    <author>iSenseLabs</author><font></font>
    <code>isenselabs_stock_status_color</code><font></font>
    <font></font>
    <file path=”catalog/controller/product/product.php”><font></font>
        <operation><font></font>
            <search><![CDATA[if ($product_info[‘quantity’] <= 0) {]]></search><font></font>
            <add  position=”before”><![CDATA[$data[‘quantity’] = $product_info[‘quantity’];]]></add><font></font>
        </operation><font></font>
    </file><font></font>
<font></font>
    <file path=”catalog/view/theme/*/template/product/product.tpl”><font></font>
        <operation><font></font>
            <search><![CDATA[<?php echo $stock; ?>]]></search><font></font>
            <add position=”replace”><![CDATA[<span style=”font-weight:bold;<?php echo ($quantity > 0) ? ‘color:#66aa00’ : ‘color:#ff0000’; ?>”><?php echo $stock; ?></span>]]></add><font></font>
        </operation><font></font>
    </file><font></font>
<font></font>
    <file path=”catalog/controller/product/category.php”><font></font>
        <operation><font></font>
            <search><![CDATA[$this->load->language(‘product/category’);]]></search>    <font></font>
            <add position=”after”><![CDATA[<font></font>
                $this->load->language(‘product/product’);<font></font>
            ]]></add><font></font>
        </operation><font></font>
        <operation><font></font>
            <search><![CDATA[$data[‘products’][] = array(]]></search>    <font></font>
            <add position=”before”><![CDATA[<font></font>
                if($result[‘quantity’] <= 0){<font></font>
                    $result[‘stock’] = $result[‘stock_status’];<font></font>
                }<font></font>
                elseif($this->config->get(‘config_stock_display’)){<font></font>
                    $result[‘stock’] = $result[‘quantity’];<font></font>
                }<font></font>
                else{<font></font>
                    $result[‘stock’] = $this->language->get(‘text_instock’);<font></font>
                }<font></font>
            ]]></add><font></font>
        </operation><font></font>
        <operation><font></font>
            <search><![CDATA[$data[‘products’][] = array(]]></search><font></font>
            <add position=”after”><![CDATA[<font></font>
                ‘quantity’ => $result[‘quantity’],<font></font>
                ‘stock’ => $result[‘stock’],<font></font>
            ]]></add><font></font>
        </operation><font></font>
    </file><font></font>
<font></font>
<wbr>    <file path=”catalog/view/theme/*/template/product/category.tpl”><font></font>
        <operation><font></font>
            <search><![CDATA[<?php if ($product[‘rating’]) { ?>]]></search><font></font>
            <add position=”before”><![CDATA[<font></font>
                <div class=”stock-status”><font></font>
                    <span style=”font-weight:bold;<?php echo ($product[‘quantity’] > 0) ? ‘color:#66aa00’ : ‘color:#ff0000’; ?>”><?php echo $product[‘stock’]; ?></span><font></font>
                </div><font></font>
            ]]></add><font></font>
        </operation><font></font>
    </file><font></font>
</modification><font></font>
<font></font>

请注意,您可以通过更改十六进制颜色值来更改颜色:

‘ color:#66aa00 ‘ 用于In Stock产品,’ color:#ff0000 ‘ 用于以下两行中的Out-Of-Stock产品。

对于产品页面:

<add position=”replace”><![CDATA[<span style=”font-weight:bold;<?php echo ($quantity > 0) ? ‘color:#66aa00’ : ‘color:#ff0000’; ?>”><?php echo $stock; ?></span>]]></add>

对于类别页面:

<span style=”font-weight:bold;<?php echo ($product[‘quantity’] > 0) ? ‘color:#66aa00’ : ‘color:#ff0000’; ?>”><?php echo $product[‘stock’]; ?></span>

在这里您可以找到有关十六进制颜色的更多信息,在这里您可以轻松选择您最喜欢的颜色。

创建文档后,您需要使用以下名称保存文件:nameofyourchoice.ocmod.xml并通过扩展安装程序上传。确保您已刷新并应用了修改。

库存状态仅显示在默认 OpenCart 主题的产品页面中,这意味着您可以在此处查看所做的更改。

但是,显示的代码也修改了类别页面,并将在那里添加产品的库存状态。

如果您想禁用修改,您只需转到Extension > Modifications,向下滚动到iSenseLabs 的 Stock Status Color,单击 Disable 按钮并刷新修改。

不同库存状态的不同颜色

在我们的第二个示例中,我们将为不同的库存状态添加不同的颜色。

同样,我们将从创建一个新的 OCMOD 文件开始,按照我们第一个示例的前几个步骤,与之前的文件不同。在这里,我们将复制并粘贴以下代码:

<modification><font></font>
    <name>Stock Status Color by iSenseLabs</name><font></font>
    <version>1.1</version><font></font>
    <link>https://isenselabs.com</link><font></font>
    <author>iSenseLabs</author><font></font>
    <code>isenselabs_stock_status_color_2</code><font></font>
<font></font>
    <file path=”catalog/controller/product/product.php”><font></font>
        <operation><font></font>
            <search><![CDATA[$data[‘stock’] = $product_info[‘stock_status’];]]></search><font></font>
            <add  position=”after”><![CDATA[if($data[‘stock’] == ‘Out Of Stock’) {<font></font>
                    $data[‘stock_color’] = “#8b0707”;<font></font>
                } elseif ($data[‘stock’] == ‘Pre-Order’) {<font></font>
                    $data[‘stock_color’] = “#ff9900”;<font></font>
                } elseif ($data[‘stock’] == ‘2-3 Days’) {<font></font>
                    $data[‘stock_color’] = “#e89f23”;<font></font>
                } elseif ($data[‘stock’] == ‘Available Soon’) {<font></font>
                    $data[‘stock_color’] = “#fb5323”;<font></font>
                } elseif ($data[‘stock’] == ‘In Stock’) {<font></font>
                    $data[‘stock_color’] = “#c5cc1d”;<font></font>
                } else {<font></font>
                    $data[‘stock_color’] = “#ff0000”;<font></font>
                }]]></add><font></font>
        </operation><font></font>
<font></font>
        <operation><font></font>
            <search><![CDATA[$data[‘stock’] = $product_info[‘quantity’];]]></search><font></font>
            <add position=”after”><![CDATA[$data[‘stock_color’] = “#66aa00”;]]></add><font></font>
        </operation><font></font>
<font></font>
        <operation><font></font>
            <search><![CDATA[$data[‘stock’] = $this->language->get(‘text_instock’);]]></search><font></font>
            <add position=”after”><![CDATA[$data[‘stock_color’] = “#66aa00”;]]></add><font></font>
        </operation><font></font>
<font></font>
    </file><font></font>
<font></font>
    <file path=”catalog/view/theme/*/template/product/product.tpl”><font></font>
        <operation><font></font>
            <search><![CDATA[<?php echo $stock; ?>]]></search><font></font>
            <add position=”replace”><![CDATA[<span style=”font-weight:bold; color:<?php echo $stock_color ?>”><?php echo $stock; ?></span>]]></add><font></font>
        </operation><font></font>
    </file><font></font>
<font></font>
    <file path=”catalog/controller/product/category.php”><font></font>
        <operation><font></font>
            <search><![CDATA[$this->load->language(‘product/category’);]]></search>    <font></font>
            <add position=”after”><![CDATA[<font></font>
                $this->load->language(‘product/product’);<font></font>
            ]]></add><font></font>
        </operation><font></font>
<font></font>
        <operation><font></font>
            <search><![CDATA[$data[‘products’][] = array(]]></search>    <font></font>
            <add position=”before”><![CDATA[<font></font>
            if ($result[‘quantity’] <= 0) {<font></font>
                $result[‘stock’] = $result[‘stock_status’];<font></font>
                if($result[‘stock’] == ‘Out Of Stock’) {<font></font>
                    $result[‘stock_color’] = “#8b0707”;<font></font>
                } elseif ($result[‘stock’] == ‘Pre-Order’) {<font></font>
                    $result[‘stock_color’] = “#ff9900”;<font></font>
                } elseif ($result[‘stock’] == ‘2-3 Days’) {<font></font>
                    $result[‘stock_color’] = “#e89f23”;<font></font>
                } elseif ($result[‘stock’] == ‘Available Soon’) {<font></font>
                    $result[‘stock_color’] = “#fb5323”;<font></font>
                } elseif ($result[‘stock’] == ‘In Stock’) {<font></font>
                    $result[‘stock_color’] = “#c5cc1d”;<font></font>
                } else {<font></font>
                    $result[‘stock_color’] = “#ff0000”;<font></font>
                }<font></font>
<font></font>
            } elseif ($this->config->get(‘config_stock_display’)) {<font></font>
                $result[‘stock’] = $result[‘quantity’];<font></font>
                $result[‘stock_color’] = “#66aa00”;<font></font>
            } else {<font></font>
                $result[‘stock’] = $this->language->get(‘text_instock’);<font></font>
                $result[‘stock_color’] = “#66aa00”;<font></font>
            }<font></font>
            ]]></add><font></font>
        </operation><font></font>
<font></font>
        <operation><font></font>
            <search><![CDATA[$data[‘products’][] = array(]]></search><font></font>
            <add position=”after”><![CDATA[<font></font>
                ‘quantity’ => $result[‘quantity’],<font></font>
                ‘stock’ => $result[‘stock’],<font></font>
                ‘stock_color’ => $result[‘stock_color’],<font></font>
            ]]></add><font></font>
        </operation><font></font>
<font></font>
    </file><font></font>
    <file path=”catalog/view/theme/*/template/product/category.tpl”><font></font>
        <operation><font></font>
            <search><![CDATA[<?php if ($product[‘rating’]) { ?>]]></search><font></font>
            <add position=”before”><![CDATA[<font></font>
                <div class=”stock-status”><font></font>
                    <span style=”font-weight:bold;color:<?php echo $product[‘stock_color’]; ?>”><?php echo $product[‘stock’]; ?></span><font></font>
                </div><font></font>
            ]]></add><font></font>
        </operation><font></font>
    </file><font></font>
</modification>

在此示例中,您可以通过替换以下两个位置的十六进制颜色值来更改库存状态的颜色:

对于产品页面:

if($data[‘stock’] == ‘Out Of Stock’) {<font></font>
$data[‘stock_color’] = “#8b0707”;<font></font>
} elseif ($data[‘stock’] == ‘Pre-Order’) {<font></font>
    $data[‘stock_color’] = “#ff9900”;<font></font>
} elseif ($data[‘stock’] == ‘2-3 Days’) {<font></font>
    $data[‘stock_color’] = “#e89f23”;<font></font>
} elseif ($data[‘stock’] == ‘Available Soon’) {<font></font>
    $data[‘stock_color’] = “#fb5323”;<font></font>
} elseif ($data[‘stock’] == ‘In Stock’) {<font></font>
    data[‘stock_color’] = “#c5cc1d”;<font></font>
} else {<font></font>
    $data[‘stock_color’] = “#ff0000”;<font></font>
}

对于类别页面:

if($result[‘stock’] == ‘Out Of Stock’) {<font></font>
    $result[‘stock_color’] = “#8b0707”;<font></font>
} elseif ($result[‘stock’] == ‘Pre-Order’) {<font></font>
    $result[‘stock_color’] = “#ff9900”;<font></font>
} elseif ($result[‘stock’] == ‘2-3 Days’) {<font></font>
    $result[‘stock_color’] = “#e89f23”;<font></font>
} elseif ($result[‘stock’] == ‘Available Soon’) {<font></font>
    $result[‘stock_color’] = “#fb5323”;<font></font>
} elseif ($result[‘stock’] == ‘In Stock’) {<font></font>
    $result[‘stock_color’] = “#c5cc1d”;<font></font>
} else {<font></font>
    $result[‘stock_color’] = “#ff0000”;<font></font>
}<font></font>
} elseif ($this->config->get(‘config_stock_display’)) {<font></font>
$result[‘stock’] = $result[‘quantity’];<font></font>
$result[‘stock_color’] = “#66aa00”;<font></font>
} else {<font></font>
$result[‘stock’] = $this->language->get(‘text_instock’);<font></font>
$result[‘stock_color’] = “#66aa00”;<font></font>
}

在这些行中,每个库存状态的颜色设置在库存状态之后,或者换句话说,如下代码:

if($data[‘stock’] == ‘Out Of Stock’) {<font></font>
$data[‘stock_color’] = “#8b0707”;

为缺货状态设置为“缺货”的产品设置#8b0707颜色。请注意,如果您创建了自定义库存状态或重命名了任何库存状态,您还必须修改代码并确保库存状态的新名称与代码中设置的名称匹配:

产品页面:

elseif ($data[‘stock’] == ‘ The-Name-Of-Your-Custom-Status’) {<font></font>
    $data[‘stock_color’] = ” the hex color value code “;

分类页面:

elseif ($result[‘stock’] == ‘The-Name-Of-Your-Custom-Status’) {<font></font><font style=”vertical-align: inherit;”><font style=”vertical-align: inherit;”>
    $result[‘stock_color’] = “十六进制颜色值代码”;</font></font>

使用以下名称保存文件:nameofyourchoice.ocmod.xml并通过扩展安装程序上传。

请注意,只需将两个 OCMOD 修改文件中的一个上传并应用到您的网上商店,因为它们不能一起运行。