web-dev-qa-db-fra.com

Comment définir la langue dans la soumission d'article Joomla?

J'ai créé un site multilingue dans Joomla. La langue par défaut est l'anglais, la langue seconde est le français.

J'ai créé le module de connexion utilisateur et la soumission d'articles front-end pour le site Web anglais.

J'ai enregistré un utilisateur sur le site anglais (front end) et je me suis connecté. J'ai cliqué sur "Soumettre un article".

Dans la page "Créer un article", la langue est affichée sous la forme "Tous". Je veux que cela soit affiché en tant qu'anglais, car l'utilisateur s'est connecté au site Web anglais.

Si l'utilisateur est connecté au site Web français, Langue doit être automatiquement défini sur Français.

Au lieu de sélectionner la langue manuellement, je souhaite définir automatiquement la langue à laquelle l'utilisateur s'est connecté. La plupart du temps, l'utilisateur oublie de sélectionner la langue.

Je crois qu'un petit morceau de code le fera. Quelqu'un peut-il m'aider s'il vous plaît pour y parvenir?

Cordialement, Ramesh.

1
Keetru Nandhan

Infograf a répondu à cette question.

Selon ses commentaires, j'ai placé le code suivant dans:

/components/com_content/views/form/view.html.php '

après la ligne: $this->form->setFieldAttribute('catid', 'readonly', 'true'); }

// Propose current language as default when creating new article
if (JLanguageMultilang::isEnabled() && empty($this->item->id))
{
$lang = JFactory::getLanguage()->getTag();
$this->form->setFieldAttribute('language', 'default', $lang);
}

Maintenant, cela fonctionne comme prévu.

0
Keetru Nandhan

Vous pouvez créer un remplacement de la vue pour modifier la façon dont le champ de langue est généré.

La vue formulaire actuelle ( components/com_content/views/form/tmpl/edit.php ) contient ce champ, ligne 147:

<div class="tab-pane" id="language">
    <?php echo $this->form->renderField('language'); ?>
</div>

Ainsi, vous pouvez modifier la génération HTML en fonction de JFactory::getLanguage()->getTag().

1
Anibal

Vous pouvez créer les deux liens dans l'interface une pour l'anglais et l'autre pour le français.

<ul class="lang-inline"><br>
<li dir="ltr" class=""><br>
<a href="/fr/">French</a><br>
</li><br>
<li dir="ltr" class="lang-active"><br>
<a href="http://sitepath/en/"><br>
English</a><br>
</li>
</ul>
0
Jextn

Je ne suis pas sûr que nous puissions le faire sans remplacer les fichiers de base. Voici la méthode que j'utilise:

P.S. Ce n'est pas la méthode recommandée car les fichiers de base seront écrasés lors de la mise à jour de Joomla et vous devrez refaire les modifications.

Éditez administrator/components/com_content/models/article.php et trouvez la fonction ci-dessous:

protected function loadFormData()

Et à l'intérieur ci-dessous si la condition

if (empty($data))

Ajouter le code ci-dessous

$data->set('language', JFactory::getLanguage()->getTag());
0
Nagarjun