Je construis un module et utilise le type de champ Catégorie, comme indiqué dans la documentation Joomla ici https://docs.joomla.org/Category_form_field_type
Dans le module XML, j'ai utilisé ce qui suit:
<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="" />
Chaque fois que je fais écho à ceux-ci dans l'interface, je reçois simplement l'ID de la catégorie. Comment puis-je faire écho au titre de la catégorie et à l'URL associée pour chacune des variables ci-dessus?
Vous avez l'ID de la catégorie, vous pouvez donc effectuer une requête dans la base de données pour obtenir le title
, comme suit:
// 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;
Pour afficher l'URL de la catégorie, vous devez importer le routeur de com_content:
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>';
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));
La fonction ci-dessus est simplement basique. Je suggérerais bien sûr que vous mettiez la fonction dans une classe, dans un fichier helper.php et que vous l'appeliez correctement
J'espère que cela t'aides