Estoy tratando de insertar referencia al archivo Javascript en la cabecera mediante drupal_add_js(). He puesto esta línea dentro de la plantilla de preprocesar la función en template.php. El resultado de que el código no funciona en absoluto: no Hay ninguna secuencia de comandos de enlace en la salida, como debe ser. ¿Alguien puede decirme qué estoy haciendo mal?

function phptemplate_preprocess_page(&$vars) {
    $url = drupal_get_path("theme","mysite");  
    drupal_add_js($url."/jquery.js");  
    drupal_add_js($url."/drupal.js");  

.....

OriginalEl autor Andrew | 2010-04-01

5 Comentarios

  1. -1

    drupal_add_js() funciona, pero se están poniendo profundo en la página de proceso de representación. Le sugiero que ponga en el template.php como usted está haciendo, pero en un principio, fuera de cualquier función. Esto es lo que hicimos en un par de nuestros proyectos.

    Estás en lo correcto. Una vez me lo saco de la función y se coloca fuera de ella en el ámbito global, funciona como un encanto.:) Tengo otra pregunta, sin embargo. sólo puramente conocimiento de causa. Por qué drupal agregar los archivos dos veces desde dos ubicaciones diferentes en la salida?alguna idea? Aquí es cómo se ve –
    <script type=»text/javascript» src=»/drupal/misc/jquery.js?4″></script> <script type=»text/javascript» src=»/drupal/misc/drupal.js?4″></script> <script type=»text/javascript» src=»/drupal/jquery.js?4″></script> <script type=»text/javascript» src=»/drupal/drupal.js?4″></script> Según lo sugerido por el usuario – scott, dejé de usar esos archivos en mi carpeta del tema y se utiliza drupal opciones por defecto. Así que no hay camino mención en drupal_add_js función;en otras palabras, el nombre de archivo – drupal_add_js(‘jquery.js’)
    andew, los 2 archivos automáticamente agregado al tema de drupal. toda la colección de js archivos se añaden a la página de la <?php print $scripts ?> en page.tpl.php
    Me han dicho la misma cosa varias veces. Pero no puedo, parece encontrar en la salida a menos que me agregue manualmente. No sé lo que está mal. :hay que confundir:
    La adición de la convocatoria fuera de cualquier función fuera de cualquier función es mala práctica (se satura el código y hacer que sea más difícil de mantener) y un feo solución. Hay mejores maneras de lidiar con este problema.

    OriginalEl autor Peter Carrero

  2. 10

    Aún más fácil, Javascript, que se carga en todas las páginas se puede agregar en el tema .archivo de información. Ver http://drupal.org/node/171205#scripts.

    +1 muy interesante… el tema de archivo de información es un requisito de drupal 7, el enlace que has publicado también dice que drupal 6 cargas de todos .js archivos de la carpeta del tema por defecto. el drupal_add_js puede ser llamado de módulos e incluso de los nodos si usted tiene el php formato de entrada habilitado…
    No, eso no es totalmente correcto. El .archivo de información de un tema es necesario en Drupal 6 y Drupal 7. D6 sólo de auto-carga el archivo llamado ‘script.js’. D7 no auto-carga de js archivos en todos. Como usted dice, drupal_add_js() se puede llamar desde un nodo, pero que no es recomendable porque usted va a mezclar el contenido con la presentación.

    OriginalEl autor marcvangend

  3. 2
      drupal_add_js(path_to_theme().'/js/jquery.cycle.all.js');
      $vars['scripts'] = drupal_get_js();
    Así que, ¿significa drupal_add_js función no agregar etiqueta de secuencia de comandos? Porque ese era mi comprensión de drupal ayuda. Dijo, yo lo hice como usted sugiere y lo que pasó fue que, añadido los archivos(drupal.js, jquery.js) dos veces. :hay que confundir: he Aquí cómo se veía – <script type=»text/javascript» src=»/drupal/misc/jquery.js?d»></script> <script type=»text/javascript» src=»/drupal/misc/drupal.js?d»></script> <script type=»text/javascript» src=»/drupal/jquery.js?d»></script> <script type=»text/javascript» src=»/drupal/drupal.js?d»></script>
    ¿Agregar este código en phptemplate_preprocess_page?
    drupa.js y jquery.js ya están añadidos por el núcleo de Drupal. Así que la adición a su tema es la creación de duplicados. Es posible eliminar los valores predeterminados, pero no es una buena idea. Si estás usando diferentes versiones, es probable que se rompa algo en Drupal, que se basa en las versiones que vienen con núcleo (lo cual está bien si usted sabe lo que usted está rompiendo y están de acuerdo con eso, pero no parecen saber). Y si estamos usando las mismas versiones, ¿cuál es la razón para actuar con ellos?
    Sí, es en el interior de phptemplate_preprocess_page
    Yo estaba bajo la impresión, así como para el libro que estoy leyendo, no se habla más acerca de agregar esos dos archivos manualmente. Cuando veo la salida a través de mozilla «fuente de la página», no hay ninguna secuencia de comandos de referencia. Así que no tengo elección, pero para añadir de forma manual.

    OriginalEl autor Nikit

  4. 1

    Si el archivo javascript en el directorio del tema, basta con agregar la siguiente a los temas .archivo de información

    scripts[] = myJavaScriptFile.js

    Después de agregar este archivo, usted necesita para desactivar su tema y luego se reactiva.

    OriginalEl autor Conor Mongey

  5. 1

    Como se ha señalado por otros, simplemente usando el drupal_add_js() de un hook_preprocess_page() la aplicación no funciona. Las referencias a los archivos JavaScript recopilada a través de las múltiples llamadas a drupal_add_js() se utilizan para generar el correspondiente marcado en el $scripts variables de template_preprocess_page(). Pero un tema de la implementación de hook_preprocess_page() siempre es llamado después de template_preprocess_page(). Así que para tener los archivos añadidos a través de drupal_add_js() en su .tpl.php archivo(s), usted tiene que reemplazar la ya establecida $scripts variables:

    function THEME_preprocess_page(&$variables)
      drupal_add_js(...);
      $variables['scripts'] = drupal_get_js();
    }

    Pero, usted no debería tener que agregar jquery.js y drupal.js a ti mismo, que ya debería ser hecho automáticamente por el núcleo de Drupal. Si usted necesita para hacerlo usted mismo, entonces algo está roto en su sitio. Puede (re-)agregar los archivos como una solución rápida, pero es mejor que encontrar la causa raíz del problema, ya que es más probable que la creación de otras cuestiones que aún no identificados (o trabajado alrededor sin darse cuenta de ello).

    +1, y también se puede añadir JS archivos en su propio módulo de hook_init() o hook_preprocess() o hook_preprocess_page() aplicación (o similar ganchos).

    OriginalEl autor Pierre Buyle

Dejar respuesta

Please enter your comment!
Please enter your name here