web-dev-qa-db-ja.com

Joomlaモジュールの.xmlマニフェストファイル内に「phpコード」を挿入する方法

Joomlaモジュールのフィールドセットで、dbからフェッチした結果を含むオプションをエコーし​​ます。

<config>
<fields name="params">
<fieldset name="basic">
<field>
<?php

$db =& JFactory::getDBO();
$query = $db->getQuery(true);
$query->select('*');
$query->from('#__menu_types'); 

$db->setQuery($query);
$options = $db->loadObjectList();
echo "<select>";
echo "<option value=''>select a category</option>";
foreach($options as $row) { 

   echo "<option value='" . $row->id ."'>" . $row->title . "</option>";

   }
   echo "</select>";
?>
</field>
</fieldset>

私はこのコードが完全に間違っていることを知っています(私がやりたいことを示すために投稿しただけです)が、同様のことをするモジュールをすでに検索しており、xml内でphpコードを使用していないことがわかりました。

だから私は別の方法があると思いますが、私はJoomlaとJoomla開発に完全に新しいので、自分では理解できません。

前もって感謝します。

7
IseNgaRt

これを試して 、

通常、Joomlaはすべての主要なコンポーネントカテゴリをXMLアクセス可能な方法で提供します。

例:バナーカテゴリのドロップダウンが必要な場合は、以下のように使用します。

<field
                    name="catid"
                    type="category"
                    extension="com_banners"
                    label="JCATEGORY"
                    multiple="true" size="5"
                    default=""
                    description="Your desc" >
                    <option value="">JOPTION_ALL_CATEGORIES</option>
                </field> 

コンテンツカテゴリについては、com_content の代わりに com_banners。メニューも確認してください。利用できるかどうかはわかりません。

ない場合、JoomlaはSQLファイルにXMLを書き込む別のオプションを提供します。

以下のようなもの。

<field name="myfield" type="sql" default="10" label="Select an article" query="SELECT id, title FROM #__content" key_field="id" value_field="title" required="true">
<option value="">Please select your option</option>
</field>

詳細は here を参照してください。

それが役に立てば幸い。

5
Jobin Jose

http://docs.joomla.org/Creating_a_custom_form_field_type を見てみることをお勧めします。ガイドはコンポーネントを参照している場合がありますが、これはモジュールでも機能します(私は自分で試しました)

単にガイドに従ってくださいが、ファイルを

/administrator/components/<name of your component>/models/fields/<name of your field>.php

あなたはそれらを

/modules/<name of your module>/models/fields/<name of your field>.php

[〜#〜]更新[〜#〜]

Joomlaデータベースからデータを取得する方法については http://docs.joomla.org/Selecting_data_using_JDatabase を参照してください。前のリンクから学習したコードでこれを使用してください

4
Epodax