Статьи

Создать пользовательскую страницу в OpenCart

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

Для этого мы предполагаем, что у вас установлена ​​рабочая копия 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, рабочий процесс создания новой пользовательской страницы должен быть знаком.

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