Integrar PHP

Xarlie

Super Moderador
Miembro del equipo
Para crear páginas personalizadas... creas un bloque, una plantilla dentro del directorio template y sus funciones dentro de la carpeta "code/local" para que no se pierdan en actualizaciones.
Después tienes que indicar donde quieres que aparezca, para lo cual tendrás que indicar el nuevo bloque dentro de los layouts (carpeta layout) que son los ficheros XML y que cada uno corresponde a una sección.

Si tan sólo quieres añadir una página puedes crear tu código php en una página (sin relación con magento) y añadir una excepción en el fichero .htaccess para que no te interprete esa petición de URL como un rewrite de un producto del catálogo.
 

spok01

Nuevo usuario
Xarlie: Intente hacerlo de ese modo pero no me funciono, creo que hal haber tantos archivos me enredo un poco :niidea:

Otra opción es ejecutar el cógigo php de tu autoría dentro de un phtml uqe vayas a invocar.
Sin embargo si pude integrarlo llamando a un .phtml, lo unico mal es que al ejecutar la funcion me regresa al index, no arroja los resultados en el mismo espacio.

Ver ejemplo

Adjunto el codigo php, por si hay que modificar algo...
Insertar CODE, HTML o PHP:
<?php
    function checkDomain($domain,$server,$findText){
        // Open a socket connection to the whois server
        $con = fsockopen($server, 43);
        if (!$con) return false;
        
        // Send the requested doman name
        fputs($con, $domain."\r\n");
        
        // Read and store the server response
        $response = ' :';
        while(!feof($con)) {
            $response .= fgets($con,128); 
        }
        
        // Close the connection
        fclose($con);
        
        // Check the response stream whether the domain is available
        if (strpos($response, $findText)){
            return true;
        }
        else {
            return false;   
        }
    }
    
    function showDomainResult($domain,$server,$findText){
       if (checkDomain($domain,$server,$findText)){
          echo "<tr><td>$domain</td><td>Disponible</td></tr>";
       }
       else echo "<tr><td>$domain</td><td>Ocupado</td></tr>";
    }
?>
<script type="text/javascript">
function seleccionar_todo(){
   for (i=0;i<document.domain.elements.length;i++)
      if(document.domain.elements[i].type == "checkbox")
         document.domain.elements[i].checked=1
}
function deseleccionar_todo(){
   for (i=0;i<document.domain.elements.length;i++)
      if(document.domain.elements[i].type == "checkbox")
         document.domain.elements[i].checked=0
}
</script>
      <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" name="domain">
        Nombre del dominio:
        <table>
          <tr><td><p align="center">
            <input name="domainname" type="text" />
            <br />
            <a href="javascript:seleccionar_todo()">Todos</a> |
<a href="javascript:deseleccionar_todo()">Ninguno</a></p>
              </td></tr>
          <tr>
		   
		  <td>
		  	<input type="checkbox" name="td1"/>.com.mx
		    <input type="checkbox" name="td2"/>.net.mx
			<input type="checkbox" name="td3"/>.org.mx
			<input type="checkbox" name="td4"/>.com
			<input type="checkbox" name="td5"/>.net
			<input type="checkbox" name="td6"/>.org
		  </td>
		  </tr>	  
          <tr><td><div align="center">
            <input type="submit" name="submitBtn" value="Verificar Disponibilidad"/>
          </div></td></tr>
        </table>  
      </form>
