Фатальная ошибка {PHP}: использование $ this, когда не в контексте объекта (Joomla) - PullRequest
2 голосов
/ 08 апреля 2010

Я действительно не знаю php и попал в кирпичную стену.

Проблема в том, что мой сайт показывает следующую ошибку ...

Fatal error: Using $this when not in object context in /hermes/web07/b2350/pow.thefoodie/htdocs/index.php on line 11

Это началомоего файла index.php ...

<?php 
/*
  Joomla templates by Joomladesigns.co.uk
 */

// no direct access
 define( 'YOURBASEPATH', dirname(__FILE__) );
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $this->language; ?>" lang="<?php echo $this->language; ?>" >
<head>
<jdoc:include type="head" />
<!--[if lte IE 6]>
<style type="text/css">
#main_body ul li { behavior: url(<?php echo $this->baseurl; ?>/templates/<?php echo $this->template ?>/css/iepngfix.htc) }
</style>
<script defer type="text/javascript" src="<?php echo $this->baseurl; ?>/templates/<?php echo $this->template ?>/js/pngfix.js"></script>
<![endif]-->
<link href="<?php echo $this->baseurl; ?>/templates/<?php echo $this->template ?>/css/template_css.css" rel="stylesheet" type="text/css" media="all" />
<script type="text/javascript" src="<?php echo $this->baseurl; ?>/templates/<?php echo $this->template ?>/js/fx_styles.js"></script>
<script type="text/javascript" src="<?php echo $this->baseurl; ?>/templates/<?php echo $this->template ?>/js/accordion.js"></script>

<?php

 // *************************************************
 //
 // Template Parameters
 //
 // *************************************************

 $h1         = $this->params->get("logo");
 $linked_h1    = ($this->params->get("logoLinked", 1)  == 0)?"false":"true";
 $h1_title    = $this->params->get("logoTitle"); 
 $h2_motto  = $this->params->get("logoMotto");

 // Please do NOT change this unless you know what you doing.

 $template_path = $this->baseurl.'/templates/'.$this->template; // template path

 $default_font = "default";


 // **************************************************

?>

</head>

Любая помощь будет великолепна, так как я полностью потерялся.

Ответы [ 2 ]

1 голос
/ 08 апреля 2010

Ну, вы можете использовать $this только внутри класса. За пределами класса $this не должно существовать. Он в основном ссылается на текущий объект класса, внутри которого вы работаете. Чтобы это работало правильно, вам нужно определить переменную как новый класс, а затем ссылаться на все через эту переменную, например:

$myvar = new MyClass();
$h1 = $myvar->params->get("logo");

Если это то, что вы делаете.

1 голос
/ 08 апреля 2010

Ошибка довольно очевидна. Похоже, он задыхается от этого бита:

<?php echo $this->language; ?>

$this предназначен только для использования внутри методов класса. Попробуйте выяснить, где на самом деле определяется «язык». Вы можете попробовать заменить $this->language просто $language, но я не знаю, как настроены ваши вещи.

Редактировать: На самом деле не похоже, что у вас есть какие-либо операторы include до этого ... так что ничего не должно определяться Если что-то еще не включает ваш файл index.php, но это немного необычно для включения индекса.

Если вы скопировали этот шаблон Joomla откуда-то, вы, вероятно, поместили его не в то место.

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