Reputation: 1567
I am trying to create a whole new page for OpenCart for a News section, and I was pretty sure I created all the right files, the page renders but it is blank in the middle (Renders the header and footer fine). What did I miss?!?
Link To Hit Page: index.php?route=common/news&news_id=A_NUMBER
Table Dump:
CREATE TABLE IF NOT EXISTS `news` (
`id` int(255) NOT NULL AUTO_INCREMENT,
`user_id` int(255) NOT NULL,
`title` varchar(255) NOT NULL,
`body` longtext NOT NULL,
`added` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`views` int(255) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=0 ;
Language (news.php):
<?php
// Text
$_['heading_title'] = '%s';
?>
Controller (news.php):
<?php
class ControllerCommonNews extends Controller {
private $error = array();
public function index() {
$this->language->load('common/news');
$this->data['heading_title'] = $this->language->get('heading_title');
$this->data['breadcrumbs'] = array();
$this->data['breadcrumbs'][] = array(
'text' => $this->language->get('text_home'),
'href' => $this->url->link('common/home'),
'separator' => false
);
$news_id = $_REQUEST['news_id'];
$this->load->model('common/news');
$news_info = $this->model_common_news->getNews($news_id);
if ($news_info) {
$this->data['breadcrumbs'][] = array(
'title' => $news_info['title'],
'body' => $news_info['body']
);
}
if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/common/news.tpl')) {
$this->template = $this->config->get('config_template') . '/template/common/news.tpl';
} else {
$this->template = 'default/template/common/news.tpl';
}
$this->children = array(
'common/column_left',
'common/column_right',
'common/content_top',
'common/content_bottom',
'common/footer',
'common/header'
);
$this->response->setOutput($this->render());
}
}
?>
Model (news.php):
<?php
class ModelCommonNews extends Model {
public function getNews($news_id) {
$query = $this->db->query("SELECT DISTINCT * FROM " . DB_PREFIX . "news WHERE id = '" . (int)$news_id . "'");
return $query->row;
}
}
?>
View (news.tpl):
<?php echo $header; ?><?php echo $column_left; ?><?php echo $column_right; ?>
<div id="content"><?php echo $content_top; ?>
<h1 style="display: none;"><?php echo $heading_title; ?></h1>
<?php echo $content_bottom; ?>
</div>
<?php echo $footer; ?>
If more info is needed ask away!!! Any help is greatly appreciated.
Upvotes: 1
Views: 2949
Reputation: 6748
You need to assign some values to the $this->data array in your controller, and you also need to add those variables to your view.
Controller
if ($news_info) {
$this->data['breadcrumbs'][] = array(
'title' => $news_info['title'],
'body' => $news_info['body']
);
$this->data['news_title'] = $news_info['news_title'];
$this->data['news_text'] = $news_info['news_text'];
}
View
<?php echo $header; ?><?php echo $column_left; ?><?php echo $column_right; ?>
<div id="content"><?php echo $content_top; ?>
<h1 style="display: none;"><?php echo $heading_title; ?></h1>
<h2><?php echo $news_title; ?></h2>
<div><?php echo $news_text; ?></div>
<?php echo $content_bottom; ?>
</div>
<?php echo $footer; ?>
Something like that should work.
Upvotes: 2