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

Ошибка header.tpl on line 23


Recommended Posts

Помогите чайнику.  что нужно сделать? И как убрать ошибку в шапке сайта? 

 

Notice: Undefined variable: og_image in /home/photol06/golden-frog37.ru/www/system/storage/modification/catalog/view/theme/default/template/common/header.tpl on line 23

 

файл headler.tpl выглядит вот так

 

<!DOCTYPE html>
<!--[if IE]><![endif]-->
<!--[if IE 8 ]><html dir="<?php echo $direction; ?>" lang="<?php echo $lang; ?>" class="ie8"><![endif]-->
<!--[if IE 9 ]><html dir="<?php echo $direction; ?>" lang="<?php echo $lang; ?>" class="ie9"><![endif]-->
<!--[if (gt IE 9)|!(IE)]><!-->
<html dir="<?php echo $direction; ?>" lang="<?php echo $lang; ?>">
<!--<![endif]-->
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title><?php echo $title;  ?></title>
<base href="<?php echo $base; ?>" />
<?php if ($description) { ?>
<meta name="description" content="<?php echo $description; ?>" />
<?php } ?>
<?php if ($keywords) { ?>
<meta name="keywords" content= "<?php echo $keywords; ?>" />
<?php } ?>
<meta property="og:title" content="<?php echo $title; ?>" />
<meta property="og:type" content="website" />
<meta property="og:url" content="<?php echo $og_url; ?>" />
<?php if ($og_image) { ?>
<meta property="og:image" content="<?php echo $og_image; ?>" />
<?php } else { ?>
<meta property="og:image" content="<?php echo $logo; ?>" />
<?php } ?>
<meta property="og:site_name" content="<?php echo $name; ?>" />
<script src="catalog/view/javascript/jquery/jquery-2.1.1.min.js" type="text/javascript"></script>
<link href="catalog/view/javascript/bootstrap/css/bootstrap.min.css" rel="stylesheet" media="screen" />
<script src="catalog/view/javascript/bootstrap/js/bootstrap.min.js" type="text/javascript"></script>
<link href="catalog/view/javascript/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css" />
<link href="//fonts.googleapis.com/css?family=Open+Sans:400,400i,300,700" rel="stylesheet" type="text/css" />
<link href="catalog/view/theme/default/stylesheet/stylesheet.css" rel="stylesheet">
<?php foreach ($styles as $style) { ?>
<link href="<?php echo $style['href']; ?>" type="text/css" rel="<?php echo $style['rel']; ?>" media="<?php echo $style['media']; ?>" />
<?php } ?>
<script src="catalog/view/javascript/common.js" type="text/javascript"></script>
<?php foreach ($links as $link) { ?>
<link href="<?php echo $link['href']; ?>" rel="<?php echo $link['rel']; ?>" />
<?php } ?>
<?php foreach ($scripts as $script) { ?>
<script src="<?php echo $script; ?>" type="text/javascript"></script>
<?php } ?>
<?php foreach ($analytics as $analytic) { ?>
<?php echo $analytic; ?>
<?php } ?>

				<?php if(!$countdown['view']){ ?>
				<link href="catalog/view/theme/default/stylesheet/countdown.css" rel="stylesheet">
				<style type="text/css">
				<?php if($countdown['border']){ ?>
					.count-timer{
						border: 1px solid <?php echo $countdown['border_color']; ?>;
					}
				<?php } ?>
					.count-timer div.timer-clock>div{
						background: <?php echo $countdown['clock_color1']; ?>;
						background: linear-gradient(to bottom, <?php echo $countdown['clock_color1']; ?>, <?php echo $countdown['clock_color2']; ?>);
					}
				</style>
				<script src="catalog/view/javascript/countdown.js" type="text/javascript"></script>
				<script type="text/javascript">
				var text = {};
				<?php if($countdown['action']){ ?>
				text.action     = "<?php echo $countdown['action']; ?>";
				<?php } else { ?>
				text.action       = "<?php echo $text_action; ?>";
				<?php } ?>
				<?php if($countdown['action']){ ?>
				text.action_end     = "<?php echo $countdown['action_end']; ?>";
				<?php } else { ?>
				text.action_end = "<?php echo $text_action_end; ?>";
				<?php } ?>
				<?php if($countdown['day']){ ?>
				text.day        = "<?php echo $text_days; ?>";
				<?php } else { ?>
				text.day        = "";
				<?php } ?>
				<?php if($countdown['hour']){ ?>
				text.hour       = "<?php echo $text_hour; ?>";
				<?php } else { ?>
				text.hour       = "";
				<?php } ?>
				<?php if($countdown['minute']){ ?>
				text.min        = "<?php echo $text_min; ?>";
				<?php } else { ?>
				text.min        = "";
				<?php } ?>
				<?php if($countdown['second']){ ?>
				text.sec        = "<?php echo $text_sec; ?>";
				<?php } else { ?>
				text.sec        = "";
				<?php } ?>
				</script>
				<?php } ?>


