Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

[Решено] Проверка, какая текущая страница - условие в php


Recommended Posts

Собираюсь реализовать в шапке сайта такую вещь:

<?php if (Текущая страница=Главная) { ?>

<div class="1"></div><?php }

else { ?>

<div class="2"><?php echo $heading_title; ?>

</div> <?php } ?>

Т.е скрипт должен проверять, что открытая страница является главной (home), и выводить один блок, а если не главная, то другой.

Вопрос в том, как прописать это условие?

Надіслати
Поділитися на інших сайтах


Наверняка есть какой-то параметр, где хранится ссылка текущей страницы (common/home), но как его узнать и как правильно прописать?

Или есть какие-то функции для определения текущей страницы?

  • +1 1
Надіслати
Поділитися на інших сайтах


проще всего - задать свою переменную в контроллере соответствующей страницы и в шаблоне уже проверять наличие и значение данной переменной.

  • +1 1
Надіслати
Поділитися на інших сайтах

Я задаю значение в контроллере страницы home:

$this->data['current_page']='home';

В шаблоне задаю: <?php if ($current_page=='home') { ?>

Но вылезает ошибка Notice: Undefined variable: current_page in Z:homemagazin1wwwcatalogviewthemedefaulttemplatecommonheader.tpl on line 74

Все верно, т.к проверяется значение в header.tpl, а в контроллере хедера переменная не задекларирована.

Как получить значение переменной из контроллера home в контроллере header?

Заметил, что например заголовок можно получить,там есть такая строка: $this->data['title'] = $this->document->getTitle();

Видимо как то аналогично, но как прописать?

Надіслати
Поділитися на інших сайтах


добавьте сквозную переменную в класс "document" [=== upload/system/library/document.php ===] аналогично той же "title".

а потом уже в контроллере home присваивайте ей необходимое значение и проверяйте в шаблоне.

обрамите свой код в соответствующие тэги

Змінено користувачем afwollis
  • +1 1
Надіслати
Поділитися на інших сайтах

2kes,

Придумал новую переменную - current_page. Далее пошагово, какие строки куда добавлял:

1. В файле document.php (system/library/) добавил две функции - получение новой переменной и передача новой переменной:

public function setCurrent($current_page) {

$this->current_page = $current_page;

}

public function getCurrent() {

return $this->current_page;

}

2. В файле home.php (catalog/controller/common) устанавливаем значение переменной:

$this->document->setCurrent('home');

3. В файле header.php (catalog/controller/common) получаем значение переменной:

$this->data['current_page'] = $this->document->getCurrent();

4. Ну и в конце концов, в файле шаблона header.tpl (catalog/view/theme/default/template/common) задаем условие, которое проверяет значение этой переменной:

<?php if ($current_page=='home') { ?>

<div class="1"></div><?php }

else { ?>

<div class="2"><?php echo $heading_title; ?>

</div> <?php } ?>

  • +1 2
Надіслати
Поділитися на інших сайтах


  • 1 month later...

Огромное спасибо!

Только для статических страниц, категорий, страницы продукта, корзины и т.д. точно также как и для главной значение переменной указать нужно. Иначе будет ошибка о том что переменная не найдена, в случае если вы перейдете в описание продукта, например.

Надіслати
Поділитися на інших сайтах


По моему вы тут велосипед изобретаете... У меня реализовано проще:

if (!isset($this->request->get['route'])) {
	  $this->request->get['route']='common/home'; // Чтобы не выдавало ошибку, если юзер набрал адрес в браузере руками
}


if ($this->request->get['route']=='common/home') {
	 echo 'Я на главной';
} else {
	 echo 'А это уже не главная страница';
}

P.S. По аналогии можно и другие страницы идентифицировать...

  • +1 5
Надіслати
Поділитися на інших сайтах


  • 9 months later...

По моему вы тут велосипед изобретаете... У меня реализовано проще:

if (!isset($this->request->get['route'])) {
	  $this->request->get['route']='common/home'; // Чтобы не выдавало ошибку, если юзер набрал адрес в браузере руками
}


if ($this->request->get['route']=='common/home') {
	 echo 'Я на главной';
} else {
	 echo 'А это уже не главная страница';
}

P.S. По аналогии можно и другие страницы идентифицировать...

Да. Но если страницы статические то это не работает. Допустим у меня будет в главном меню две ссылки на статью, а переменная $this->request->get['route'] будет равна information/information, и обоих случаях

Надіслати
Поділитися на інших сайтах


Да. Но если страницы статические то это не работает. Допустим у меня будет в главном меню две ссылки на статью, а переменная $this->request->get['route'] будет равна information/information, и обоих случаях

Проверяйте по id статьи.

Надіслати
Поділитися на інших сайтах


  • 2 weeks later...

Проверяйте по id статьи.

А как условие для проверки id статьи прописать? Что то не вдуплюсь.

ВДУПЛИЛСЯ :-)

