diff --git a/site/elements/civieventtypes.php b/site/elements/civieventtypes.php
new file mode 100644
index 00000000..e31bf96f
--- /dev/null
+++ b/site/elements/civieventtypes.php
@@ -0,0 +1,84 @@
+value;
+ $name = $this->name;
+
+ // Initiate CiviCRM
+ define('CIVICRM_SETTINGS_PATH', JPATH_ROOT . '/' . 'administrator/components/com_civicrm/civicrm.settings.php');
+ require_once CIVICRM_SETTINGS_PATH;
+
+ require_once 'CRM/Core/ClassLoader.php';
+ CRM_Core_ClassLoader::singleton()->register();
+
+ require_once 'CRM/Core/Config.php';
+ $config = CRM_Core_Config::singleton();
+
+ $groupIdForEventTypes = $this->getGroupIdForEventTypes();
+
+ $eventTypeResults = \Civi\Api4\OptionValue::get(TRUE)
+ ->addWhere('option_group_id', '=', $groupIdForEventTypes)
+ ->execute();
+ $eventTypes = iterator_to_array($eventTypeResults);
+
+ $options = array();
+ $options[] = JHTML::_('select.option', '', ''); // Add an empty first option
+ foreach ($eventTypes as $eventType) {
+ $options[] = JHTML::_('select.option', $eventType['value'], $eventType['label']);
+ }
+
+ return JHTML::_('select.genericlist', $options, $name, NULL, 'value', 'text', $value);
+ }
+
+ private function getGroupIdForEventTypes()
+ {
+ $groupIdResults = \Civi\Api4\OptionGroup::get(TRUE)
+ ->addSelect('id')
+ ->addWhere('name', '=', 'event_type')
+ ->execute();
+ $groupIdForEventTypes = current(iterator_to_array($groupIdResults))['id'];
+
+ return $groupIdForEventTypes;
+ }
+}
+
diff --git a/site/views/Events/tmpl/eventlisting.xml b/site/views/Events/tmpl/eventlisting.xml
index 2f79c675..ff7013d5 100644
--- a/site/views/Events/tmpl/eventlisting.xml
+++ b/site/views/Events/tmpl/eventlisting.xml
@@ -16,16 +16,15 @@
List of all active, current, public events.
Event Listing
-
+