<!-- OC-Store: Badges -->
<script src="catalog/view/theme/ocstore/js/badges.js" type="text/javascript"></script>
<script src="catalog/view/theme/ocstore/js/badges_data.js" type="text/javascript"></script>
<script src="catalog/view/theme/ocstore/js/jquery.balloon.min.js" type="text/javascript"></script>
<!-- /OC-Store: Badges -->

</head>
<body class="<?php echo $class; ?>">
<nav id="top">
  <div class="container">
    <?php echo $currency; ?>
    <?php echo $language; ?>
    <div id="top-links" class="nav pull-right">
      <ul class="list-inline">
        <li><a href="<?php echo $contact; ?>"><i class="fa fa-phone"></i></a> <span class="hidden-xs hidden-sm hidden-md"><?php echo $telephone; ?></span></li>
        <li class="dropdown"><a href="<?php echo $account; ?>" title="<?php echo $text_account; ?>" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-user"></i> <span class="hidden-xs hidden-sm hidden-md"><?php echo $text_account; ?></span> <span class="caret"></span></a>
          <ul class="dropdown-menu dropdown-menu-right">
            <?php if ($logged) { ?>
            <li><a href="<?php echo $account; ?>"><?php echo $text_account; ?></a></li>
            <li><a href="<?php echo $order; ?>"><?php echo $text_order; ?></a></li>
            <li><a href="<?php echo $transaction; ?>"><?php echo $text_transaction; ?></a></li>
            <li><a href="<?php echo $download; ?>"><?php echo $text_download; ?></a></li>
            <li><a href="<?php echo $logout; ?>"><?php echo $text_logout; ?></a></li>
            <?php } else { ?>
            <li><a href="<?php echo $register; ?>"><?php echo $text_register; ?></a></li>
            <li><a href="<?php echo $login; ?>"><?php echo $text_login; ?></a></li>
            <?php } ?>
          </ul>
        </li>
        <li><a href="<?php echo $wishlist; ?>" id="wishlist-total" title="<?php echo $text_wishlist; ?>"><i class="fa fa-heart"></i> <span class="hidden-xs hidden-sm hidden-md"><?php echo $text_wishlist; ?></span></a></li>
        <li><a href="<?php echo $shopping_cart; ?>" title="<?php echo $text_shopping_cart; ?>"><i class="fa fa-shopping-cart"></i> <span class="hidden-xs hidden-sm hidden-md"><?php echo $text_shopping_cart; ?></span></a></li>
        <li><a href="<?php echo $checkout; ?>" title="<?php echo $text_checkout; ?>"><i class="fa fa-share"></i> <span class="hidden-xs hidden-sm hidden-md"><?php echo $text_checkout; ?></span></a></li>
      </ul>
    </div>
  </div>
