Konfiguration

Gibt es Dinge, die du konfigurierbar anzubieten planst? Dann ist dieser Teil wichtig für dich. Hier zeige ich dir, wie du eine Konfiguration auf die Joomla! typische Art und Weise zu deiner Komponente hinzufügst.

Joomla! Konfiguration

Für Ungeduldige

Sieh dir den geänderten Programmcode in der Diff-Ansicht an und übernimm diese Änderungen in deine Entwicklungsversion.

// https://github.com/astridx/boilerplate/compare/t8...t9.diff

diff --git a/src/administrator/components/com_foos/config.xml b/src/administrator/components/com_foos/config.xml
new file mode 100644
index 00000000..bbd807ae
-- /dev/null
++ b/src/administrator/components/com_foos/config.xml
@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<config>
	<fieldset
		name="foo"
		label="COM_FOOS_FIELD_CONFIG_INDIVIDUAL_FOO_DISPLAY"
		description="COM_FOOS_FIELD_CONFIG_INDIVIDUAL_FOO_DESC"
		>
		<field
			name="show_foo_name_label"
			type="list"
			label="COM_FOOS_FIELD_FOO_SHOW_CATEGORY_LABEL"
			default="1"
			>
			<option value="0">JNO</option>
			<option value="1">JYES</option>
		</field>
	</fieldset>
</config>
diff --git a/src/administrator/components/com_foos/foos.xml b/src/administrator/components/com_foos/foos.xml
index cb47107a..a9d7b587 100644
-- a/src/administrator/components/com_foos/foos.xml
++ b/src/administrator/components/com_foos/foos.xml
@@ -39,6 +39,7 @@
 		</submenu>
 		<files folder="administrator/components/com_foos">
 			<filename>foos.xml</filename>
			<filename>config.xml</filename>
 			<folder>forms</folder>
 			<folder>language</folder>
 			<folder>services</folder>
diff --git a/src/administrator/components/com_foos/src/View/Foos/HtmlView.php b/src/administrator/components/com_foos/src/View/Foos/HtmlView.php
index 5ddf2d7b..29a8871f 100644
-- a/src/administrator/components/com_foos/src/View/Foos/HtmlView.php
++ b/src/administrator/components/com_foos/src/View/Foos/HtmlView.php
@@ -63,6 +63,8 @@ protected function addToolbar()
 		ToolbarHelper::title(Text::_('COM_FOOS_MANAGER_FOOS'), 'address foo');

 		$toolbar->addNew('foo.add');

		$toolbar->preferences('com_foos');
 	}

 }
diff --git a/src/components/com_foos/src/Model/FooModel.php b/src/components/com_foos/src/Model/FooModel.php
index 7efa1d2e..87caca68 100644
-- a/src/components/com_foos/src/Model/FooModel.php
++ b/src/components/com_foos/src/Model/FooModel.php
@@ -76,4 +76,21 @@ public function getItem($pk = null)

 		return $this->_item[$pk];
 	}

	/**
	 * Method to auto-populate the model state.
	 *
	 * Note. Calling getState in this method will result in recursion.
	 *
	 * @return  void
	 *
	 * @since   __BUMP_VERSION__
	 */
	protected function populateState()
	{
		$app = Factory::getApplication();

		$this->setState('foo.id', $app->input->getInt('id'));
		$this->setState('params', $app->getParams());
	}
 }
diff --git a/src/components/com_foos/tmpl/foo/default.php b/src/components/com_foos/tmpl/foo/default.php
index e5205d7e..87f2a1a2 100644
-- a/src/components/com_foos/tmpl/foo/default.php
++ b/src/components/com_foos/tmpl/foo/default.php
@@ -10,4 +10,9 @@

 use Joomla\CMS\Language\Text;

echo Text::_('COM_FOOS_NAME') . $this->item->name;
if ($this->get('State')->get('params')->get('show_foo_name_label'))
{
	echo Text::_('COM_FOOS_NAME');
}

echo $this->item->name;

Schritt für Schritt

Neue Dateien

src/administrator/components/com_foos/config.xml

src/administrator/components/com_foos/config.xml

<?xml version="1.0" encoding="utf-8"?>
<config>
	<fieldset
		name="foo"
		label="COM_FOOS_FIELD_CONFIG_INDIVIDUAL_FOO_DISPLAY"
		description="COM_FOOS_FIELD_CONFIG_INDIVIDUAL_FOO_DESC"
		>
		<field
			name="show_foo_name_label"
			type="list"
			label="COM_FOOS_FIELD_FOO_SHOW_CATEGORY_LABEL"
			default="1"
			>
			<option value="0">JNO</option>
			<option value="1">JYES</option>
		</field>
	</fieldset>
</config>

Geänderte Dateien

src/administrator/components/com_foos/foos.xml

src/administrator/components/com_foos/foos.xml

...
			<filename>config.xml</filename>
...

src/administrator/components/com_foos/src/View/Foos/HtmlView.php

src/administrator/components/com_foos/src/View/Foos/HtmlView.php

...
  $toolbar->preferences('com_foos');
...

src/components/com_foos/src/Model/FooModel.php

Die populateState-Methode stellt sicher, dass das State-Objekt gefüllt ist und für den gesamten Code zugänglich ist. Wir ergänzen hier für den Site-Bereich den neuen Parameter.

src/components/com_foos/src/Model/FooModel.php

...
	protected function populateState()
	{
		$app = Factory::getApplication();

		$this->setState('foo.id', $app->input->getInt('id'));
		$this->setState('params', $app->getParams());
	}
...

src/components/com_foos/tmpl/foo/default.php

Wir ersetzten echo Text::_('COM_FOOS_NAME') . $this->item->name; mit dem nachfolgenden Text.

src/components/com_foos/tmpl/foo/default.php

...
if ($this->get('State')->get('params')->get('show_foo_name_label'))
{
	echo Text::_('COM_FOOS_NAME');
}

echo $this->item->name;

Teste deine Joomla-Komponente

  1. Installiere deine Komponente in Joomla! Version 4, um sie zu testen:

Kopiere die Dateien im administrator Ordner in den administrator Ordner deiner Joomla! 4 Installation.
Kopiere die Dateien im components Ordner in den components Ordner deiner Joomla! 4 Installation.
Kopiere die Dateien im media Ordner in den media Ordner deiner Joomla! 4 Installation.

Eine neue Installation ist nicht erforderlich. Verwende die aus dem vorhergehenden Teil weiter.

  1. Öffne die Ansicht deiner Komponente im Administrationsbereich und überzeuge dich davon, dass dir rechts oben die Schaltfläche Options angezeigt wird.

Joomla! Konfiguration

  1. Klicke auf Options und stelle die Anzeige des Labels nach deinen wünschen ein.

Joomla! Konfiguration

  1. Öffne als Letztes, die Ansicht im Frontend. Verhält die Anzeige des Labels sich so, wie du das im Administrationsbereich eingestellt hast?

Joomla! Konfiguration

Geänderte Dateien

Übersicht

Vor oder zurück ...