<?php    
    // The form was submitted
    if (isset($_POST['submitBtn'])){
        $domainbase = (isset($_POST['domainname'])) ? $_POST['domainname'] : '';
        $d_td1      = (isset($_POST['td1'])) ? 'td1' : ''; 
		$d_td2      = (isset($_POST['td2'])) ? 'td2' : '';   
		$d_td3      = (isset($_POST['td3'])) ? 'td3' : '';   
		$d_td4      = (isset($_POST['td4'])) ? 'td4' : '';   
		$d_td5      = (isset($_POST['td5'])) ? 'td5' : '';   
		$d_td6      = (isset($_POST['td6'])) ? 'td6' : '';      
        
        // Check domains only if the base name is big enough
        if (strlen($domainbase)>2){
            echo '<table>';
            if ($d_td1 != '')  
               showDomainResult($domainbase.".com.mx",'whois.nic.mx','No_Se_Encontro_El_Objeto/Object_Not_Found');
            if ($d_td2 != '')  
               showDomainResult($domainbase.".net.mx",'whois.nic.mx','No_Se_Encontro_El_Objeto/Object_Not_Found');			            
			if ($d_td3 != '')  
               showDomainResult($domainbase.".org.mx",'whois.nic.mx','No_Se_Encontro_El_Objeto/Object_Not_Found');   
            if ($d_td4 != '')  
               showDomainResult($domainbase.".com",'whois.crsnic.net','No match for');			            if ($d_td5 != '')  
               showDomainResult($domainbase.".net",'whois.crsnic.net','No match for');   
            if ($d_td6 != '')  
               showDomainResult($domainbase.".org",'whois.pir.org','NOT FOUND');			   
            echo '</table>';
        }
    }
?>
 
Última edición:

Xarlie

Super Moderador
Miembro del equipo
al utilizar
PHP:
$_SERVER['PHP_SELF']
se le solicita al intérprete la ruta que tiene guardada, en el caso de magento todo pasa por el index.php. La ruta que tienes de dominios es un rewrite, por eso, si te fijas en el código fuente, puedes ver:
Insertar CODE, HTML o PHP:
<form action="/index.php" method="post" name="domain">
El error es ese, sólo te queda obligar al formulario pasar por /dominio y debería de funcionar.
 

spok01

Nuevo usuario
:reverencia: Muchisimas gracias Xarlie, ya quedo solucionado, ahora solo resta aplicar estilos y agregar otros detalles..

Saludos
 

jccn1812

Nuevo usuario
al utilizar
PHP:
$_SERVER['PHP_SELF']
se le solicita al intérprete la ruta que tiene guardada, en el caso de magento todo pasa por el index.php. La ruta que tienes de dominios es un rewrite, por eso, si te fijas en el código fuente, puedes ver:
Insertar CODE, HTML o PHP:
<form action="/index.php" method="post" name="domain">
El error es ese, sólo te queda obligar al formulario pasar por /dominio y debería de funcionar.
Yo estoy en una situacion parecida, aún cuando mi formulario lo creo de la siguiente forma:

$urlform = $this->getUrl('checkout/onepage').'webpay_saveorder.php';
echo "<form method='post' name='webpay' action='$urlform'>
<input type='hidden' name='TBK_MONTO' value='$total_carro'>


En la barra de direcciones del navegador, aparece la dirección correcta, pero magento simplemente no la encuentra y envia su irritante pantalla de "ooopps! no se encuentra la página..."

Que estoy haciendo mal o es que simplemente Magento no permite ejecutar páginas PHP de esta forma???
 

Damian Culotta

Nuevo usuario
@jccn1812

El tema de las url's, no son url's físicas, sino que funcionan más bien como parámetros (no es literal lo que estoy explicando, pero me parece más gráfico que tratar de hacer la explicación completa del Zend Controller).

Esos parámetros son más o menos así (adaptándolo a tu caso).

Módulo: Checkout
Controlador: Onpage
Acción: webpay_saveorder

Supongo, que en tu Módulo Checkout, en el Controlador Onpage, no tenés definida ningún Action webpay_saveorder.

De ahí el 404.

Saludos.
 

jccn1812

Nuevo usuario
entonces como...?

Damian...

La necesidad que tengo es solo ejecutar un formulario en una página php.
Lo mas sencillo posible.
Este formulario recibe un par de datos y ejecuta un cgi en el server.

Te ruego me des alguna idea para hacer esto, pues llevo un par de dias pegado en lo mismo.

Gracias.




@jccn1812

El tema de las url's, no son url's físicas, sino que funcionan más bien como parámetros (no es literal lo que estoy explicando, pero me parece más gráfico que tratar de hacer la explicación completa del Zend Controller).

