web-dev-qa-db-fra.com

Comment insérer du "code php" dans le fichier manifeste .xml d'un module Joomla?

Je veux que le champs d'un module joomla répète une option avec certains résultats récupérés de ma base de données:

<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>

Je sais que ce code est complètement faux (je l'ai juste posté pour vous montrer ce que je veux faire), mais j'ai déjà cherché des modules qui font quelque chose de similaire et j'ai découvert qu'ils n'utilisaient pas de code php dans XML.

Donc, je suppose qu'il y a une autre façon, mais je ne peux pas comprendre moi-même, car je suis complètement nouveau dans le développement de Joomla et Joomla.

Merci d'avance.

7
IseNgaRt

Essaye ça ,

Normalement, Joomla fournit toutes les principales catégories de composants de manière accessible par XML.

Par exemple: vous avez besoin du menu déroulant des catégories de bannières, utilisez simplement comme ci-dessous.

<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> 

Pour les catégories de contenu, vous pouvez essayer quelque chose comme com_content au lieu de com_banners. vérifiez votre menu aussi, je ne suis pas sûr que cela soit disponible ou non.

Si ce n’est pas le cas, Joomla offre une autre possibilité d’écrire SQL dans des fichiers XML.

quelque chose comme ci-dessous.

<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>

plus de détails peuvent être trouvés ici .

J'espère que ça aide.

5
Jobin Jose

Je suggérerais de jeter un oeil sur http://docs.joomla.org/Creating_a_custom_form_field_type Puisqu'il ressemble à ce que vous essayez d'atteindre. Même si le guide fait référence à des composants, il peut également fonctionner avec des modules (je l’ai essayé moi-même)

suivez simplement le guide mais au lieu de placer vos fichiers à

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

Vous devriez les placer à

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

[~ # ~] met à jour [~ # ~]

Voir http://docs.joomla.org/Selecting_data_using_JDatabase pour savoir comment récupérer des données de la base de données Joomla, utilisez-les dans le code que vous avez appris à partir du lien précédent.

4
Epodax