como agragar scripts en la etiqueta head

Events happening in the community are now at Drupal community events on www.drupal.org.
Help_me's picture

Buenas con todos.

Tengo un pequeño inconveniente que no se como resolver, bueno pues lo que quiero es poner un script de convenciones de facebook dentro de la etiqueta head lo cual el drupal no tiene etiquetas, pues quiero poner un código en una pagina especifica (nodo especifico).

pues eh probado este modulo "Add To Head" pero no me sirve no si se alguien tenga un modulo que no
requiera 2 o 3 módulos para funcionar o si no un código php para que solo cargue en un nodo por favor necesito ayuda gracias

Comments

Agregar JS al head

rodolfo.flavio's picture

Puedes utilizar el módulo Js Injector https://www.drupal.org/project/js_injector para cuando sean JavaScript

@rodolfo_flavio
Ciudad de Panamá

Hacer un hook form, validas

alejandro_oses's picture

Hacer un hook form, validas que el argumento tipo nodo , validas que el nid y luego inyectas el js usando drupal_add_js - https://api.drupal.org/api/drupal/includes%21common.inc/function/drupal_...

No uses módulos para todo, recarga tu sitio y estas lleno de cosas innecesarias, ps no te da flexibilidad

function

FAAREIA's picture

function NOMBRE-DEL-THEME_preprocess_html(&$variables) {
  $theme_ruta = path_to_theme();

  if ($nodo = menu_get_object()) {
    if ($nodo->nid == 7) {
      drupal_add_js('https://maps.googleapis.com/maps/api/js?v=3&sensor=false', array('type' => 'external', 'group' => JS_LIBRARY));
      drupal_add_js($theme_ruta . '/js/gmap.js', array('group' => JS_THEME));
    }
  }
}

Metete al archivo template.php que tiene tu theme y si no tiene la función de NOMBRE-DEL-THEME_preprocess_html, creala y mandale el código de arriba cambiadole las rutas a los archivos JS.
Remplaza "NOMBRE-DEL-THEME" por el nombre del tu theme.
Esto puedo servirte también: https://www.drupal.org/node/171213

Saludos

Usa template_preprocess_node

w4lt3r's picture

<?php
// @file template.php

// Implements template_preprocess_node().
function mitema_preprocess_node(&$variables) {
  if (
$variables['nid'] == id_nodo) {
   
drupal_add_js('codigo javascript', array('type' => 'inline'));
  }
}
?>

La función que te coloque con anterioridad debe ir dentro del archivo template.php

Gracias

Help_me's picture

Muchas gracias por ayudarme con este tema muchas gracias.

No entiendes realmente algo a menos que seas capaz de explicárselo a tu abuela

Error

Help_me's picture

Buenas w4lt3r.

Tengo un problema puse ese codigo que me diste en el template.php
y ahora no imprime ningun contenido sale todo el contenido en blanco como si no hubiera contenido no se que paso todo se desconfiguro no reconoce ni el front como tipo de contenido ni nada.

ya borre el codigo pero igual no me muestra nada. que puedo hacer no tengo ni la menor idea porfavor nesecito ayuda

No entiendes realmente algo a menos que seas capaz de explicárselo a tu abuela

Que raro

camilo 1990's picture

Si borraste el código todo no debería haber arrojado un error, te fijaste bien en no haber borrado una "{}" llave o algo así?.

Trata de ingresar como admin del sitio y limpia el cache del sitio.

Sobre el código me imagino que realizaste el reemplazo:

<?php
function mitema_preprocess_node(&$variables) { // REMPLAZA mi_tema por el nombre de tu template actual
   
if ($variables['nid'] == id_nodo) { // reemplaza id_nodo por el id del nodo , tiene que ser un n'umer 1 - 2 - 3
       
drupal_add_js('codigo javascript', array('type' => 'inline'));
    }
}
?>

Lo que no entiendo es que si

Help_me's picture

Lo que no entiendo es que si yo tengo un backup de todos los archivos de este sitio que estoy administrando.
eh remmplazado el template.php por el anterior que no estaba modificado y nada ya limpie el cache y sigue igual eh puesto mi sitio en mantenimiento porque no puedo permitir que nadie entra a la pagina para que vea ese desastre y algo mas mi theme o tema esta en la carpeta themes y no en sites porque asi lo hizo el tio que hizo la pagina
simplemente no entiendo que pasa

