Posted by Help_me on September 16, 2014 at 9:46pm
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
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
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
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.phpque tiene tu theme y si no tiene la función deNOMBRE-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
<?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
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
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
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:
<?phpfunction 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
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
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
Solucionado gracias ya lo puse solucionar y es verdad esa parte de "mi_tema"
<?phpfunction 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
Solo el código javascript ;)
Ejemplo:
<?phpdrupal_add_js('jQuery(document).ready(function () { alert("Hello!"); });', 'inline');
?>
while(alive){learn();}
buenas con todos perdonen que
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&guid=ON&script=0"/>
</div>
</noscript>
como lo pondria segun este codigo
<?phpfunction 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
<?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
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&guid=ON&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
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
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
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
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
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
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:
field_script(y reutilizaría la misma variable al crear el campo en otros tipos de contenido)template.phpy usando la funciónmitema_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<?phpdrupal_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
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
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
Que me alegro, cualquier duda acá estamos para ayudar ;) éxitos.
Problema con javascrip
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',
),
);
);
hellmorse