javascript metido en un php, help

voipster

VoIP enthusiast
Se incorporó
2 Julio 2007
Mensajes
353
Estimados, tanto tiempo, saludos a todos.

Hace varios dias intento resolver un tema en mi pagina web que me tiene tostado, es algo sencillo para quien cacha de programacion, lo que no es mi fuerte, ojala alguien me pueda echar una mano.

El codigo a continuacion, muestra el nombre de un producto y el link le lleva a una imagen, que se abre en una nueva ventana:

Código:
<a href="'.HTTPS_CATALOG_SERVER.DIR_WS_CATALOG_IMAGES. $order->products[$i]['image'] .'"target=_blank">' . $order->products[$i]['name'];

Hasta ahi todo bien. Lo que necesito, es que en vez que se abra en una ventana nueva (_blank) se abra en un popup con determinados parametros (height/width),

He tratado con dos variantes sin resultados:

Código:
<a href='javascript:window.open("'.HTTPS_CATALOG_SERVER.DIR_WS_CATALOG_IMAGES. $order->products[$i]['image'] .'","_blank","height=600, width=1100, status=yes, toolbar=no, menubar=no");;void(0)'">' . $order->products[$i]['name'];

Código:
<a onclick="window.open('.HTTPS_CATALOG_SERVER.DIR_WS_CATALOG_IMAGES. $order->products[$i]['image'] .','imagen','status=no,width=500,height=400,location=no,scrollbars=yes,toolbar=yes,menubar=no,resizable=yes');"href="javascript:void(0);">' . $order->products[$i]['name'];

Seguro me estoy pitieando un ' o un "" ... al probar esas variantes, el php simplemente abre 'en blanco'.

Parte del codigo que lo rodea, para contexto es:

<?php
for ($i=0, $n=sizeof($order->products); $i<$n; $i++) {
echo ' <tr class="dataTableRow">' . "\n" .
' <td class="dataTableContent" valign="top" align="right">' . $order->products[$i]['qty'] . '&nbsp;x</td>' . "\n" .
' <td class="dataTableContent" valign="top"><a href="'.HTTPS_CATALOG_SERVER.DIR_WS_CATALOG_IMAGES. $order->products[$i]['image'] .'"target=_newindow">' . $order->products[$i]['name'];

if (isset($order->products[$i]['attributes']) && (sizeof($order->products[$i]['attributes']) > 0)) {
for ($j = 0, $k = sizeof($order->products[$i]['attributes']); $j < $k; $j++) {
echo '<br /><nobr><small>&nbsp;<i> - ' . $order->products[$i]['attributes'][$j]['option'] . ': ' . $order->products[$i]['attributes'][$j]['value'];
if ($order->products[$i]['attributes'][$j]['price'] != '0') echo ' (' . $order->products[$i]['attributes'][$j]['prefix'] . $currencies->format($order->products[$i]['attributes'][$j]['price'] * $order->products[$i]['qty'], true, $order->info['currency'], $order->info['currency_value']) . ')';
echo '</i></small></nobr>';
}
}

Como puedo alterar el codigo en negritas para que al hacer click sobre ese item se abra un popup con determinadas medidas?

Muchas gracias
 

folto

⭐️Cuenta Premium⭐️
Se incorporó
27 Julio 2019
Mensajes
911
No tengo la menor idea, pero paso a saludarte de todas formas, compañero Voipster.

Saludos.
 
Upvote 0

Kitsune

Fanático
Se incorporó
5 Mayo 2006
Mensajes
1.049
prueba asi, para forzar popup y no otro tab

<a href="#" onclick="window.open('https://www.capa9.net/styles/logo-bar.png', 'newwindow', 'width=300,height=250');
return false;">hello c9</a>

segun tu codigo seria algo asi

<a href="#" onclick="window.open('.HTTPS_CATALOG_SERVER.DIR_WS_CATALOG_IMAGES. $order->products[$i]['image'] .', 'newwindow', 'width=300,height=250'); return false;">.$order->products[$i]['name'];</a>
 
Upvote 0

MetalCOB

Miembro Regular
Se incorporó
2 Enero 2010
Mensajes
97
No se PHP, pero si se sigue el patron de interpolacion del que si te funciona, entonces deberia quedar algo asi


PHP:
<a onclick="window.open('.HTTPS_CATALOG_SERVER.DIR_WS_CATALOG_IMAGES. $order->products[$i]['image'] .','imagen','status=no,width=500,height=400,location=no,scrollbars=yes,toolbar=yes,menubar=no,resizable=yes'); href="javascript:void(0);">' . $order->products[$i]['name'];

PS: igual creo que esta "mal" tu código, pero cada lenguaje tiene sus trucos y al final te acostumbras a donde, cuantas y que comillas usar.
 
Upvote 0

EITSAEB

Team Peacemaker Hater
Se incorporó
10 Septiembre 2006
Mensajes
4.657
tiene que ser otra ventana? no te sirve un modal de bootstrap por ejemplo?

 
Upvote 0

voipster

VoIP enthusiast
Se incorporó
2 Julio 2007
Mensajes
353
tiene que ser otra ventana? no te sirve un modal de bootstrap por ejemplo?


Ah claro, eso también sirve
 
Upvote 0

ricm

Se incorporó
28 Agosto 2005
Mensajes
7.591
Quizá sea un poco tarde, pero para evitar problemas con ' y ", yo suelo escribir el php de la manera mas libre de html y javascript posible.
ejemplo:
PHP:
if(1=1){
    echo '<p>texto que usa echo, comillas simples y punto para concatenar una '.$variable.'</p>';
}
?>

prefiero el codigo asi:
PHP:
<?
if(1=1){
?>
    <p>Me es mas comodo escribir asi <?= $variable; ?></p>
<?
}
?>

Asi me ahorro miles de problemas con comillas y con concatenar, a costa de usar mas <? ?>
 
Última modificación:
Upvote 0

ricm

Se incorporó
28 Agosto 2005
Mensajes
7.591
para tu ejemplo:
PHP:
<?php
for ($i=0, $n=sizeof($order->products); $i<$n; $i++) {
echo ' <tr class="dataTableRow">' . "\n" .
' <td class="dataTableContent" valign="top" align="right">' . $order->products[$i]['qty'] . '&nbsp;x</td>' . "\n" .
' <td class="dataTableContent" valign="top"><a href="'.HTTPS_CATALOG_SERVER.DIR_WS_CATALOG_IMAGES. $order->products[$i]['image'] .'"target=_newindow">' . $order->products[$i]['name'];

PHP:
<?php
for ($i=0, $n=sizeof($order->products); $i<$n; $i++) {
?>
<tr class="dataTableRow">
<td class="dataTableContent" valign="top" align="right"><?=$order->products[$i]['qty']; ?>x</td>
<td class="dataTableContent" valign="top"><a href="<?=HTTPS_CATALOG_SERVER.DIR_WS_CATALOG_IMAGES. $order->products[$i]['image'];?>"target=_newindow"><?=$order->products[$i]['name'];?>

obviamente puede haber errores.
 
Upvote 0
Subir