No entiendes realmente algo a menos que seas capaz de explicárselo a tu abuela

porque no te fijas en el log

tomas.souto's picture

porque no te fijas en el log de apache para ver que error te esta enviando y seguramente tambien te dira el archivo y el problema...

Por otro lado, prefiero siempre crear un modulo custom para hacer estos "arreglos" de codigo, los files js/css los agregas con drupal_add_js/drupal_add_css en un hook_init() del modulo. De esta forma si algo anda mal solo desactivas tu custom module.

En fin, fijate en el log de apache o en el del mismo drupal si puedes llegar a él (no se que tanto se te rompe)

Tomás Souto
Skype: tomas.souto

Baireswebdesign.com
Digital Agency - Web Design and Development
baireswebdesign.com

Solucionado gracias ya lo

Help_me's picture

Solucionado gracias ya lo puse solucionar y es verdad esa parte de "mi_tema"

<?php
function mitema_preprocess_node(&$variables) { // REMPLAZA mi_tema por el nombre de tu template actual
   
if ($variables['nid'] == id_nodo) { // reemplaza id_nodo por el id del nodo , tiene que ser un n'umer 1 - 2 - 3
       
drupal_add_js('codigo javascript', array('type' => 'inline'));
    }
}
?>

no lo habia reemplazado por el nombre de mi tema pero bueno gracias por todo.

tengo una ultima pregunta en donde dice 'codigo javascript' pongo primero <> "script" o pongo function(); ?

No entiendes realmente algo a menos que seas capaz de explicárselo a tu abuela

Solo el código javascript

rpayanm's picture

Solo el código javascript ;)

Ejemplo:

<?php
drupal_add_js
('jQuery(document).ready(function () { alert("Hello!"); });', 'inline');
?>

while(alive){learn();}

buenas con todos perdonen que

Help_me's picture

buenas con todos perdonen que siga insistiendo con este tema pero tengo un pregunta si tengo que insertar un script masomenos asi

<script type="text/javascript">
/* <![CDATA[ /
var google_conversion_id = 1071384443;
var google_conversion_language = "en";
var google_conversion_format = "3";
var google_conversion_color = "ffffff";
var google_conversion_label = "zdGpCNGHigoQ-47w_gM";
var google_remarketing_only = false;
/
]]> */
</script>
<script type="text/javascript" src="//www.googleadservices.com/pagead/conversion.js">
</script>
<noscript>
<div style="display:inline;">
<img height="1" width="1" style="border-style:none;" alt="" src="//www.googleadservices.com/pagead/conversion/1071384443/?label=zdGpCNGHigoQ-47w_gM&amp;guid=ON&amp;script=0"/>
</div>
</noscript>

como lo pondria segun este codigo
<?php
function mitema_preprocess_node(&$variables) { // REMPLAZA mi_tema por el nombre de tu template actual
   
if ($variables['nid'] == id_nodo) { // reemplaza id_nodo por el id del nodo , tiene que ser un n'umer 1 - 2 - 3
       
drupal_add_js('codigo javascript', array('type' => 'inline'));
    }
}
?>

No entiendes realmente algo a menos que seas capaz de explicárselo a tu abuela

<?phpfunction

tomas.souto's picture

<?php
function mitema_preprocess_node(&$variables) { // REMPLAZA mi_tema por el nombre de tu template actual
   
if ($variables['nid'] == id_nodo) { // reemplaza id_nodo por el id del nodo , tiene que ser un n'umer 1 - 2 - 3
       
drupal_add_js('
       
         /* <![CDATA[ /
                  var google_conversion_id = 1071384443;
                 var google_conversion_language = "en";
               var google_conversion_format = "3";
                  var google_conversion_color = "ffffff";
                  var google_conversion_label = "zdGpCNGHigoQ-47w_gM";
                 var google_remarketing_only = false;
           / ]]> */       
        '
, array('type' => 'inline'));
     
     
drupal_add_js('http://www.googleadservices.com/pagead/conversion.js', array('type' => 'external'));
    }
}
?>

El noscript no lo pondria, o sino usa drupal_add_html_head()

Tomás Souto
Skype: tomas.souto

