2010-11-16 6 views
3

J'ai une vue de composant frontale que j'ai besoin d'inclure un fichier .js dans l'en-tête de (l'en-tête est généré par Joomla, pas codé en dur dans default.php). Le fichier du composant frontal est mysite.com/components/com_arrcard/views/tmpl/default.php; le fichier javascript se trouve sur mysite.com/administrator/components/com_arrcard/js/CalendarPopup.js.

Voici ce que j'ai essayé dans mon default.php:

$document =& JFactory::getDocument(); 
$popUrl = JURI::root(true).'/website/documents/ccv.html'; 
$popImage = JURI::root(true).'/website/documents/cv_card.jpg'; 
$popPhone = JURI::root(true).'/website/documents/phone.html'; 

$document->addScript(JURI::root(true).'/administrator/components/com_arrcard/js/CalendarPopup.js'); 

Le $ popimage et popPhone $ variables se correctement définies, mais le script n'est pas ajouté - quand je regarde la source de la page rendue, CalendarPopup.js n'est nulle part.

Quelqu'un peut-il m'aider? Qu'est-ce que je fais mal ici? J'ai également essayé

$document->addScript('administrator/components/com_arrcard/js/CalendarPopup.js'); 

Cela ne fonctionne pas non plus. Le code addScript fonctionne lorsque vous incluez exactement le même fichier dans une vue du composant com_arrcard administrateur. Y a-t-il une limitation sur l'endroit où addScript fonctionne?

Répondre

2

Votre code a l'air correct. Peut-être essayer une autre méthode ci-dessous, la première ligne est d'inclure JS tandis que l'autre pour CSS (juste au cas où quelqu'un trébucher sur ce sujet à l'avenir à la recherche de css include).

JHTML::script('javascript.js', 'components' . DS . 'com_component' . DS . 'lib' . DS . 'js' . DS); 
JHTML::stylesheet('style.css', 'components' . DS . 'com_component' . DS . 'lib' . DS . 'css' . DS); 

Assurez-vous que vous utilisez le DS (séparateur de répertoire) de sorte que Joomla peut remplir le bon/ou \ en fonction du système d'exploitation du site est en cours d'exécution sur.

Donc, dans votre cas, vous auriez besoin de cette ligne de code:

JHTML::script('CalendarPopup.js', 'administrator' . DS . 'components'. DS .'com_arrcard'. DS .'js'); 
+0

le JHTML :: scénario de travail a fait; J'ai eu la même réponse sur le groupe joomla dev google. Je suis curieux de savoir pourquoi cela fonctionnerait quand l'add-script n'a pas; Y at-il une sorte de limitation sur quand chaque méthode est utilisable? – EmmyS

+0

Je ne suis pas sûr. J'ai utilisé avec succès les deux avant. Avez-vous essayé de placer une URL codée en dur au lieu d'utiliser JURI :: root()? – Martin

+0

Oui, et la même chose arrive. J'ai également utilisé les deux méthodes avant, donc je ne suis pas sûr pourquoi on travaille où l'autre ne l'est pas. – EmmyS

0

Le code que vous publiez devrait fonctionner. Vous pouvez manipuler JDocument à tout moment avant que la page ne soit réellement rendue et renvoyée, cela ne devrait donc pas poser de problème, que vous le fassiez dans le fichier modèle ou dans le contrôleur ou que vous visualisiez les fichiers devrait aller d'un meilleur point de vue MVC).

Assurez-vous dans votre fichier index.php modèle que la balise suivante est inclus:

Il est possible que est dans votre modèle d'administration (par défaut un, probablement), mais pas un modèle personnalisé .. bien cela devrait.

Un autre moyen facile de tester est de changer temporairement votre modèle en rhuk_milkyway pour voir si le code est injecté correctement.