在OpenCart 2.x.x.x admin(OCmod)中使必需的模型字段可选

时间:2015-11-12 19:46:07

标签: php xml opencart opencart2.x

我试图通过在OpenCart版本2.0.1.1中编写以下OCmod来使OpenCart中的必需模型字段成为可选项。

<modification>
    <name>Remove required model (OC 2.0+)</name>
    <version>v1.0</version>
    <link>http://www.example.com</link> 
    <author>John Doe</author>
    <code>fv16343000</code>

    <!-- Remove required "Model" from Product controller -->
    <file path="admin/model/catalog/product.php">
    <operation>
        <search><![CDATA[if ((utf8_strlen($this->request->post['model']) < 1) || (utf8_strlen($this->request->post['model']) > 64)) {]]></search>
        <add position="replace"><![CDATA[if (utf8_strlen($this->request->post['model']) > 64) {]]></add>
    </operation>
    </file>
</modification>

如您所见,我的目标是更换条件,使其忽略最小长度。

我还修改了product_form.tpl(删除了form-group旁边的“required”类):

      <div class="form-group">
        <label class="col-sm-2 control-label" for="input-model"><?php echo $entry_model; ?></label>
        <div class="col-sm-10">
          <input type="text" name="model" value="<?php echo $model; ?>" placeholder="<?php echo $entry_model; ?>" id="input-model" class="form-control" />
          <?php if ($error_model) { ?>
          <div class="text-danger"><?php echo $error_model; ?></div>
          <?php } ?>
        </div>
      </div>

然后我尝试添加没有模型的产品,星号消失但错误仍然弹出(说我需要用至少1个字符到最多64个字符来完成字段)。

我认为我的OCmod可能不够好所以我尝试直接编辑控制器product.php,如OCmod所示。错误仍然存​​在,所以我完全删除了条件和.tpl中的以下代码:

  <?php if ($error_model) { ?>
  <div class="text-danger"><?php echo $error_model; ?></div>
  <?php } ?>  

删除bootstrap类工作(不显示星号,因此它可以工作)但由于某种原因,即使控制器中的条件消失,该字段仍然是必需的。

我做错了什么?如何使模型字段可选?

3 个答案:

答案 0 :(得分:1)

应用vQmod后,您覆盖的文件将被重写为 vqcache 文件夹以及修改。因此,更改原始文件不再生效。

通过删除 vqcache 文件夹中的相应文件来清除vQmod缓存。您还可以检查同一文件夹中的文件,以确保最近的mod已生效。

现在继续你想要做的事情,删除长度限制。要实现这一点,只需将if语句替换为if (false){,以确保它永远不会触发。

答案 1 :(得分:0)

我设法通过使用OCmod解决了我的问题。删除模型的正确方法是:

<!-- Remove required class from register.tpl-->
<file path="admin/view/template/catalog/product_form.tpl">
<operation>
    <search offset="1" index="2"><![CDATA[<div class="form-group required">]]></search>
    <add position="replace"><![CDATA[<div class="form-group">]]></add>
</operation>
</file>
<!-- Comment the error line from the controller-->
<file path="admin/controller/catalog/product.php">
<operation>
    <search><![CDATA[$this->error['model'] = $this->language->get('error_model');]]></search>
    <add position="replace"><![CDATA[//$this->error['model'] = $this->language->get('error_model');]]></add>
</operation>
</file>

此代码也可用作VQmod(如果在此之前使用正确的标记)。

对于那些不了解OCmods如何运作并且仍然想要删除强制模型的人,您需要做什么:

  • 打开admin / view / template / catalog / product_form.tpl
  • 搜索与模型字段相关的<div class="form-group required">并移除required
  • 打开admin / controller / catalog / product.php文件
  • 寻找此行:$this->error['model'] = $this->language->get('error_model');
  • 发表评论

你已经完成了。

答案 2 :(得分:-1)

我开发了一个免费扩展程序,在添加产品时使模型字段可选。我希望这就是你要找的东西 - http://www.opencart.com/index.php?route=extension/extension/info&extension_id=25426

乔尔