web-dev-qa-db-fra.com

Comment obtenir un élément de menu pour envoyer un paramètre à un composant?

J'ai des problèmes pour créer une redirection interne à l'aide de MenuItems.

J'ai créé un élément de menu appelé "vente". J'ai trouvé l'élément de menu dans la base de données et l'alias est "vente". J'ai défini l'URL sur/mycomponent? Id = 3 et publié l'élément de menu, mais/sale génère un 404 au lieu de charger/mycomponent? Id = 3.

J'ai remarqué qu'il n'y avait pas de pseudonyme pour les URL externes et qu'il y avait un débat sur la nécessité de l'utiliser pour les URL internes:

http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemEdit&tracker_item_id=29264

Je ne veux pas utiliser le composant Redirect pour cela. Nous avons trois environnements et cela impliquerait la mise en place d'une redirection dans chaque environnement. Si je peux faire fonctionner l'élément de menu, il peut être transféré entre environnements.

Est-il possible de configurer une URL interne à l'aide d'éléments de menu? Si oui, comment cela est-il accessible par alias?

3
ContextSwitch

La solution que j'ai choisie consistait à ajouter le paramètre (id) au fichier default.xml de la vue:

<?xml version="1.0" encoding="utf-8"?>
<metadata>
    <layout title="mycomponent">
        <message>mycomponent message</message>
    </layout>
    <fields name="request">
            <fieldset name="request">
                <field
                    name="id"
                    type="text"
                    label="ID"
                    description="The ID of the item as it appears in the url"
                    default="1"
                >
                </field>
            </fieldset>
        </fields>

</metadata>

De cette façon, j'ai pu créer un élément de menu avec un alias de "vente" et sélectionner mon composant. Ensuite, j'entrerais '3' dans le champ id et/sale rendrait la même chose que si j'avais frappé/mon composant? Id = 3.

5
ContextSwitch

Vous ne pouvez pas réaliser ce que vous essayez sans utiliser un processus de redirection.

C’est-à-dire que l’URL [site]/sale doit être redirigé sur www.google.com (par exemple).

L'utilisation de liens externes ne résoudra pas le problème, car ils sont exactement ce qu'ils sont, ce qui revient à avoir une balise href comme l'un de vos éléments de menu.

Dans Joomla [site]/path, vous trouverez les URL de Joomla Aricles/content/components.

Par conséquent, si un élément de contenu [site]/vente n'existe pas (ou n'est pas lié à un élément de menu publié), vous obtiendrez un 404.

Un autre moyen serait de créer un article appelé Sale, de le pointer avec un élément de menu standard et d’avoir un code de redirection sur cet article.

Mais c’est une façon très laide de le faire.

1
Chamira Athauda

La question me confond un peu. Je ne sais pas ce que vous voulez, mais laissez-moi tenter le coup.

Lorsque vous sélectionnez le type d'élément de menu, vous obtenez des choix en fonction des composants que vous avez installés. Par exemple, si vous sélectionnez "Un seul article", vous devez sélectionner un article pour l'élément de menu à pointer.

Maintenant, dans l'élément de menu, vous verrez un terrible méli-mélo d'URL, commençant par index.php. Pas de problème, car vos visiteurs verront cela uniquement si vous n'avez pas activé la création d'une URL SEF. C'est juste la représentation interne, pas ce que les utilisateurs verront.

Je suppose que tout ce que vous avez là fonctionne de la même manière (si ce n’est pas le cas, trouvez-en un autre car il est cassé). Alors ne vous inquiétez pas pour ça. La seule chose qui compte est ce que Joomla écrit dans le navigateur (ce qui n'est pas nécessairement ce que vous voyez dans la boîte).

Si vous voulez contrôler complètement l'URL d'une page donnée, procurez-vous à peu près tous les générateurs d'URL SEF de JED. Ils font tous ça.

1
Arlen