</nav>
<header>
  <div class="container">
    <div class="row">
      <div class="col-sm-4">
        <div id="logo">
          <?php if ($logo) { ?>
            <?php if ($home == isset($og_url)) { ?>
              <img src="<?php echo $logo; ?>" title="<?php echo $name; ?>" alt="<?php echo $name; ?>" class="img-responsive" />
            <?php } else { ?>
              <a href="<?php echo $home; ?>"><img src="<?php echo $logo; ?>" title="<?php echo $name; ?>" alt="<?php echo $name; ?>" class="img-responsive" /></a>
            <?php } ?>
          <?php } else { ?>
            <h1><a href="<?php echo $home; ?>"><?php echo $name; ?></a></h1>
          <?php } ?>
        </div>
      </div>
      <div class="col-sm-5"><?php echo $search; ?>
      </div>
      <div class="col-sm-3"><?php echo $cart; ?></div>
    </div>
  </div>
</header>
<?php if ($categories) { ?>
<div class="container">
  <nav id="menu" class="navbar">
    <div class="navbar-header"><span id="category" class="visible-xs"><?php echo $text_category; ?></span>
      <button type="button" class="btn btn-navbar navbar-toggle" data-toggle="collapse" data-target=".navbar-ex1-collapse"><i class="fa fa-bars"></i></button>
    </div>
    <div class="collapse navbar-collapse navbar-ex1-collapse">
      <ul class="nav navbar-nav">
        <?php foreach ($categories as $category) { ?>
        <?php if ($category['children']) { ?>
        <li class="dropdown"><a href="<?php echo $category['href']; ?>" class="dropdown-toggle" data-toggle="dropdown"><?php echo $category['name']; ?></a>
          <div class="dropdown-menu">
            <div class="dropdown-inner">
              <?php foreach (array_chunk($category['children'], ceil(count($category['children']) / $category['column'])) as $children) { ?>
              <ul class="list-unstyled">
                <?php foreach ($children as $child) { ?>
                <li><a href="<?php echo $child['href']; ?>"><?php echo $child['name']; ?></a></li>
                <?php } ?>
              </ul>
              <?php } ?>
            </div>
            <a href="<?php echo $category['href']; ?>" class="see-all"><?php echo $text_all; ?> <?php echo $category['name']; ?></a> </div>
        </li>
        <?php } else { ?>
        <li><a href="<?php echo $category['href']; ?>"><?php echo $category['name']; ?></a></li>
        <?php } ?>
        <?php } ?>
      </ul>
    </div>
  </nav>
</div>
<?php } ?>

 

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


  • 2 weeks later...

тоже помогло, только еще похожий код вылез на месте логотипа, но полного адреса не видно , видно только что 84 строка  так  такой код

  <?php if ($home == $og_url) { ?>

заменил по аналогии , сайт вообще не грузится ) тему сменил вроде не появляется .. но мало ли .

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


1 час назад, l1key сказал:

заменил по аналогии , сайт вообще не грузится )

 

Не знаю, что у вас получилось, но должно было быть так:

 