Esos parámetros son más o menos así (adaptándolo a tu caso).

Módulo: Checkout
Controlador: Onpage
Acción: webpay_saveorder

Supongo, que en tu Módulo Checkout, en el Controlador Onpage, no tenés definida ningún Action webpay_saveorder.

De ahí el 404.

Saludos.
 

melame

Nuevo usuario
Damian...

La necesidad que tengo es solo ejecutar un formulario en una página php.
Lo mas sencillo posible.
Este formulario recibe un par de datos y ejecuta un cgi en el server.

Te ruego me des alguna idea para hacer esto, pues llevo un par de dias pegado en lo mismo.

Gracias.



me perdonan pero voy a seguir con este tema porque estoy desesperado :susto: y necesito solucionarlo.

lo que plantea el amigo jccn1812 meses atras es lo siguiente.

en Chile existe un metodo de pago webpay, el cual trabaja con cgi, por lo tanto ningun modulo que existe sirve ya que todo el kit de conexion va configurado dentro de cgi-bin, y el config de este es un .dat, que se necesita, se necesita de un modulo tal que permita la ejecucion del tbk_bp_pago.cgi para eso hay un formulario base

PHP:
<FORM METHOD="POST" ACTION="/cgi-bin/tbk_bp_pago.cgi"> 
<TABLE BORDER="0" ALIGN="CENTER"> 
<TR> 
<TD ALIGN="CENTER"> 
  <FONT FACE=ARIAL SIZE="3" COLOR="WHITE">MONTO TRANSACCIÓN</FONT>   <BR> 
   <INPUT TYPE="TEXT" NAME="TBK_MONTO"  VALUE="10000">   <BR> 
</TD> 
<TD ALIGN="CENTER">  <BR>  
 <INPUT TYPE="HIDDEN" NAME="TBK_TIPO_TRANSACCION" VALUE="TR_NORMAL">  <BR>  
</TD> 
</TR> 
 
<TR> 
  <TD ALIGN="CENTER"> 
    <FONT FACE="ARIAL" SIZE="3" COLOR="WHITE">Nº DE ORDEN</FONT>       <BR> 
      <INPUT TYPE="TEXT" NAME="TBK_ORDEN_COMPRA"  VALUE="<?php echo substr(md5(uniqid(rand(),1)), 0, 5);?>">        <BR> 
  </TD> 
  <TD ALIGN="CENTER">      <BR> 
     <INPUT TYPE="HIDDEN" NAME="TBK_ID_SESION" VALUE="<?php echo substr(md5(uniqid(rand(),1)), 0, 10);?>">    <BR> 
  </TD> 
</TR> 
</TABLE> 
 
<TABLE BORDER=0 ALIGN="CENTER"> 
 <TR> 
  <TD ALIGN="CENTER">    <BR>  
    <INPUT NAME="TBK_URL_EXITO" TYPE="HIDDEN" id="TBK_URL_EXITO" VALUE="http://www.tutienda.cl/tienda2/exito.php">    <BR> 
  </TD> 
  <TD ALIGN="CENTER">    <BR>  
    <INPUT NAME="TBK_URL_FRACASO" TYPE="HIDDEN" id="TBK_URL_FRACASO" VALUE="http://www.tutienda.cl/tienda2/fracaso.php">   <BR> 
  </TD> 
</TR> 
</TABLE> 
 
<TABLE BORDER="0" ALIGN="CENTER"> 
 <TR>  <TD ALIGN="CENTER">   <BR> 
         <INPUT TYPE="SUBMIT" VALUE="PAGAR CON TARJETA DE CRÉDITO" SIZE=”20”>   </BR> 
  </TD>  
</TR> 
 
</TABLE> 
</FORM>
mi problema en concreto es como hago pasar las variables de magento a este formulario o que archivo debo modificar dentro del checkout yo mas menos creo que es review.phtml, eso no se si me explique espero sus respuestas :palomitas:
 
Arriba