Baireswebdesign.com
Digital Agency - Web Design and Development
baireswebdesign.com

Gracias por tu apoyo la

Help_me's picture

Gracias por tu apoyo la verdad que en programacion soy muy novato muchas gracias.
entonces quedaria asi aver dime si esta correcto por favor.

<?php
function mitema_preprocess_node(&$variables) { // REMPLAZA mi_tema por el nombre de tu template actual
   
if ($variables['nid'] == 665) { // reemplaza id_nodo por el id del nodo , tiene que ser un n'umer 1 - 2 - 3
       
drupal_add_js('
      
         /* <![CDATA[ <em>/
          var google_conversion_id = 1071384443;
         var google_conversion_language = "en";
           var google_conversion_format = "3";
          var google_conversion_color = "ffffff";
          var google_conversion_label = "zdGpCNGHigoQ-47w_gM";
         var google_remarketing_only = false;
       /</em> ]]> */      
        '
, array('type' => 'inline'));
    
     
drupal_add_js('http://www.googleadservices.com/pagead/conversion.js', array('type' => 'external'));
     
  
drupal_add_html_head('<noscript>
<div style="display:inline;">
<img height="1" width="1" style="border-style:none;" alt="" src="//www.googleadservices.com/pagead/conversion/1071384443/?label=zdGpCNGHigoQ-47w_gM&amp;guid=ON&amp;script=0"/>
</div>
</noscript>'
);
    }
}
?>

espero que este correcto y una pregunta mas este codigo se puede repetir para diferentes nodos sin problemas veradad?

No entiendes realmente algo a menos que seas capaz de explicárselo a tu abuela

Ante todo, fijate la

tomas.souto's picture

Ante todo, fijate la referencia sobre drupal_add_html_head, no se le pasa un codigo en si sino que espera un array.

Por otro lado, para mi esta mal lo que haces de ponerle el NID fijo de un nodo, a lo sumo lo haria por tipo de nodo (content type), pero poner nids no es algo demasiado coherente salvo que sea uno y ni así lo haria.

En todo caso, podrias agregarle un field (checkbox) a tu content type y los nodos que tengan ese field en 1 que impriman el codigo que necesitas...

Tomás Souto
Skype: tomas.souto

Baireswebdesign.com
Digital Agency - Web Design and Development
baireswebdesign.com

Y en todo caso, si vas a

tomas.souto's picture

Y en todo caso, si vas a seguir con los NIDS, no repitas el código, usa in_array en la condición

$nids = array(665, 984, 433, 234);

