Wie füge ich "PHP-Code" in die XML-Manifestdatei eines Joomla-Moduls ein?

7

Ich möchte im Feldsatz eines Joomla-Moduls eine Option mit einigen abgerufenen Ergebnissen aus meiner Datenbank wiedergeben:

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

Ich weiß, dass dieser Code völlig falsch ist (habe ihn nur gepostet, um Ihnen zu zeigen, was ich tun möchte), aber ich habe bereits nach Modulen gesucht, die etwas Ähnliches tun, und festgestellt, dass sie keinen PHP-Code in XML verwenden.

Ich denke, es gibt einen anderen Weg, aber ich kann es alleine nicht verstehen, da ich für die Entwicklung von Joomla und Joomla völlig neu bin.

Danke im Voraus.

IseNgaRt
quelle

Antworten:

5

Versuche dies ,

Normalerweise bietet Joomla alle wichtigen Komponentenkategorien auf XML-zugängliche Weise an.

Zum Beispiel: Sie benötigen ein Dropdown-Menü für die Bannerkategorie, das Sie wie folgt verwenden.

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

Für Inhaltskategorien können Sie etwas wie com_contentanstelle von versuchen com_banners. Überprüfen Sie auch Ihr Menü. Ich bin mir nicht sicher, ob das verfügbar ist oder nicht.

Wenn es nicht da ist, bietet Joomla auch eine andere Möglichkeit, SQLin XMLDateien zu schreiben .

so etwas wie unten.

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

Weitere Details finden Sie hier .

Ich hoffe es hilft.

Jobin Jose
quelle
Weitere XML-Felder finden Sie hier
Jobin Jose
1
Das war wirklich hilfreich. Ich bin mir sicher, dass ich aus der Komponentenliste nichts finde, was zu mir passt, da ich in meinem Modul alle abrufen möchte: Menüs, Untermenüs, Virtuemart-Kategorien und vieles mehr. Ich denke, das Schreiben einer Abfrage ist besser.
4

Ich würde vorschlagen, einen Blick auf http://docs.joomla.org/Creating_a_custom_form_field_type zu werfen, da es so aussieht, als ob Sie versuchen, dies zu erreichen. Während sich das Handbuch möglicherweise auf Komponenten bezieht, kann dies auch mit Modulen funktionieren (ich habe es selbst versucht).

Folgen Sie einfach der Anleitung, aber anstatt Ihre Dateien unter zu platzieren

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

Sie sollten sie an platzieren

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

AKTUALISIEREN

Unter http://docs.joomla.org/Selecting_data_using_JDatabase finden Sie Möglichkeiten zum Abrufen von Daten aus der Joomla-Datenbank. Verwenden Sie diese Option in dem Code, den Sie aus dem vorherigen Link gelernt haben

Epodax
quelle
Ok, ich habe die Schritte ausgeführt und eine Auswahl mit 3 Optionen wie im Beispiel wiederholt, aber es ist völlig anders, eine Auswahl mit abgerufenen Werten aus der Datenbank zurückzugeben.
Aktualisierte meine Antwort, um Ihren Bedürfnissen besser zu entsprechen :)