PHP, если URL равен этому, выполнить действие - PullRequest
12 голосов
/ 02 марта 2012

Итак, у меня есть заголовок страницы, который является частью шаблона Magento;Я бы хотел, чтобы отображался 1 из 2 вариантов, в зависимости от того, какой URL.Если URL-адрес - вариант 1, отобразите заголовок 1. Если URL-адрес является чем-то еще, отобразите заголовок 2. Это то, что я придумал, но это приводит к краху моей страницы:

<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>

У кого-то есть идеи?

РЕДАКТИРОВАТЬ: Таким образом, это должно выглядеть так?

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

Ответы [ 3 ]

23 голосов
/ 02 марта 2012

Вы ищете URL, на котором сейчас находится страница?Вы используете parse_url неправильный путь;то есть, если вы хотите получить только хост или домен, т.е. только «dev.obtura.com».Похоже, вы хотите больше, чем это.Кроме того, вы никогда не устанавливаете переменную $domain, поэтому parse_url() не знает, что с ней делать.Как и сейчас, ваш оператор if всегда будет возвращать 'Создать учетную запись`.

Вместо этого установите $host с $ _ SERVER переменными:

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

Вам также необходимо удалить «http://" из проверки» - $host будет содержать все только после «http://"

Как Aron Cederholm предложил вамнеобходимо добавить точку с запятой (;) в конец ваших эхо-операторов.

Итак, ваш PHP-код должен выглядеть следующим образом:

$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');
}
4 голосов
/ 02 марта 2012

Вы должны добавить точки с запятой к своим утверждениям внутри вашего 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');
}
4 голосов
/ 02 марта 2012

Я не уверен, что вы выбираете домен правильно. Я не очень понимаю parse_url, и вы не показали нам, что такое $domain.

Обычно, если я хочу получить доменное имя, я делаю это: $host = $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'] Затем остальная часть вашего кода.

Что если, иначе утверждение кажется мне законным, я бы попробовал вышеизложенное и посмотрел, как это происходит. ;)

Редактировать: Ой, Джон избил меня до этого. :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...