if (in_array($variables['nid'], $nids)) {

En lugar de

if ($variables['nid'] == 665) {

Tomás Souto
Skype: tomas.souto

Baireswebdesign.com
Digital Agency - Web Design and Development
baireswebdesign.com

si entiendo, pero el punto

Help_me's picture

si entiendo, pero el punto esta que ese codigo de google no es igual para todas las paginas tengo 4 paginas que contar y tengo 3 idiomas en mi pagina web. en total tengo 12 paginas que contar y son diferentes codigos por cada 1

No entiendes realmente algo a menos que seas capaz de explicárselo a tu abuela

Creo que os estáis complicando

alvar0hurtad0's picture

Si el problema es poner metatags para que facebook lea bien el contenido yo usaría algún módulo que me de la solución.

No sé exactamente qué pasa pero yo investigaría:

https://www.drupal.org/project/opengraph_meta
https://www.drupal.org/project/metatag

Y seguiría investigando por ahí.

Que tengas un buen día / Have a great Day

gracias por responder pero lo

Help_me's picture

gracias por responder pero lo que estoy intentando exactamente es poner scripts en el head de un nodo especifico.
tengo esos modulos instalados pero no hay ninguna opcion para agregar scripts gracias por la intencion =D
(otra cosa es "have a nice day" )

No entiendes realmente algo a menos que seas capaz de explicárselo a tu abuela

Hola! Bueno por lo que

w4lt3r's picture

Hola! Bueno por lo que entiendo cada nodo tiene su código javascript personalizado y a parte lo quieres colocar entre las etiquetas header verdad? si es así el caso yo haría lo siguiente:

  • Suponiendo que la adición del código javascript puede suceder en cualquier tipo de contenido, a todos les crearía un campo llamado Script y nombre máquina sería field_script (y reutilizaría la misma variable al crear el campo en otros tipos de contenido)
  • Ya teniendo los campos creados en todos los tipos de contenido haría lo siguiente dentro del archivo template.php y usando la función mitema_preprocess_node:
    <?php
       
    function mitema_preprocess_node(&$variables) {
          if (!empty(
    $variables['field_script']) {
           
    drupal_add_js($variables['field_script'][0]['value'], array('type' => 'inline', 'scope' => 'header'));
          }
        }
     
    ?>

    Ok, que es lo que sucede con la condición ! empty() verifico que la variable este definida y que su valor no este vacío; en caso de cumplirse la condición, ejecuto el código interno.

Ahora bien, por lo general la estructura para un campo de tipo texto largo (textarea) es como la que te muestro arriba que indica el "0", pues el indice de ese valor, me explico, al momento de crear tu campo textarea, el wizar te pregunta cuantos valores puede ingresar el usuario 1, 2, 3, .... ilimitado, dependiendo de la cantidad de veces que hayas permitido reutilizar ese campo en ese nodo, deberás ajustar la lógica de tu código para acceder a cada uno de esos valores; ahora si tan solo le permites ingresar un único valor, pues el indice siempre va a ser 0. El indice ['value'] Obtiene el texto en bruto, osea, no pasa por ningún filtro; debes tener mucho cuidado con esto ya que si el contenido de ese campo lo va a llenar gente agena a la empresa puede ocasionar un gran fallo de seguridad, pero si el contenido de esa variable siempre vas a ser tu o alguien en quien confíes no hay problema.

Y ya para finalizar si deseas saber como viene la estructura "el array" coloca el siguiente código antes de la sentencia if

<?php
drupal_set_message
('<pre>' . print_r($variables, TRUE) . '</pre>');
?>

Cualquier duda con gusto te respondo, solo perdona si no es el momento, pero últimamente he estado algo presionado jajajajaja éxitos y me cuentas.

Para poner todo el código

rpayanm's picture

Para poner todo el código javascript en un fichero(estará en js/script.js) que está situado en la carpeta de tu tema y situar este script en el header de la página:

<?php
$script
= drupal_get_path('theme', 'NOMBRE_DEL_TEMA') . 'js/script.js';

drupal_add_js($script, array('scope' => 'header');
?>

while(alive){learn();}

w4lt3r

Help_me's picture

Muchas gracias w4lt3r me sirve el codigo me salvaste grande capo!

No entiendes realmente algo a menos que seas capaz de explicárselo a tu abuela

Que me alegro, cualquier duda

w4lt3r's picture

Que me alegro, cualquier duda acá estamos para ayudar ;) éxitos.

Problema con javascrip

rbarriosh's picture

Buenas tardes, que tal a todos.

Soy nuevo en el mundo de drupal y tengo el siguiente problema para ver si pueden ayudarme

La llamada del JQuery no funciona he probado varios pero ninguno me funciona y no se porque, no se que pueda estar haciendo mal.

Muchas gracias por su ayuda..

$form['salida']['kilometraje'] = array(
'#type' => 'textfield',
'#title' => t('kilometraje'),
'#size' => 15,
'#default_value' => isset($form_state['values']['kilometraje']) ? $form_state['values']['kilometraje'] : ' ',
'#required' => TRUE,
'#prefix' => '

<

table>

',
'#suffix' => '

',
'#ajax' => array(
'callback' => 'ajax_srv_salida_kilometraje_callback',
'wrapper' => 'markup',
'event' => 'change',
),
);

if(!empty($form_state['values']['kilometraje'])){   

    $km = srv_consulta_ultimo_registro_km();
    $km_ing = $form_state['values']['kilometraje'];             

    if(intval($km['0']) >= intval($km_ing)){

        $leyenda = '<h2 style="text-align: center;"><strong><span style="color: #ff0000;">EL KILOMETRAJE INGRESADO ES MENOR AL ULTIMO REGISTRO</span></span></strong></h2>';

          drupal_add_js('jQuery(document).ready(function () { alert("Hello!"); });',
array('type' => 'inline', 'scope' => 'footer', 'weight' => 5)

);

    }   
}

hellmorse

Latin America

Group categories

Latin America

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds: