Comunidad de diseño web y desarrollo en internet online

Pasar variables declaradas en php a javascript

Citar            
MensajeEscrito el 28 Abr 2010 07:40 pm
Muy buenas a todos!

Estoy montando una tienda virtual, para un supuesto negocio de mi padre, con Cs-Cart.

El caso es que le estoy haciendo alguna modificación y no con muy buen resultado. Lo que quiero hacer es añadir la posibilidad de visualizar un archivo flash con el mismo nombre que la imagen principal, pero extensión "swf", en caso de que el navegador tenga instalado flash.

Todo funciona, excepto que no soy capaz de capturar el nombre de los archivos de las imágenes y pasárselos al flash embed.

El archivo tpl es el siguiente:

Código PHP :

<script type="text/javascript" src="js/swfobject/swfobject.js"></script>
<div id="flashcontent">

{assign var="th_size" value="30"}
{include file="common_templates/previewer.tpl"}

{if $product.main_pair.icon}
   {assign var="image_pair_var" value=$product.main_pair}
{elseif $product.option_image_pairs}
   {assign var="image_pair_var" value=$product.option_image_pairs|reset}
{/if}

{include file="common_templates/image.tpl" obj_id=$product.product_id images=$image_pair_var object_type="product" class="cm-thumbnails"}

{foreach from=$product.image_pairs item="image_pair"}
   {if $image_pair}
      {include file="common_templates/image.tpl" images=$image_pair object_type="product" class="cm-thumbnails hidden" detailed_link_class="hidden" obj_id="`$product.product_id`_`$image_pair.image_id`"}
   {/if}
{/foreach}

{if $image_pair_var && $product.image_pairs}
   {if $settings.Appearance.thumbnails_gallery == "Y"}
   {strip}
      <ul id="product_thumbnails" class="center jcarousel-skin hidden">
         <li>
            <a class="cm-thumbnails-mini">{include file="common_templates/image.tpl" images=$image_pair_var object_type="product" link_class="cm-thumbnails-mini cm-cur-item" image_width=$th_size show_thumbnail="Y" show_detailed_link=false obj_id="`$product.product_id`_mini" make_box=true}</a>
         </li>
         {foreach from=$product.image_pairs item="image_pair"}
            {if $image_pair}
               <li>
                  <a class="cm-thumbnails-mini">{include file="common_templates/image.tpl" images=$image_pair object_type="product" link_class="cm-thumbnails-mini" image_width=$th_size show_thumbnail="Y" show_detailed_link=false obj_id="`$product.product_id`_`$image_pair.image_id`_mini" make_box=true}</a>
               </li>
            {/if}
         {/foreach}
      </ul>
      {/strip}
      
      {script src="js/jquery.jcarousel.js"}
      <script type="text/javascript">
      //<![CDATA[
      {if $product.image_pairs|count > 2}
         $('#product_thumbnails').show();
         $('#product_thumbnails').removeClass('hidden');
         var i_width = $('.cm-thumbnails-mini').outerWidth(true);
         var c_width = i_width * 3;
         var i_height = $('.cm-thumbnails-mini').outerHeight(true);
         $('#product_thumbnails').jcarousel({$ldelim}
            scroll: 1,
            wrap: 'circular',
            animation: 'fast',
            initCallback: fn_scroller_init_callback,
            itemVisibleOutCallback: {$ldelim}onAfterAnimation: fn_scroller_next_callback, onBeforeAnimation: fn_scroller_prev_callback{$rdelim},
            item_width: i_width,
            item_height: i_height,
            clip_width: c_width,
            clip_height: i_height,
            buttonNextHTML: '<div></div>',
            buttonPrevHTML: '<div></div>',
            buttonNextEvent: 'click',
            buttonPrevEvent: 'click',
            item_count: {$product.image_pairs|count} + 1
         {$rdelim});
         $('.jcarousel-skin').css({$ldelim}'width': c_width + $('.jcarousel-prev-horizontal').outerWidth(true) * 2 + 'px'{$rdelim});
      {else}
         $('#product_thumbnails').show();
      {/if}
      //]]>
      </script>
   {else}
      <div class="center" style="width: {$settings.Thumbnails.product_thumbnail_width}px;">
      {strip}
         <a class="cm-thumbnails-mini">{include file="common_templates/image.tpl" images=$image_pair_var object_type="product" link_class="cm-thumbnails-mini cm-cur-item" image_width=$th_size show_thumbnail="Y" show_detailed_link=false obj_id="`$product.product_id`_mini" make_box=true}</a>
         {foreach from=$product.image_pairs item="image_pair"}
            {if $image_pair}
                  <a class="cm-thumbnails-mini">{include file="common_templates/image.tpl" images=$image_pair object_type="product" link_class="cm-thumbnails-mini" image_width=$th_size show_thumbnail="Y" show_detailed_link=false obj_id="`$product.product_id`_`$image_pair.image_id`_mini" make_box=true}</a>
            {/if}
         {/foreach}
      {/strip}
       </div>
   {/if}
{/if}


</div>

<script type="text/javascript">
// <![CDATA[
var flash = $('image_pair');
alert(flash);
var so = new SWFObject(flash, "frase", "400", "400", "10", "");
so.write("flashcontent");
so.addParam("wmode", "transparent");
// ]]>
</script>


El problema lo tengo en las líneas:

Código PHP :

var flash = $('image_pair');
alert(flash);
var so = new SWFObject(flash, "frase", "400", "400", "10", "");


Muchas gracias a todos

Por astropajo

24 de clabLevel



 

firefox
Citar            
MensajeEscrito el 29 Abr 2010 12:02 am
No puedes incluir una variable de php directo al javascript, son lenguajes distintos, debes abrir las etiquetas de php, de esta manera

Código :

var flash = <?php $('image_pair');  ?>

Por drarock

Claber

705 de clabLevel

3 tutoriales

Genero:Femenino  

Lima, Peru

chrome
Citar            
MensajeEscrito el 29 Abr 2010 02:40 pm
Muchas gracias por tu respuesta!

Lo he probado y sigue sin funcionarme.

La alerta que le he puesto para poder depurarlo, sale sin ningún mensaje y la ruta pasada al flash está en blanco.

El problema creo que puede ser que el archivo con este código es un archivo tpl.

Seguiré probando, pero muchas gracias.

Por astropajo

24 de clabLevel



 

firefox
Citar            
MensajeEscrito el 29 Abr 2010 02:42 pm
Cuando pongo:

Código PHP :

var flash = $('#image_pair');
alert(flash);


el mensaje que sale de la alerta es: "[object Object]"

Por astropajo

24 de clabLevel



 

firefox
Citar            
MensajeEscrito el 29 Abr 2010 06:11 pm
Oh quitale el simbolo #, no se pork lo puse :S, de todas formas ya debes ver tú que el contenido de esa variable es el correcto, sólo recuerda que si la pasas desde php debes usar las etiquetas de php como te indiqué, y verifica que le estés colocando la extensión .swf.

Suerte.

Por drarock

Claber

705 de clabLevel

3 tutoriales

Genero:Femenino  

Lima, Peru

chrome
Citar            
MensajeEscrito el 29 Abr 2010 07:05 pm
Muchas gracias, pero sigo sin hacerlo funcionar.

Probablemente habré probado todas las opciones menos la correcta. He probado lo siguiente:

Código :

var flash = {$product.image_pairs}
alert (flash);


El archivo que se crea con ese archivo .tpl queda así:

Código PHP :

var flash = <?php echo $__tpl_vars['product']['image_pairs']; ?>
alert (flash);


El problema es que esta última parte se crea automáticamente a partir del archivo .tpl

y la ventana de alerta me devuelve:

function Array() {
[native code]
}

Muchas gracias

Por astropajo

24 de clabLevel



 

firefox
Citar            
MensajeEscrito el 01 May 2010 06:45 pm
Yo sigo con lo mio, a ver si me sale o me dejo los ojos en el ordenador.

Ahora he probado esto:

Código PHP :

<script type="text/javascript">
// <![CDATA[
var flash = {$product.image_pairs|count};
alert(flash);
var so = new SWFObject(flash, "frase", "400", "400", "10", "");
so.write("flashcontent");
so.addParam("wmode", "transparent");
// ]]>
</script>


y flash me devuelve "1". Ya se que es un paso pequeño, pero parece mejor que antes.

A ver si consigo que me devuelva la path de la imagen.

Por astropajo

24 de clabLevel



 

firefox
Citar            
MensajeEscrito el 03 May 2010 09:43 pm
Muy buenas a todos!

Sigo con mis "progresos". Ahora he puesto:

Código Javascript :

<script type="text/javascript">
// <![CDATA[
var flash = "{$product.image_pairs.image_path|default:$config.no_image_path}";
alert(flash);
var so = new SWFObject(flash, "frase", "400", "400", "10", "");
so.write("flashcontent");
so.addParam("wmode", "transparent");
// ]]>
</script>


Y la respuesta de la aleta es: "/cscart/images/no_image.gif"

Muchas gracias a todos.

Por astropajo

24 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.