2012-03-01 13 views
8

Así que tengo un título de página que es parte de una plantilla de Magento; Me gustaría que muestre 1 de 2 opciones, dependiendo de lo que sea la URL. Si la URL es la opción 1, pantalla de título 1. Si la URL es todo lo demás, la pantalla del título 2. Esto es lo que me ocurrió, pero está haciendo mi página de accidente:PHP si la URL es igual a esto, entonces realice la acción

<div class="page-title"> 
<h1><?php 
$host = parse_url($domain, PHP_URL_HOST); 
if($host == 'http://domain.com/customer/account/create/?student=1') { 
echo $this->__('Create an account if you are a Post Graduate Endodontic Resident and receive our resident pricing. Please fill in all required fields. Thank you!') 
} 
else 
{ 
echo $this->__('Create an Account') 
} 
?></h1> 
</div> 

Alguien tiene alguna idea?

EDITAR: ¿Así debería verse así?

$host = $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']; 
if($host == 'http://domain.com/customer/account/create/?student=1') 
+1

¿Qué significa "hacer que mi página se bloquee"? ¿Usted revive un mensaje de error? Más adelante: ¿Dónde definió la variable $ dominio? –

+0

Todo lo que se carga antes de esta parte de la página se detiene. Ningún mensaje de error – miles

+0

Obtuve $ dominio de este hilo: http://stackoverflow.com/questions/1122261/php-check-if-domain-equals-value-then-perform-action – miles

Respuesta

22

¿Está buscando la URL en la que se encuentra la página actualmente? Está utilizando parse_url de la manera incorrecta; es decir, si solo desea obtener el host o dominio, es decir, solo "dev.obtura.com". Parece que quieres más que eso. Además, nunca está configurando la variable $domain, por lo que parse_url() no sabe qué hacer con ella. Entonces, como está ahora, su declaración if siempre devolverá 'Crear una cuenta'.

su lugar, establecer $host con $_SERVER variables:

$host = $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];

También tendrá que quitar el "http: //" de su cuenta corriente - $host únicamente incluya todo después de "http: //"

Como se sugirió Aron Cederholm, debe agregar punto y coma (;) al final de sus instrucciones de eco.

Por lo tanto, su código PHP debe tener este aspecto:

$host = $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']; 
if($host == 'domain.com/customer/account/create/?student=1') 
{ 
    echo $this->__('Create an account if you are a Post Graduate Endodontic Resident and receive our resident pricing. Please fill in all required fields. Thank you!'); 
} 
else 
{ 
    echo $this->__('Create an Account'); 
} 
+0

Ver mi selección anterior – miles

+0

@miles Edited mi respuesta para contener tus observaciones, para que otros vean la respuesta. –

4

No estoy seguro de que estás ir a buscar el dominio correcto. Realmente no entiendo mucho parse_url, y no nos has mostrado cómo se define $domain.

Normalmente, si quiero obtener el nombre de dominio, haré esto: $host = $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'] Luego, el resto de su código.

Eso si, la declaración else me parece legítima, entonces probaría lo de arriba y vería cómo va eso. ;)

Editar: Vaya, John me ganó. :)

+0

Ver mi edición superior. Lo intenté, pero obtuve el mismo resultado que antes. – miles

3

Debe agregar puntos y comas a sus declaraciones dentro de su if-else.

if($host == 'http://dev.obtura.com/customer/account/create/?student=1') { 
    echo $this->__('Create an account if you are a Post Graduate Endodontic Resident and receive our resident pricing. Please fill in all required fields. Thank you!'); 
} 
else 
{ 
    echo $this->__('Create an Account'); 
} 
+0

La página ya no se cuelga, pero la declaración no funciona. Todavía estoy obteniendo el segundo titular de 'Crear una cuenta' – miles

+1

Intenta hacer eco de $ host para ver por ti mismo por qué no es igual a tu url deseado. –

+0

@miles ¿Intentó configurar $ host como sugerí? –

Cuestiones relacionadas