<?php if (isset($home) && isset($og_url) && $home == $og_url) { ?>

 

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


  • 3 months later...

Привет всем.

Не хочу плодить темы, спрошу тут.

Установил ОС в подпапку:

site.com/ocstore

Хотел в шаблоне стандартную проверку сделать

<?php if ($home == $og_url) { ?>

а не тут-то было.

var_dump($home, $og_url);

на главной странице говорит:

Цитата

string(29) "http://site.com/ocstore/" string(37) "http://site.com/ocstore/ocstore/"

 

не подскажете, где косячек закрался?

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


Dotrox,

$data['og_url'] = (isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1')) ? HTTPS_SERVER : HTTP_SERVER) . substr($this->request->server['REQUEST_URI'], 1, (strlen($this->request->server['REQUEST_URI'])-1));

просто сдвинуть не на 1, а на 9?

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


32 минуты назад, Raensul сказал:

просто сдвинуть не на 1, а на 9?

Просто оторвать руки тому, кто это писал.

По нормальному, ссылка должна формироваться в контроллерах страницы через $this->url->link() и передаваться в шапку через дополнительный метод в document (по аналогии с тем, как тайтл, например. устанавливается).

 

Но, если хотите простой вариант, то хотя бы так:

$data['og_url'] = $server . ltrim(str_replace('ocstore', '', $this->request->server['REQUEST_URI']), '/')

$server - уже устанавливается в начале метода index после проверки текущего протокола (а потому нет необходимости проверять ещё раз и тем более подставлять ссылку прямо из конфига).

ocstore - название вашей директории.

Лишние слеши в начале удаляются через ltrim.

 

Хотя этот вариант менее дырявый, чем оригинал, но тут остаётся недостаток в виде возможности попадания в ссылку различного мусора, например utm меток.

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


6 минут назад, Raensul сказал:

ну это стандартная строка из движка

Если б была стандартная, я б не спрашивал, как og_url формируется.

 

После того, как вы сказали, что стандартная, я проверил ocStore и таки да, оно добавлено там. ocStore резко упал в моих глазах.

 

При чём, og_image то там нормально через document выставляется. А og_url смахивает на какой-то сознательны саботаж.

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


23 минуты назад, Raensul сказал:

нет под рукой чистого ОС - в нем то же самое, или там нормально?

В оригинальном ОК нет og_url, потому я и спрашивал.

И он всегда под рукой: https://github.com/opencart/opencart

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


 

3 часа назад, Dotrox сказал:

При чём, og_image то там нормально через document выставляется. А og_url смахивает на какой-то сознательны саботаж.

 

в Document для og_image есть сеттер.

для og_url его нет же смысла писать? только геттер?

и в нем вернуть Ваше:

$server . ltrim(str_replace('ocstore', '', $this->request->server['REQUEST_URI']), '/')

?

я пока не могу понять, как там получить линк текущей страницы...

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


1 минуту назад, Raensul сказал:

для og_url его нет же смысла писать? только геттер?

 

1 минуту назад, Raensul сказал:

я пока не могу понять, как там получить линк текущей страницы...

Вот потому и не можете понять :)

Надо делать полностью по аналогии с og_image (и сеттер и геттер) и тогда моё решение вообще не нужно. А иначе нет смысла трогать Document - он нужен только для того, чтоб можно было из контроллера страницы в контроллер шапки передать какую-то информацию.

 

То есть, правильное решение: добавляем в Document и сеттер и геттер и устанавливаем в контроллерах страниц (товар, категория и т.д.) ссылку через сеттер документа, а формируем ссылку для него через $this->url->link(). А затем в контроллере шапки получаем геттером установленную ссылку и передаём в $data['og_url'].

 

Либо неправильное решение (но простое и быстрое): вообще не трогаем ни Document, ни контроллеры страниц, а просто используем код, который я привёл несколькими сообщениями ранее.

 

Но только что-то одно из этих двух вариантов. Не надо пытаться их смешивать!

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


 

4 часа назад, Dotrox сказал:

Хотя этот вариант менее дырявый, чем оригинал, но тут остаётся недостаток в виде возможности попадания в ссылку различного мусора, например utm меток.

 

в моем случае если написать 

$data['og_url'] = $server . substr($this->request->server['REQUEST_URI'], 9, (strlen($this->request->server['REQUEST_URI'])-1));

то проблемы с мусором вроде не должно быть, но все равно это же костыль...

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


Только что, Raensul сказал:

в моем случае если написать 


$data['og_url'] = $server . substr($this->request->server['REQUEST_URI'], 9, (strlen($this->request->server['REQUEST_URI'])-1));

то проблемы с мусором вроде не должно быть, но все равно это же костыль...

А чем вам мой вариант не нравится?

Использование substr - это очень плохая идея, ибо он вслепую режет строку. Например, если вы захотите перенести сайт в корень домена, substr начнёт обрезать начальный кусок ссылки на страницу.

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


2 минуты назад, Dotrox сказал:

А чем вам мой вариант не нравится?

да он работает, просто подумал тоже о возможных проблемах с другими линками, с теми же тегами, мало ли.

а мой способ сработает вроде без этой проблемы, просто при переносе в корень нужно будет это учитывать.

 

9 минут назад, Dotrox сказал:

То есть, правильное решение: добавляем в Document и сеттер и геттер и устанавливаем в контроллерах страниц (товар, категория и т.д.) ссылку через сеттер документа, а формируем ссылку для него через $this->url->link(). А затем в контроллере шапки получаем геттером установленную ссылку и передаём в $data['og_url'].

вот потому наверное и написали ересь - строчка кода и вроде работает, а иначе нужно перелопатить тучу контроллеров.

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


1 минуту назад, Raensul сказал:

вот потому наверное и написали ересь - строчка кода и вроде работает, а иначе нужно перелопатить тучу контроллеров.

Тем не менее, для og_image это всё же сделали правильно. Правда, там оно добавлено пулл реквестом.

Но главное не это! Устанавливать ссылку через Document формируя в контроллерах через $this->url->link() или же выдирать из REQUEST_URI - это вопрос наполовину религиозный. Но вот обрезать слеш вначале ссылки через substr - это индикатор человека, который месяц назад познакомился с php (и до этого вообще программированием не занимался).

Ну, а зачем там отдельно проверяется протокол и выбирается ссылка на домен, при том, что это уже сделано здесь же чуть выше - тут вообще без вариантов. Разве что таки сознательный саботаж.

То есть, если оценивать оригинальный код целиком, то его писал либо ребёнок (если не по возрасту, то по уровню интеллекта), либо кто-то сознательно подлил дерьма в код ocStore.

 

9 минут назад, Raensul сказал:

подумал тоже о возможных проблемах с другими линками, с теми же тегами, мало ли.

а мой способ сработает вроде без этой проблемы

А вы можете описать те отличия из-за которых в моём варианте должны возникнуть проблемы, а в вашем их не будет? :)

При условии, что у вас нет тегов (а также товаров или категорий) с названием ocstore, результат работы обоих вариантов будет одинаков. А разница почувствуется, когда длина REQUEST_URI хотя бы на символ изменится в пределах тех символов, которые должны обрезаться. Например, в начале не окажется слеша или там окажется лишний слеш, или сайт переедет в корень домена - substr будет либо оставлять лишнее, либо обрезать нужное.

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


Og tags - ето надо делат по  документацию и не пользоват в основном коде. Еще и Гугл их читает.

Для лого лучше проверят $class = 'home'.

Вот мой модуль для ог теги:

https://www.opencart.com/index.php?route=marketplace/extension/info&extension_id=22963

там еще - картинки по размерам и все что нужно.

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

7 часов назад, Dotrox сказал:

А вы можете описать те отличия из-за которых в моём варианте должны возникнуть проблемы, а в вашем их не будет? :)

неа, не могу :)

спасибо большое, все разжевали.

реализовывать я это вряд ли буду, но буду знать, что оно есть :) обойдусь Вашим коротким вариантом :)

 

з.ы. а может тут на сервере админам стоит это сообщить?

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


Dotrox, все же мне энта мысль не дает покоя.

например в контроллере продукта можно:

$this->document->setOgUrl($this->url->link('product/product', 'product_id=' . $product_id));

а в контроллере хидера:

$data['og_url'] = $this->document->getOgUrl();

Это имели ввиду?

 

для категории

$this->document->setOgUrl($this->url->link('product/category', 'path=' . $path . $url));

для главной в home.php

$this->document->setOgUrl($this->url->link('common/home'));

В принципе работает, но я не знаю, в каких контроллерах еще нужно установить, чтобы ничего не пропустить

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


1 час назад, Raensul сказал:

Это имели ввиду?

Именно это.

 

1 час назад, Raensul сказал:

в каких контроллерах еще нужно установить, чтобы ничего не пропустить

В идеале - во всех контроллерах страниц. Минимум - главная, товар, категория, страница бренда, инфо страница.

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


прошу прощения, но не скажете, если ставить окстор в подпапку - гемор будет везде подстерегать?

в common.js где аяксом удаляется товар в корзине кусок:

if ((now_location == '/cart/') || (now_location == '/checkout/') || (getURLVar('route') == 'checkout/cart') || (getURLVar('route') == 'checkout/checkout')) {

не очень-то работает, пока не сделаю

if ((now_location == '/ocstore/cart/') || (now_location == '/checkout/') || (getURLVar('route') == 'checkout/cart') || (getURLVar('route') == 'checkout/checkout')) {

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

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


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

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

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

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

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

Вхід

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

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

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

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

Important Information

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