$this->request->get['information_id']==
Змінено користувачем DAN
Надіслати
Поділитися на інших сайтах


  • 8 months later...

2kes,

Придумал новую переменную - current_page. Далее пошагово, какие строки куда добавлял:

1. В файле document.php (system/library/) добавил две функции - получение новой переменной и передача новой переменной:

public function setCurrent($current_page) {

$this->current_page = $current_page;

}

public function getCurrent() {

return $this->current_page;

}

2. В файле home.php (catalog/controller/common) устанавливаем значение переменной:

$this->document->setCurrent('home');

3. В файле header.php (catalog/controller/common) получаем значение переменной:

$this->data['current_page'] = $this->document->getCurrent();

4. Ну и в конце концов, в файле шаблона header.tpl (catalog/view/theme/default/template/common) задаем условие, которое проверяет значение этой переменной:

<?php if ($current_page=='home') { ?>

<div class="1"></div><?php }

else { ?>

<div class="2"><?php echo $heading_title; ?>

</div> <?php } ?>

Почему то выдаёт ошибку

Notice: Undefined property: Document::$current_page in /system/library/document.php on line 22

Уже Разобрался СПАСИБО!

 

Змінено користувачем Romans281
Надіслати
Поділитися на інших сайтах


В document.php после объявления класса надо добавить

private $current_page;
Надіслати
Поділитися на інших сайтах

  • 1 month later...

Приветствую, уважаемые форумчане.

Никак не могу разобраться с выделением пунктов. OCstore 1.5.5.1.2

Пытаюсь в вертикальном меню сделать инфу, в горизонтальном - категории.

Пробовал самым простым на мой взгляд путем - по url с переменной $og_ulr и вышеупомянутым $_SERVER['REQUEST_URI'], оба при сравнении с текстовой строкой вида "/index.php?route=information/information&information_id=4" дают false. И нужный пункт не светится. Если текст в кавычках обозначить за переменной, например, $about - та же петрушка.

 

Что-то видимо делаю не так.

 

Как вариант думал проверять по $information_id для вертикального меню с инфой и id категории ($path) для горизонтального.

Но вертикальное делаю вместо модуля категорий, в category.tpl, в его контроллере не упомянута $information_id вообще, ее надо там определить судя по всему. И задать ей нужное значение. Как это сделать - не нашел. Без этого работает только на информационных страницах.

Аналогично в хедере нет переменной $path.

 

Такие пироги. С php до этого не сталкивался вообще, а сделать надо. Надеюсь на вашу помощь.

 

 

 

upd:

 

https://opencartforum.com/topic/11529-resheno-proverka-kakaia-tekuschaia-stranitca-uslovi/?do=findComment&comment=75457

проделал штуки из этого поста. $current_page = $information_id и $current_page = $category_id в соответствующих контроллерах. По идее при большом количестве информационных страниц (>10) могут возникнуть траблы с одинаковыми id.

А так работает. Спасибо)

Змінено користувачем Reddie
Надіслати
Поділитися на інших сайтах


  • 6 months later...

Я сделал может и по ленивом, но действенно и просто. Редактировал только header.tpl
Вверху вставил код:

<?php 
  $path = "common/home";
  $url = $_SERVER['REQUEST_URI'];
  if ($url == "/" or strripos($url, $path)) {
    $is_home = TRUE;
  }else{
    $is_home = false;
  }            
?>

И далее в шапке делал проверку:

<?php if (!$is_home) {echo "other_header";} ?>

или наоборот:

<?php if ($is_home) {echo "home_header";} ?>
  • +1 3
Надіслати
Поділитися на інших сайтах

  • 1 year later...

Ну раз уж подняли старую тему, то и я спрошу) 

 

Нужно спрятать элемент не только на главной, но и на одной из информационных страниц.

 

На данный момент для главной реализовано вот так:

    <?php if (!isset($this->request->get['route']) || (isset($this->request->get['route']) && $this->request->get['route'] == 'common/home')) { ?>
     
    <!-- здесь вставить что-то только для главной страницы -->
     
    <?php } else {?>
     
    <!-- здесь вставить что-то для всех остальных страниц, кроме главной  -->
     
    <?php } ?>

Взято отсюда

 

Подскажите, как сюда добавить условие для еще одной страницы (пускай её id=4), чтоб на ней элемент тоже не показывался?

  • +1 1
Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.