web-dev-qa-db-fra.com

Comment inclure au mieux jQuery Themeroller dans une extension?

Avec J3x, jQuery étant inclus, la moitié de la bataille consistant à inclure facilement Themeroller est prise en charge, mais j'ai toujours du mal à faire en sorte que l'aspect Themeroller fonctionne correctement. J'ai constaté que l'ajout de la balise de script "quelque part" fonctionnait généralement, mais où cette balise de script semble varier - rendre les widgets cassés sauf si c'est "juste avant ou juste après".

Existe-t-il un moyen Joomla-correct d’ajouter correctement Themeroller et tous ses widgets à un composant?

2
GDP

pour inclure des fichiers JS et CSS spécifiques dans un composant, je suis les conseils de Michael Babker:

Utiliser le dossier multimédia, Autoriser les médias pouvant être recouverts

http://www.babdev.com/blog/139-use-the-media-folder-allow-overridable-media

  • dans le dossier de votre composant racine, créez un dossier appelé media
  • à l'intérieur, créez 2 dossiers, css et js N'oubliez pas d'inclure le blanc requis index.html dans tous ces dossiers

  • Modifiez le fichier yourcomponent.xml en conséquence:


<media folder="media" destination="com_yourcomponent">               
    <filename>index.html</filename>                 
    <folder>css</folder>
    <folder>images</folder>              
    <folder>js</folder>
</media>
  • dans /views/yourcomponent/default.php

ou

/views/wtheristhenameofthisfolder/default.php

appelez vos fichiers JS/CSS de cette façon:

JHtml::_('stylesheet', 'com_yourcomponent/yourcss.css', false, true);
JHtml::_('script', 'com_yourcomponent/yourjs.js', false, true);

Bien entendu, vous pouvez utiliser différents scripts JS/CSS pour chacune de vos vues.

J'espère que ça aide.

5
ghazal

Pour vous assurer que la bibliothèque JS sera chargée avec votre composant, vous devez l'inclure dans la vue de votre composant. Quelque chose comme ceci dans votre view.html.php ou le fichier de modèle devrait fonctionner:

JHtml::_('jquery.framework');

Notez que cela inclura jQuery en mode noConflict. Cela garantit également que le cadre ne sera chargé qu'une fois.

Pour charger jQuery en mode normal, utilisez:

JHtml::_('jquery.framework', false);

Mise à jour:

Vous voulez que votre js soit chargé sur la partie vue de votre composant, c’est l’endroit pour l’ajouter. Ainsi, après avoir inclus les frameworks requis, vous incluez également les autres fichiers js et css de la vue.

Pour ajouter à cela, et selon votre façon de faire ou s'il y a une autre raison, vous pouvez créer un fichier d'assistance avec votre propre classe et vos propres méthodes, qui décidera des fichiers js/css à ajouter, basé sur chaque condition. Vous pouvez également envisager d'utiliser le dossier multimédia comme emplacement de votre fichier js/css.

<?php $doc = JFactory::getDocument();
$doc->addScript(JURI::root(true).'/media/com_component/js/myscript.js');
?>


Joomla: Ajout de JS - Documentation

1
FFrewin