如何在VirtueMart管理面板产品定价中添加新的价格字段

时间:2017-04-27 06:25:37

标签: joomla virtuemart

Joomla 3.6.5,VirtueMart 3.0.18

我想知道是否有任何开发人员可以给我一个想法?任何帮助都会非常感激!

我的客户根据他的需求希望在管理面板中添加一个输入框字段,该字段将包含产品的目录价格。请不要问为什么..

1.此字段将保存在名为 catalog_price decimal(15,2)

的新列的 jos_virtuemart_product_prices 表中
  1. 此字段将独立于任何calc-tax规则,;) ,,此后面exaclty中此字段中插入的价格将插入到jos_virtuemart_product_prices表中新列catalog_price

  2. 目标是此字段将显示在税前删除价格的前面

  3. 到目前为止,我已经完成了以下工作,

    1. 在jos_virtuemart_product_prices表中完成新列catalog_price decimal(15,2)
    2. 的管理面板中完成了保存新目录价格的新输入框

      管理员\部件\ com_virtuemart \视图\产品\ TMPL \ product_edit_price.php

      下一步是我要在db中保存那个价格...其中是保存 - 提交类?? ??函数?? post方法?? 我很困惑!! : - [: - [请帮助一些人!!

      提前谢谢

1 个答案:

答案 0 :(得分:0)

使用自定义字段,这些字段的工作方式相同,但如果需要,请按照以下方法操作。

我有类似的请求。我需要添加新字段才能显示与产品相关的YouTube视频。

我做的是:

数据库表中的新字段

更改我们需要添加新字段的数据库表。 我必须做的是,我需要一些产品的自定义信息,如YouTube视频或其他一些可下载内容等。因此在表格中创建了一个字段product_youtube_link | varchar=128

abcd_virtuemart_products (这里abcd是我的桌子预标题)

在VM管理员的前端显示表格字段

进入下一页(因为我想在产品 - >自定义字段下的后端/管理员视图中显示此字段)。

  website/administrator/components/com_virtuemart/views/product/tmpl/product_edit_custom.php

我添加了以下代码行:

<fieldset style="background-color:#F9F9F9;">
    <legend>Installation Guide</legend>
    YouTube URL like this: http://www.youtube.com/watch?v=nwgLvK830xI 
    <div style="width: auto;">
        <input type="text" size="40" name="product_youtube_link" id="product_youtube_link" value="<?php echo $this->product->product_youtube_link; ?>" />
    </div>
 </fieldset>

这将显示在产品 - >自定义字段下的输入 - 在Virtuemart 3.x.x中

到目前为止,它没有显示数据库中的任何值(我在phpMyAdmin中为一个特定产品手动添加了一些内容)。

为了使这个字段可读,可编辑或删除,我们必须做很多工作。 :)

不要害怕。这是最简单的工作:

在以下文件中。

website/administrator/components/com_virtuemart/helpers/shopfunctions.php

并在第980行找到了一个函数getValidProductFilterArray() ...。并在$ filterArray值的末尾添加了数据库字段标题。

此数组现在应该结束:

之前

.....&#39; pc.ordering&#39);

<强>后

.....&#39; pc.ordering&#39;,&#39; product_youtube_link &#39;);

现在刷新VM管理员面板中的产品视图。哇,我的数据库值在那里(我手动添加的)

测试该值是否确实有效。我在VM Administrator面板的产品视图中更改了前端的值。保存该产品,并更新该值。我打开phpMyAdmin,然后更新了。

如何在网站前端显示此值。

我需要在产品详细信息下显示。

因为我正在使用模板覆盖。所以

website/templates/mytemplate/html/com_virtuemart/productdetails/default.php

或者如果不使用覆盖,则在vm ..的defualt模板详细信息页面中

website/components/com_virtuemart/views/productdetails/tmpl/default.php

我添加了以下行

<?
if (!empty($this->product->product_youtube_link)) {
    echo $this->product->product_youtube_link;
  } 
?>

这些数据出现在前端。