1

我正在开发一个 Joomla 模块,其中可以显示图像并链接到 Joomla 文章、Virtuemart 产品或外部链接。

为了必须选择 Virtuemart 产品,我在模块清单 xml 中添加了以下参数:

<field 
                    name="image_1_product" 
                    type="sql" 
                    default="10"
                    query="SELECT #__virtuemart_products.virtuemart_product_id, #__virtuemart_products_en_gb.product_name
                        FROM #__virtuemart_products, #__virtuemart_products_en_gb
                        WHERE #__virtuemart_products.virtuemart_product_id = #__virtuemart_products_en_gb.virtuemart_product_id
                        AND #__virtuemart_products.published = 1"
                    key_field="virtuemart_product_id"
                    value_field="product_name"
                    label="LABEL_PRODUCT" 
                    description="DESC_PRODUCT">
                </field>

当安装 Virtuemart 时,这工作得很好。未安装 Virtuemart 时,您会收到错误“未知列” - 这是有道理的。

因为这是一个模块清单选项,所以我只能使用 1 个查询。有没有办法在执行选择之前运行查询来检查表是否存在?喜欢:

IF EXISTS TABLE `table_a` (SELECT * FROM table_a)

如果是这样,它可以返回如下一行:

| 编号 | 价值 |

| 0 | 未找到 Virtuemart |

谢谢!

4

1 回答 1

0

恐怕仅使用单个数据库查询是不可能的。

我能想到的唯一解决方法是为您的模块创建一个参数助手并使用addfieldpath您的模块fieldset标签。使用此解决方案,您可以编写一个方法来执行查询并创建输出,然后您可以在创建参数之前检查表是否存在。

例如:

<config>
    <fields name="params">
        <fieldset name="basic" addfieldpath="/modules/mod_mymodule/elements/">
            <field name="image_1_product" type="product" default="10" label="LABEL_PRODUCT" description="DESC_PRODUCT"/>
        </fieldset>
    </fields>
</config>

现在/modules/mod_mymodule/elements/创建一个名为的 PHP 文件product.php,并按照 Joomla 文档中的说明编写您的自定义查询和字段描述。

Joomla 文档可用于自定义参数类型创建自定义模板参数类型

于 2013-04-04T13:59:47.793 回答