it-swarm.com.de

Echo Category-Formularfeldtyptitel in Module

Ich erstelle ein Modul und verwende den Category Form Field Type, wie in den Joomla-Dokumenten hier beschrieben https://docs.joomla.org/Category_form_field_type

Im Modul XML habe ich folgendes verwendet:

<field name="catOne" type="category" extension="com_content" label="Select a category" description="" />
<field name="catTwo" type="category" extension="com_content" label="Select a category" description="" />
<field name="catThree" type="category" extension="com_content" label="Select a category" description="" />
<field name="catFour" type="category" extension="com_content" label="Select a category" description="" />

Wann immer ich diese im Frontend wiedergebe, erhalte ich nur die Kategorie-ID. Wie kann ich den Kategorietitel und die zugehörige URL für jede der oben genannten Variablen wiedergeben?

1
RustyJoomla

Sie haben die ID der Kategorie, also können Sie eine Datenbankabfrage durchführen, um das title zu erhalten:

Holen Sie sich den Titel aus der ID:

// Get the category parameter value 
// Define a default value of 0
$cat_id = $params->get('catOne', 0);

// Get instance of database connection
$db = JFactory::getDbo();

// Query the #__categories table in the database
$query = $db->getQuery(true);
$query->select($db->quoteName('title'))
      ->from($db->quoteName('#__categories'))
      ->where($db->quoteName('id') . ' = '. (int)$cat_id);
$db->setQuery($query);

// Try and get the result
try
{
    $result = $db->loadResult();
}
catch (Exception $e)
{
    // If there is no result, make the variable empty
    $result = '';
}

// Display the result
echo $result;

Einen Link anzeigen:

Um die URL für die Kategorie anzuzeigen, müssen Sie den Router von com_content importieren:

require_once JPATH_SITE . '/components/com_content/helpers/route.php';

$link = JRoute::_('index.php?option=com_content&view=category&layout=blog&id=' . $cat_id);

echo '<a href="' . $link . '">' . $result . '</a>';

Verwenden Sie für mehrere Parameter eine Funktion:

function displayCategoryLink($id)
{
    require_once JPATH_SITE . '/components/com_content/helpers/route.php';

    $db = JFactory::getDbo();

    $query = $db->getQuery(true);
    $query->select($db->quoteName('title'))
          ->from($db->quoteName('#__categories'))
          ->where($db->quoteName('id') . ' = '. (int)$id);
    $db->setQuery($query);

    try
    {
        $result = $db->loadResult();
    }
    catch (Exception $e)
    {
        $result = '';
    }

    $link = JRoute::_('index.php?option=com_content&view=category&layout=blog&id=' . $id);   
    $html = '<a href="' . $link . '">' . $result . '</a>';

    return $html;
}


displayCategoryLink($params->get('catOne', 0));
displayCategoryLink($params->get('catTwo', 0));
displayCategoryLink($params->get('catThree', 0));
displayCategoryLink($params->get('catFour', 0));

Die obige Funktion ist nur grundlegend. Ich würde natürlich vorschlagen, dass Sie die Funktion in eine Klasse einfügen, in eine helper.php -Datei und sie ordnungsgemäß aufrufen

Hoffe das hilft

1
Lodder