Прежде чем начать, обратите внимание, что мы планируем специально перейти к статье.
Для этого мы предполагаем, что у вас установлена рабочая копия OpenCart и вы готовы приступить к работе.
Основной рабочий процесс
OpenCart построен с использованием популярного шаблона программирования MVC. К этому шаблону добавлен еще один элемент с именем «L» — языковая часть, поэтому в OpenCart он называется шаблоном MVC-L. Я не буду вдаваться в подробности шаблона MVC, так как это очень популярный и знакомый шаблон проектирования, и мы подробно рассмотрели его в других руководствах.
Тем не менее, нам все еще нужно взглянуть на рабочий процесс, используя этот шаблон.
Во-первых, контроллер действует как точка входа для любой страницы, на которой вы будете определять большую часть логики приложения. Модель имеет дело с внутренней базой данных, и представление отвечает за подготовку контента, который должен быть представлен конечному пользователю. В контексте OpenCart вам, по крайней мере, потребуется реализовать контроллер и представление для создания новой пользовательской страницы.
Настройка контроллера
Во-первых, давайте попробуем понять роль контроллера в OpenCart. Контроллер — это первый элемент, который будет выполнен, когда вы запросите любую страницу. Прежде всего, он отвечает за настройку переменных, которые впоследствии будут использоваться в представлении для отображения. Хотя в универсальном контроллере происходит много вещей:
- Вы можете загружать языковые файлы, чтобы вы могли использовать языковые переменные для отображения статического текста.
- Вы можете загрузить файлы моделей, чтобы использовать методы, определенные в этих моделях, для извлечения данных из внутренней базы данных.
- Вы можете определить файл шаблона, который будет использоваться представлением.
- Вы можете настроить пользовательские переменные, назначив им содержимое, которое будет использоваться в файле шаблона.
- Вы можете объявить дочерние шаблоны, которые вы хотите отобразить, как часть основного шаблона. Простейшим примером этого являются шаблоны верхнего и нижнего колонтитула, которые вы хотели бы отобразить в своем основном шаблоне.
- Наконец, вы также можете установить значения для таких вещей, как заголовок документа, мета-описание и т. Д.
Достаточно теории, верно? Давайте посмотрим, как выглядит наш пользовательский контроллер. Идите дальше и создайте новую пользовательскую custompage catalog/controller под catalog/controller . Создайте новый файл mycustompage.php под catalog/controller/custompage . Вставьте следующий код во вновь созданный файл контроллера «mycustompage.php».
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
<?php
class ControllerCustompageMycustompage extends Controller {
public function index() {
// set title of the page
$this->document->setTitle(«My Custom Page»);
// define template file
if (file_exists(DIR_TEMPLATE . $this->config->get(‘config_template’) . ‘/template/custompage/mycustompage.tpl’)) {
$this->template = $this->config->get(‘config_template’) .
} else {
$this->template = ‘default/template/custompage/mycustompage.tpl’;
}
// define children templates
$this->children = array(
‘common/column_left’,
‘common/column_right’,
‘common/content_top’,
‘common/content_bottom’,
‘common/footer’,
‘common/header’
);
// set data to the variable
$this->data[‘my_custom_text’] = «This is my custom page.»;
// call the «View» to render the output
$this->response->setOutput($this->render());
}
}
?>
|
Давайте поймем соглашение об именах класса контроллера. Имя класса контроллера строится в соответствии со структурой каталогов и соглашением о верблюдах. Обратите внимание, что имя класса начинается с ключевого слова «Controller», за которым следует имя каталога («Custompage»), в котором находится файл класса. И, наконец, имя файла класса («Mycustompage») добавляется в конце. Теперь давайте разберем каждый раздел подробно.
Сначала мы установили значение тега заголовка html для нашей пользовательской страницы.
|
1
|
$this->document->setTitle(«My Custom Page»);
|
В следующем разделе мы определили имя файла шаблона, который будет использоваться элементом «Вид». Здесь важно отметить, что мы сначала проверили, что если файл шаблона доступен в пользовательском наборе тем из внутреннего интерфейса, если он доступен в пользовательской теме, мы будем использовать его, в противном случае мы будем использовать файл шаблона в теме «по умолчанию».
Это концепция переопределения шаблонов .
|
1
2
3
4
5
|
if (file_exists(DIR_TEMPLATE . $this->config->get(‘config_template’) . ‘/template/custompage/mycustompage.tpl’)) {
$this->template = $this->config->get(‘config_template’) .
} else {
$this->template = ‘default/template/custompage/mycustompage.tpl’;
}
|
Мы также определили дочерние шаблоны, используя массив. В качестве примера, common/header отображается на файл шаблона, расположенный в catalog/view/theme/default/template/common/header.tpl и выполняет то же самое. Результат будет назначен переменной $ header, которую вы можете использовать в файле шаблона для отображения заголовка сайта.
|
1
2
3
4
5
6
7
8
|
$this->children = array(
‘common/column_left’,
‘common/column_right’,
‘common/content_top’,
‘common/content_bottom’,
‘common/footer’,
‘common/header’
);
|
Кроме того, мы продемонстрировали, как вы можете настроить пользовательские переменные, которые будут доступны в файле шаблона. Хотя мы использовали здесь простой статический текст, вы можете назначить более разумный контент, например, массив продуктов, извлеченный из
база данных.
|
1
|
$this->data[‘my_custom_text’] = «This is my custom page.»;
|
Наконец, самое важное — вызвать view, чтобы начать процесс рендеринга.
|
1
|
$this->response->setOutput($this->render());
|
Так что это проблеск рабочего процесса контроллера.
Во route=custompage/mycustompage вы получите доступ к этому контроллеру с помощью переменной строки запроса route=custompage/mycustompage . Здесь важно отметить, что если вы определяете метод контроллера с любым другим именем, кроме index вы должны указать это также и в URL.
Например, если вы создали метод с именем custom , ваш внешний URL-формат должен выглядеть следующим образом: route=custompage/mycustompage/custom .
Давайте разберемся, как карты OpenCart любой URL к определенному файлу контроллера. Формат переменной маршрута: {directory}/{filename}/{methodname} . {directory} отображается в каталог в catalog/controller . {filename} отображается на имя файла контроллера в catalog/controller/{directory} . И наконец, он будет искать метод контроллера с именем {methodname} если он указан в маршруте, в противном случае он вызовет метод index по умолчанию.
Подготовить вид
В этом разделе мы создадим файл шаблона представления, который мы определили ранее в методе index контроллера. Создайте новую пользовательскую custompage catalog/view/theme/default/template под catalog/view/theme/default/template . Создайте новый файл mycustompage.tpl под catalog/view/theme/default/template/custompage . Вставьте следующее содержимое во вновь созданный файл шаблона mycustompage.tpl .
|
01
02
03
04
05
06
07
08
09
10
11
12
|
<?php
echo $header;
echo $column_left;
echo $column_right;
<div id=»content»>
<?php
echo $content_top;
echo $my_custom_text;
echo $content_bottom;
?>
</div>
<?php echo $footer;
|
Так что это наш основной файл шаблона макета, который отвечает за отображение содержимого нашей пользовательской страницы. В этом файле шаблона мы только что использовали переменные, которые мы установили в методе index контроллера.
Единственная пользовательская переменная в этом файле шаблона — это $my_custom_text , остальные переменные содержат содержимое, относящееся к $my_custom_text шаблонам, например, заголовок, нижний колонтитул и т. Д. Переменные $column_left , $column_right , $content_top и $content_bottom используются для отображения назначенных модулей. на нашу пользовательскую страницу с бэк-энда.
Если вы хотите назначить модули для нашей пользовательской страницы, сначала вам нужно создать новую запись макета из серверной части. После добавления нового макета вы хотели бы добавить маршрут, например custompage/mycustompage для этого макета. Теперь вы можете назначить любой модуль на нашу пользовательскую страницу.
Вы только что создали полную пользовательскую страницу в OpenCart! Вы можете проверить то же самое по URL: http://www.yoursiteurl.com/index.php?route=custompage/mycustompage .

Вывод
В этом уроке мы узнали, как создать собственную страницу в OpenCart. Если вы знакомы с шаблоном MVC, рабочий процесс создания новой пользовательской страницы должен быть знаком.
Продолжайте изучать несколько основных файлов, чтобы ознакомиться с кодом. Я бы хотел, чтобы вы расширили наш пример, загрузив модель и языковые файлы в контроллер, и посмотрите, как все работает! Жду отзывов, вопросов и комментариев!