В OpenCart изменение шаблона, прикрепление модулей к странице home и их удаление из файлов макета


Содержание материала:

Написание модуля для OpenCart 3.x

OpenCart — одна из популярных CMS для магазина, но в стандартном виде в нем не очень-то много возможностей, что компенсируется большим количеством платных и бесплатных модулей. В этой статье на простом примере я постараюсь рассказать как создать свой модуль для OpenCart 3.x.

Модуль OpenCart может быть исполнен в нескольких вариантах:

  1. Файл-модификатор OCMOD, который изменяет уже существующие в системе файлы. Подробнее о том, как написать модификатор читайте в следующей статье.
  2. Набор php, twig и других файлов, которые добавляют новые возможности в системе как отдельная программа и не затрагивающие стандартный функционал.
  3. Комбинированный — сочетание модификатора и файлов php, twig и т.д.

В этой статье рассказывается как написать свой модуль для OpenCart добавляющий новые возможности в систему.

Начну с того, что OpenCart построен на схеме MVC (Model-View-Controller). Это значит, что модуль может состоять из следующих файлов:

  • Контроллер (Controller) — php-файл, который будет вызван первым и отвечает за логику работы конкретного модуля, определяет, что именно будет делать модуль, обрабатывает взаимодействие с пользователем и т.д. Контроллер может использовать (хотя и не обязательно) Модель и Представление.
  • Модель (Model) — php-файл, отвечающий за чтение и запись данных в базу данных, т.е. содержит функции для получения или сохранения данных. Файл модели не обязателен.
  • Представление (View) — файл какого-то html-шаблона, который определяет каким образом будет выведена информация на экран браузера. В OpenCart 3.x для создания шаблонов применяется обработчик шаблонов Twig и поэтому файл имеют расширение .twig.

Для поддержки мультиязычности в OpenCart так же есть языковые файлы, о которых будет чуть ниже. Файлы OpenCart-а организованы по папкам, контроллеры в своих, представления в своих и т.д. Итак, для создания модуля и правильного расположения файлов, нам понядобятся следующие папки и файлы:

Кроме контроллера, модели и представления, у модуля так же обычно есть так называемые языковые файлы, которые находятся в папках:

Впринципе, если планируется только 1 язык, то можно сделать языковые файлы только для него.

Минимально, у модуля должен быть хотя бы 1 php-файл — контроллер. Остальные составляющие, впринципе, могут и отсутствовать, если модуль не работает с базой данных и ничего не выводит пользователю. Но думаю, не имеет смысла рассматривать такой модуль, т.к. таким образом, мы не сможем понять всю цепочку создания полноценного модуля.

Итак, представим, что мы разрабатываем пример модуля для OpenCart 3.x, который будет иметь административную часть (back) и пользовательскую (front). В административной части, он будет иметь лишь одну настройку «Статус», которую можно менять на Включено/Выключено. А в пользовательской части пусть просто выведет страницу с текстом «Пример модуля на OpenCart 3.x», если он включен или сообщение об ошибке, если выключен. Файлы примера модуля пусть будут иметь имя example, т.е. example.php, example.twig и т.д.

Административная часть модуля

Приведу сразу исходные тексты файлов, думаю, на примерах будет проще понять что для чего нужно. Всего их 4 шт: контроллер, модель, представление и языковой файл для русского языка. Вкратце как происходит взаимодействие напишу сразу после исходного кода.

Контроллер модуля admin/controller/extension/module/example.php

Создание контроллера предполагает чтение из базы единственной настройки — статуса (включено/выключено), выведение на экран представления (шаблона) и сохранение настройки, когда пользователь нажал соответствующую кнопку.

Модель модуля admin/model/extension/module/example.php

Создание модели подразумевает работу с базой данных, а именно сохранение и чтение данных. В данном случае, можно использовать стандартные opencart-овские методы, но при необходимости, вы конечно можете, создавать свои таблицы и сохранять и читать из них.

Языковой файл модуля admin/language/ru-ru/extension/module/example.php

Здесь все просто: нужно написать все используемые фразы и предложения и их переводы на русский, которые будут использоваться в представлении (шаблоне).

Представление (шаблон) модуля admin/view/template/extension/module/example.twig

Как упоминалось выше, для создания представлений-шаблонов, нужно использовать twig. Русскоязычную документацию можете посмотреть, например, на x-twig.ru

Теперь еще несколько слов о том, как всё примерно работает и взаимодействует.

Когда мы нажимаем на кнопку перехода в настройки модуля, в адресной строке получается адрес заканчивающийся на index.php?route=extension/module/example&user_token=123. Токен в конце соответственно будет другой. Нас интересует часть extension/module/example — именно она и говорит opencart-у, где находится файл нашего контроллера.

Получивший управление файл контроллера загружает файл-модель для обращения к базе данных, загружает языковой файл и выводит шаблон twig на экран браузера.

Обратите внимание: в первых строках контроллера и модели идут названия классов: class ControllerExtensionModuleExample extends Controller и class ModelExtensionModuleExample extends Model. Как видим, в их названиях присутствует путь к модулю и название модуля. Если назвать классы как-то иначе, ничего работать не будет.

Пользовательская часть модуля

Контроллер модуля catalog/controller/extension/module/example.php

Создание контроллера пользовательской части похоже на административную, только не нужно сохранять настройки, нужно только написать код, который вывводит информацию в зависимости от того включен модуль или нет.

Модель модуля catalog/model/extension/module/example.php

В нашем примере модель пользовательской части маленькая, т.к. нужно лищь прочитать одну настройку.

Языковой файл модуля catalog/langugage/ru-ru/extension/module/example.php

Представление (шаблон) модуля catalog/view/theme/default/template/extension/module/example.twig

Задача представления вывести на экран посетителю либо страницу с заголовком «Пример модуля на OpenCart 3.x», либо с сообщением «Модуль выключен» в зависимости от того, что выбрано в статусе модуля в его настройках.

Принцип работы пользовательской части такой же, как и административной. В адресной строке будет соответственно index.php?route=extension/module/example, что и говорит opencart-у какой файл контроллера нужно использовать и из какой папки.

В административной части и в пользовательской я использовал по 4 файла (контроллер, модель, языковой файл и представление). Однако, как я писал выше, впринципе, вы можете создать более компактный модуль, сократив количество файлов только до одного контроллера, если он всё необходимое сделает сам. Так же, можно и наоборот, написать более сложный модуль, который будет состоять из нескольких контроллеров, нескольких моделей и нескольких шаблонов.

Создание архива для загрузки модуля установщиком расширений

Когда модуль полностью готов, его лучше оформить в виде архивного файла, который OpenCart может загрузить и установить в систему. Для этого нужно создать папку upload и поместить в нее все файлы модуля со всей структурой папок в которых они находятся. Затем папку нужно упаковать в zip-архив с именем название_модуля.ocmod.zip. В примере выше получится архив example.ocmod.zip.

Теперь модуль готов для автоустановки установщиком расширений.

После установки модуля он появляется в списке модулей.

Модуль нужно активировать нажав на зеленую кнопку со знаком «плюс», после чего можно зайти в настройки модуля через синюю кнопку со знаком «карандаш».

В OpenCart изменение шаблона, прикрепление модулей к странице home и их удаление из файлов макета

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

Несмотря на то, что OpenCart является довольно распространенной CMS, полного, подробного и актуального мануала по верстке для новичков для OpenCart в сети нет. Даже у меня на блоге пока только отдельные уловки по работе с данной системой. Давайте попробуем восполнить этот пробел и на конкретном примере научимся верстать под OpenCart 1.5.

Стоит отметить, что верстка под любую КМС остается версткой – мы просто располагаем элементы соответственно макету от дизайнера. Просто в каждом случае необходимо узнать, какие именно файлы менять и не забывать об их взаимосвязи. В этом плане опенкарт имеет некоторые отличия от интеграции верстки в вордпресс, к примеру.

Итак, начнем с создания шаблона. В опенкарт шаблон – это набор файлов с расширением tpl. По сути дела это обычный php файл – в нем можно писать php код, заключенный в соответствующие теги, а также html разметку. Мы не будем делать новый шаблон, а начнем править уже имеющийся. В моем случае это обуславливалось тем, что интернет магазин уже имел на страницах практически все необходимые элементы (точнее, блоки элементов), мне надо было только изменить их внешний вид. Справедливости ради, весьма кардинально.

Итак, выберите любую тему (они находятся по адресу catalog\view\theme) скопируйте её и начинайте менять. Начнем с главной страницы — catalog\view\theme\tea\template\common\home.tpl. Тема у нас называется tea, у вас, скорее всего будет так: catalog\view\theme\default\template\common\home.tpl

Посмотрим на главную страницу:

Она весьма отличается от остальных, поэтому можно смело удалить все из файла home.tpl и начать верстать с нуля. Здесь нет ни футера, ни хедера, только логотип, меню и еще картинка. То есть начало у нас такое:

Далее стили. Убираем отступы у боди и задаем размер шрифта по умолчанию для документа:

Теперь подключаем парочку стилей, которые нам понадобятся

Сама верстка чрезвычайно проста: обертка (wrapper) – в ней картинка, затем див, в котором сверху вниз див с парочкой спанов и меню под ними. А также еще сбоку картинка.

Если вы не знаете ваш код меню, то ищите его в той же папке (common) в файле header.tpl. А мы наше меню немного облагородим. Заставим выезжать и сделаем подложку при наведении:

Вроде бы теперь главная страница у нас соответствует макету. Однако, мы делаем сразу же адаптированный сайт, хорошо отображающийся и на различных мобильных устройствах. Поэтому смотрим макет адаптивки:

Что мы видим? Как только ширина экрана будет меньше 750px, мы все центрируем, добавляем отступы, а меню делаем столбиком. Насчет меню – не самое стандартное решение в данном случае, на других страницах будет обычное адаптивное. Но, что делать – такой дизайн – я всего лишь верстальщик. Итак, стили:

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

Теперь проверяем, мобайл френдли ли наш сайт по мнению основных поисковых систем?

Все отлично! У вас может возникнуть вопрос: а чем тогда отличается данная верстка от обычной, без натяжки на кмс опенкарт? В данном случае – только кодом меню. Но я и предупреждал, что ничего сложного нет.

В следующих главах мы научимся натягивать верстку опенкарт и для других страниц.

Редактирование шаблона opencart 3

Одной из наиболее важных и больших нововведений в OpenCart 3.0 является новый редактор тем. Настроить тему по умолчанию, наконец, можно прямо из раздела «Дизайн» панели администратора.

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

Обзор редактора тем Opencart 3.0

Чтобы найти редактор тем, откройте раздел администратора OpenCart и перейдите к Design > Theme Editor.

Прежде всего, важно отметить, что редактор тем OpenCart 3.0 использует Twig в качестве движка шаблонов для PHP.

Это означает, что редактор тем дает вам контроль над элементами HTML в ваших шаблонах. Это не включает в себя модификацию стилей и CSS.

Вы можете узнать о Twig в документации здесь.

Теперь в этом разделе вы заметите три основных поля:

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

Choose a template

Выберите файл шаблона, который вы хотите настроить. Например, если вы хотите отредактировать домашнюю страницу, выберите common, а затем home.twig.

Theme History

Как следует из названия, именно здесь все внесенные вами изменения регистрируются, чтобы вы могли легко получить к ним доступ и вернуться или продолжить вносить изменения в шаблон OpenCart.

Как отредактировать шаблон

Допустим, мы хотим изменить один из шаблонов на нашем сайте OpenCart. Мы оставим магазин по умолчанию и выберем шаблон товара.

Шаблон товара содержит файлы .twig, которые вы можете увидеть на скриншоте ниже

Мы выберем файл product.twig файл, чтобы мы могли редактировать страницу товара в нашем магазине OpenCart.

Модификация, которую мы будем реализовывать, проста. Мы изменим цвет ссылки хлебных крошек в навигации.

Вот пример кода, который мы будем использовать:

Вставьте пример вместо 5 строки:

Теперь нажмите кнопку «Сохранить» и перейдите в магазин, чтобы просмотреть изменения.

Войдите на любую страницу продукта, и вы заметите, что ссылка на хлебную крошку теперь окрашена в красный цвет:

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

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

Вам больше не нужно обращаться к файлам и шаблонам вашего магазина через FTP и использовать различные языковые редакторы для реализации изменений. Все выполняется прямо с вашей приборной панели.

Нам очень интересно узнать, что вы думаете о новой функции в OpenCart, поэтому, пожалуйста, поделитесь своим мнением и опытом в комментариях ниже!

Не применяются изменения шаблона в Opencart

У меня магазин на opencart и я ставил тему yoodream, так же установлен VQMODE и немецкий язык (если это всё имеет значение). Я хотел убрать из шапки wishlist. В гугле немало информации по этому поводу, и я пробовал способы, которые там приводятся. Там советуют найти файл header.twig и там удалить соответствующие строки. Я пробовал удалять как в теме Default, так и в папке темы yoodream, и даже через админку в разделе Design->ThemeEditor->common->header.twig, но изменения не видны. Пробовал кеш удалять, не помогло.

Что может быть не так?

P.S. Opencart 3 версия.

1 ответ 1

Оказалось кэш ещё хранится в папке storage/cahe. Как там удалил, то всё сразу отобразилось.

Руководство Дизайнера

Содержание

Создание пользовательской темы

Для людей, использующих OpenCart, тема по-умолчанию предоставляется со стандартной установкой, отвечая всем базовым потребностям дизайна интернет-магазина. Пользователи, желающие добавить в настройки темы особой функциональности, например, изменение цветовой схемы, разнообразие границ, шрифта, интервала, или же любые другие элементы стиля, которые позволят улучшить внешний вид интернет-магазина, могут создать собственные пользовательские темы. Структура директорий OpenCart позволяет легко вносить изменения в стиль или внешний вид витрины магазина. Для тех, кто не желает заморачиваться над созданием собственной темы, в Каталоге Дополнений OpenCart можно отыскать более 1600 готовых тем, доступных для покупки и скачивания. Если же вы планируете самостоятельно приступить к созданию пользовательской темы для вашего магазина, вы должны обладать базовыми функциональными знаниями HTML и CSS для веб-дизайна. Знание PHP и JavaScript сможет значительно разнообразить, создаваемую тему, но при этом оно не является важным элементом дизайна.

Структура папки темы по-умолчанию

Перед тем, как приступить к созданию собственной тему, внимательно ознакомьтесь с расположение папки темы по-умолчанию, потому как расположение вашей новой темы должно соответствовать данной файловой структуре. Тема по-умолчанию реализуется в системе OpenCart, с помощью шаблона Model-View-Controller (см. Руководство разработчика). Папка View содержит все файлы, необходимые для изменения отображения вашего интернет-магазина. Таблица стилей темы по-умолчанию, а также, шаблонные файлы доступны в корневой папки /catalog/view/theme/default:

Папка default содержит следующие три папки:

Template (шаблон)

Папка template содержит шаблонные файлы(.tpl). Эти .tpl файлы представляют собой смесь HTML и PHP и используются исключительно для создания структуры веб-страницы. В конечном итоге PHP преобразуется в HTML для отображения в браузере, а это означает, что вы не увидите PHP при просмотре источника в браузере. Открыв папку template, вы увидите, что большинство папок организованы в интуитивные категории. Каждая из этих папок содержит свой набор .tpl файлов.

Так, как папки упорядочены интуитивно, файлы, относящиеся к товарам будут расположены в папке «product», файлы управления модулями — в папке «module», файлы счета страниц — в папке «account» и т.д. Папка «common» содержит наиболее используемые шаблонные файлы. Макет домашней страницы расположен в файле home.tpl. Другие файлы, такие как header.tpl, footer.tpl, column_left.tpl, column_right.tpl, расположены в common и составляют отдельные разделы html на домашней странице. Что касается других папок, перемещаться по ним для определения файлов, которые необходимо изменить, чтобы получить желаемые результаты на странице, может быть сложно. Вы можете встретить два .tpl файлы с одинаковым именем, но каждый из них будет контролировать структуры различных страниц/разделов. Template/Module/Category.tpl определяет структуру модуля Категория на витрине магазина, в то время, как template/product/category.tpl определяет структуру HTML на странице категории, где товары размещаются по категориям. Создавая собственную тему, вам необходимо будет посмотреть исходный код страницы, которую вы хотите изменить в вашем браузере, и сравнить его с соответствующим .tpl файлом, чтобы увидеть совпадения, а также, выделить файлы управления той или иной частью страницы. Детальнее об изменении содержимого шаблонного файла, читайте далее.

Топ-пост этого месяца:  Yii2 mailer. Настройка и отправка почты

Stylesheet (таблица стилей)

Папка «stylesheet» содержит все CSS-файлы, определяющие элементы стиля интернет-магазина. Stylesheet.css — это главная таблица, которая используется для изменения элементов стиля каждого макета. При создании таблиц стилей новой темы, мы будем возвращаться к данной таблице. Модули слайд-шоу и карусель требуют собственных стилей, поэтому в папку «stylesheet» они включены как slideshow.css и carousel.css.

Image (изображение)

Файл «image» является местом расположения всех изображений магазина, которые соединены в .tpl файлы. Эти изображения включают кнопки, звездочки рейтинга и стрелочки, видимые на витрине магазина. Если вы планируете добавить собственные кнопки, данная папка — это место для их воспроизведения в HTML.

Создать собственную тему

Теперь, когда вы ознакомились с общей структурой папки «default», можно приступить к созданию собственной темы. Наша стратегия заключается в захвате и копировании конкретных .tpl и CSS-файлов из темы по-умолчанию, с целью изменения стиля и структуры магазина в наших файлах, и их дальнейшей загрузке в папку, создаваемой темы «catalog/view/theme». Нам не нужны все .tpl или .css файлы без исключения для достижения желаемого дизайна, мы выполним загрузку и внесем изменения только в некоторые из них. Помните, чем меньше файлов будет модифицировано для достижения вашей цели, тем легче будет выполнять обновления вашего интернет-магазина.

Шаг1: Создать папку для размещения новой темы

Откройте «/catalog/view/theme» в корневой папке вашего магазина.Здесь будет расположена тема интернет-магазина OpenCart по-умолчанию. Создаем новую папку, соответствующую имени новой темы. В ней создаем папки «template», «image» и «stylesheet».

Всякий раз, при добавлении файла, вам необходимо будет повторять путь к нему, точно так же, как показано в папке по-умолчанию. Например, вы решили изменить файл «home.tpl». Для этого вам необходимо создать папку «template» и папку «common» внутри нее; И только теперь, вы сможете добавить файл home.tpl в папку «common». Вы в праве просто скопировать файл stylesheet.css из папки по-умолчанию и загрузить его в папку новой темы «stylesheet», так как данный файл редактируется в определенный момент.


Модификация файлов, непосредственно расположенных в папке «default» запрещена. Они должны оставаться нетронутым. Для начала, изменяемый файл необходимо скачать, затем загрузить его в папку новой темы и только после этого можно приступить к редактированию.

Создавая собственную тему, файлы ядра по-умолчанию должны оставаться неизменными. Изменения могут усложнить процесс обновления вашего магазина. Не забывайте сначала скачивать изменяемый файл из папки «default», а потом загружать его в папку новой темы. Не загружайте файл обратно в папку «default». Данным вы можете перезаписать тему по-умолчанию.

OpenCart сможет прочесть вашу тему без необходимости перемещения или копирования всех отдельных .tpl, .png или .css файлов в папку новой темы. Другими словами, вам необходимо загрузить только те файлы, которые подвергаются модификации. Например, если вы желаете изменить файл stylesheet.css в папке default > stylesheet and the account.tpl и в папке default > template > account, то загрузить в папку новой темы вам будет необходимо только эти два файла. При выборе темы в панели администратора, OpenCart переопределит файлы stylesheet.css и account.tpl с внесенными изменениями по-умолчанию, сохранив, при этом, структуру и стиль для остальных файлов в папках «stylesheet», «template» и «image».

Шаг2: Ссылка на файл stylesheet.css новой темы в header.tpl

Файл header.tpl — первый файл, который необходимо изменить. Первоначальным местом расположения данного файла является папка темы по-умолчанию: default > template > common. Открыв файл в текстовом редакторе, вы увидите вводный тег, завершенные элементы и вводный тег, включенными.Файл header.tpl предназначен для отображения практически на каждой странице вашего магазина. В данный момент элемент будет предоставлять ссылку на файл stylesheet.css в папке темы по-умолчанию. Чтобы ссылка на файл stylesheet.css новой темы была доступна, измените путь к файлу.

Чтобы связать файл stylesheet.css с новой темой, измените заголовок в строке 19 «href =» из:

название папки «newtheme» будут заменено на имя создаваемой пользовательской темы в корневой папке. Если вы планируете редактирование файлов slideshow.css, ie7.css, ie6.css или carousel.css, вам будет необходимо изменить путь к расположению этих файлов в header.tpl.

Шаг3: Открыть доступ к новой теме в панели управления

Чтобы сделать новую тему доступной в панели управления, выполняем переход Настройки > Витрина и выбираем имя папки, в которой содержится новая тема, в строке шаблон магазина.

Выполнив модификацию .css или .tpl файлов в папке новой темы, результат отобразится в нашем браузере. Обновив домашнюю станицу, вы не увидите никаких различий с темой по-умолчанию, если файлы не были изменены. Данным вы сможете определить работает ли система.

Шаг4: Внести изменения в таблицу стилей

Выполните редактирование элементов стиля новой темы, прежде чем приступать к редактированию HTML.

Шаг5: Изменение содержимого шаблонного файла (необязательно)

Закончив с дизайном, нам может понадобится изменить структуру или содержимое HTML-файлов. Это последний шаг создания пользовательской темы OpenCart. Помните, вы всегда можете вернуться к теме по-умолчанию, выбрав ее среди настроек магазина в панели администратора.

Записки инженера

Доступным языком заметки по IT технологиям

Добавляем новую страницу (схему) в OpenCart

Иногда возникает потребность в создание новой страницы или схемы под OpenCart, под страницей я буду понимать новую связку файла представления (.tpl) и контроллера (php).

Как пример мы хотим сделать страницу, где будет выводиться все последние поступления. Это будет пустая страница типа home.tpl, в админпанели OpenCart мы установим стандартный модуль «Последние» и добавим его на вывод в наш новую схему.

Итак создаем новую страницу или схему в CMS OpenCart

Первым делом создадим директорию latest по адресу catalog\controller. Заходим в нее и создаем php файл контроллера, назовем его также, т.е. latest.php

Внутри контроллера пропишем

Это стандартный контроллер для шаблона home.tpl, изменили мы только название класса с «ControllerCommonHome» на «ControllerLatestLatest» и строки с
«/template/common/home.tpl» на «/template/latest/latest.tpl».

Для страницы где выводиться последние поступления это будет достаточно, по сути мы создаем клон шаблона common/home.tpl.

Далее создаем файл представления для нашей страницы, переходим в catalog/view/theme/имя_вашей_темы/template

и создаем одноименную директорию, как и в контроллере, т.е. «latest». Переходим в нее и создаем файл шаблон latest.tpl. Наполняем его содержимым, т.к. мы создаем клон home.tpl, то наполним его идентичным содержимым, т.е.

Переходим в панель администратора, далее в Система->Дизайн->Схема. Добавляем новую схему с именем «Поступления» и указываем путь к контроллеру нашей новой страницы, т.е. к «latest/latest».

Если мы хотим чтобы на нашей страницы выводились новые поступления, мы должны разрешить модулю «Последние» отображаться на страницы «Поступления». Для этого заходим в Дополнения->Модули и напротив модуля «Последние» нажимаем изменить, после чего выбираем схему «Поступления», положение вверх страницы и статус «Включено».

Проверяем, вводим в строке браузера http://s-engineer.ru/index.php?route=latest/latest (s-engineer.ru — в случае локального расположенния OpenCart, иначе доменное имя вашего сайта), должно все открыться без ошибок.

Теперь добавим переменную с ссылкой на наш шаблон. Для этого открываем контролер шаблона в котором хотим что бы была видна данная ссылка и добавляем следующие строки

Например, это может быть контроллер представления header.tpl, т.е. catalog\controller\common\header.php

Теперь в файле представления header.tpl будет видна переменная $latest с ссылкой, мы можем ее использовать таким образом

При нажатие на данную ссылку, мы перейдем на нашу новую схему или страницу.

Человек с ником Noir, подсказал как можно создать отдельную страницу без правки кода.
Думаю, это будет полезно разместить здесь.

Если же просто нужно вывести на отдельной странице какой-то модуль или модули (ну, например, захотел один клиент иметь отдельную страницу «Каталог», где выводятся главные категории магазина не менюшкой, а в виде блоков с картинками, заголовками и кратким описанием) — так вообще никакой код писать писать не надо.
Создал новую схему, не привязывая ее к контроллеру, там прописал нужный модуль в нужной позиции, создал новую статью в информации, привязал к ней в «дизайне» созданную схему — и все дела: модуль вылез в нужном месте статьи, статья имеет администрируемые заголовок, ЧПУ ссылку и метаданные. Дела ровно 2 минуты, клиент счастлив.

Вам будет интересно:

Буду признателен если вы поделитесь данным постом

  1. Funny пишет:

Отличная статья. коротко и о главном. Спасибо.

10 баллов из 5! Огромное спасибо автору статьи!

Шикарно! Спасибо большое, очень подробно.

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

Большое спасибо, толк!

Да, страница получается но выводится с:
Запрашиваемая страница не найдена.

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

Если «страница не найдена», значит вы сделали что то не так. В качестве результат вы должны получить новую страница без контента (т.е. с шапкой с колонками и с подвалом)

с версией 1.5.5.1.1 такая штука пройдет?

Должно, принцип от версий не меняется. Если что то не получиться, напишите, посмотрим

Все получилось, спасибо. Добавила не в header, а в футер ссылку. Такой вопрос как поменять ссылку http://мой-домен/index.php?route=latest/latest на ЧПУ типа http://мой-домен/novinki?

Честно говоря, не пробывал ЧПУ на OpenCart.

Но, насколько я знаю в OpenCart есть встроенная подержка ЧПУ (система -> настройки -> сервер). В рунете пишут что данная реализация с проблемами, появляется дублирование страниц (т.е. два урла на одну страницу, пример: мой_домен/карандаши/белый_карандаш и мой_домен/белый_карандаш), что для поисковиков не есть хорошо.

Думаю копать надо к модулям … поищите модуль реализующий ЧПУ, на примете могу сказать «SeoPro».

ЧПУ для всех страниц прописаны.
Имеется в виду для той страницы, которая создается в этой статье.

Хм…
для ЧПУ вы используете модуль SEO Pro?

Да. Стоит модуль SEO Pro. ЧПУ прописывала для каждой страницы через админ панель. А как быть с этой страницей, в админке ведь ее нет, как быть?

Я проработаю этот вопрос, установлю SEO Pro и посмотрю что можно сделать.

В любом случае спасибо за статьи. Такой полной информации мало в сети.

Олеся, зайдите в phpmyadmin и сделайте следующий запрос:

INSERT INTO oc_url_alias (query, keyword) VALUES (‘latest/latest’, ‘novinki’);

Модуль «SEO Pro» хранит свои настройки в базе данных, а если быть точнее то в таблице url_alias. Т.к. мы нашу новую страницу в админ. панели не видим, то мы добавим настройки напрямую в таблицу. Это должно сработать.

novinki — ЧПУ
lastest/latest — адрес на который привязываем выше указанный ЧПУ

Выдает #1054 — Unknown column ‘‘latest’ in ‘field list’

Странно…
Такого рода ошибки возникают только при использование SELECT и UPDATE.
Олеся, вы уверены что вы вели
INSERT INTO oc_url_alias (query, keyword) VALUES (‘latest/latest’, ‘novinki’);

Кстати, проверьте как у вас называется таблица url_alias, у меня допустим таблица с префиксом «oc», т.е. «oc_url_alias».

Получилось. Запрос скопировала от сюда — выдавало #1054 – Unknown column ‘‘latest’ in ‘field list’, потом заново перепечатала запрос в блокноте и вставила — результат добавлена 1 строка. Видимо ошибка была в коде — недопустимый символ.
Еще раз спасибо. Отняла у вас столько времени.

Ошибка скорее всего была в кавычках, забыл вам сказать, при копирование напрямую с сайта это может возникать.

Давайте под итожим для будущих посетителей, теперь при запросе «доменное_имя_сайта/novinki» открывается наша новая схема latest.tpl?

Всегда пожалуйста, Олеся я всегда вас рад видеть на моем блоге «записки инженера».

Да. Теперь страница имеет ЧПУ “доменное_имя_сайта/novinki”. Еще раз спасибо. Буду применять ваши знания.

здравствуйте.
шикарные у вас статьи …конечно я мало что понимаю(в опенкарте совсем зеленый), но за 3 дня поисков в интернете ничего более глубокого не нашел. хотя и это не совсем то, что я ищу.
не подскажете как вывести на главной все товары с пагинацией? но не через стандартные модули.
отличные уроки по opencart*у, жаль что мало.
спасибо.
п.с. капча не работает: семь*…=21 …ввожу 3 – выдает ошибку

Спасибо за комментарий.
Про OpenCart в рунете сам ничего найти не мог) информации очень мало, поэтому решил написать сам.
Спасибо, что сообщили про капчу. Оставил только сложение и вычитание, вроде все работает.

Под пагинацией вы имеете ввиду нумерацию страниц? Если мне память не изменяет, то она вроде есть по умолчанию, количество товаров на странице (и соотвествено количество страниц) настраивается в панели администратора.

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

спасибо за скорый ответ — аж как-то не привычно)

Всегда пожалуйста, но у меня к сожалению на текущий момент нет развернутого OpenCart-а под рукой, чтобы я мог посмотреть и сориентировать вас. Я постараюсь завтра или послезавтра посмотреть и ответить вам.

Установить кол-во товаров, при превышение которых появляется пагинация (нумерация страниц) можно в админ панели, по адресу:
Система -> Настройки, далее жмете “Изменить”, в появившейся окне выбираете вкладку “Опции” и в поле “Витрина” указываете кол-во товаров.

По поводу, вывода товара. Вы можете установить, что-бы по умолчанию товар всегда выводился сеткой. Для этого надо открыть файл представления “catalog\view\theme\default\template\product\category.tpl” и в самом конце (примерно на

194 строке), вам нужно закомментировать:

if (view) <
display(view);
> else <
display(‘list’);
>

после чего добавьте, следующею строку:

Все, теперь товар по-умолчанию всегда будет выводиться сеткой.

спасибо конечно, но опять не то. меня интересовало как на главной вывести все товара магазина не через «рекомендуемые» или «последнее».
после длительных и безрезультатных поисков было принято решение плюнуть на все и сделать по другому.
спасибо за участие)

Спасибо за комментарий. Извиняюсь, я наверное не понял Вас)

Прошу прощения за мелочность, но в самом конце статьи тег указан со свойствами тега . У тега не бывает alt=»» w > И нет закрывающего тега .
Мелочь, а кто-то может и не заметить

Дмитрий, спасибо за замечание, вы кому то спасли бессонную ночь).

Реально полезная статья, до этого 2 смотри ничего понятно не было

Здраствуйте схему я создал подключил прописал
при добавлении модуля категории и прочего работает отображаеться а вот если в схему добавть код то он не отображаеться почему ?

Добрый день Арсен, ошибки есть какие нибудь?

Если я скажу: «что дело, скорее всего в коде, которым вы наполняете схему», то это проблему вам не решит. Надо смотреть конкретику.

Пока копался вручную в опенкарте, разобрался как он работает. Хорошая cms, понять код не составляит труда, если человек знаком c MVC, чего не скажешь о битриксе. Отправлю эту страницу в закладки, чтобы подглядывать, если что-то забуду, спасибо!

Спасибо за комментарий!

Мне очень приятно осознавать, что мои посты кому то приносят пользу.

Да, 1С-Битрикс придерживается идеологии MVC скажем «не так сильно» как OpenCart, но изучать её тоже можно.
Для ознакомления, рекомендую пост Обзор 1С-Битрикс, принцип работы

Я немного знаком с битриксом, в нём тоже приходилось копаться, но сделать что-то в опенкарте для меня намного быстрее чем в битриксе. Спасибо за ссылку) Может пригодится.

В сентября начну выкладывать статьи о микроконтроллерах и интерфейсах. Если вас интересует данные «железные» темы, всегда рад вас здесь видеть…

//Если вас интересует данные “железные” темы, всегда рад вас здесь видеть…
Я бы с радостью, очень интересует это направление, спасибо, но возможно у меня просто не будет времени, диплом, госы, вот что меня ждёт очень скоро ��

Удачной сдачи Государственных экзаменов и защиты диплома!

Низкий поклон автору! 2 дня искал что-то подобное, а оказалось как два байта об асфальт! Надо было замутить библиотеку, т.е. статьи, но отдельной страницей. тут всё просто, делаем новую страницу и лепим на неё модуль Новости. Вуа-ля! СПАСИБО.
Только есть маленький нюанс, хотелось бы узнать как сделать в 100% похожим дизайн на все страницы? А то немного новая страничка скривилась, сместилась чуток влево. Может сам что накосячил, может где-то в стилях или других кодах уже раньше покопался…
Я уже полностью код из файла home.tpl в latest.tpl один к одному скопировал. Что еще отвечает за прорисовку?

Пишу вдогонку. Тысяча извинений, проблема не в вашем коде. Просто страница Библиотека открывается как и положено по аналогии ваших ссылок (я заменил на своё) …biblioteka/biblioteka, а вот потом при кликах открываются страницы от модуля Новости, например http://www.fentezi43.ru/index.php?route=information/news&news_ > Значит тут собака порылась, именно в новостном модуле.
Еще раз СПАСИБО за статью!

Спасибо вам Alex, за то что читаете мои посты =)

Топ-пост этого месяца:  15 лучших тем WooCommerce как сделать интрнет-магазин еще лучше

Добрый день.
Прошу прощения, а как добавить мета-теги description и keywords в новосозданную страницу? Я имею ввиду description отличный от главной страницы.
Спасибо

Юрий здравствуйте. Вы можете управлять мета-тегами description и keywords через контроллер вашей новой страницы. Откройте контроллер (для нашего примера «catalog\controller\latest\latest.php»), найдите строки :

$this->data[‘description’] = $this->document->getDescription();
$this->data[‘keywords’] = $this->document->getKeywords();

присвойте данным переменным ваши значения, например

$this->data[‘description’] = «Ваше описание для данной страницы»;
$this->data[‘keywords’] = «Ваши ключи для вашей страницы»;

Давно я таких легких и подробных статей не видел. Всё разжевано и по полочкам. ОГРОМНОЕ ВАМ СПАСИБО!

Есть не большой вопрос.

Как можно сделать перелистывание страниц на информационных страницах? Например как в продукции. Если товаров больше 10, то следующая страница и т.д. А то создал пустую страницу, загрузил туда фотки, и страница получилась очень длинной. Какую часть кода, можно перенести из продукции, чтобы на информационных страницах, тоже работал ограничитель длинны страницы?

Добрый вечер Юрий, спасибо что читаете мои статьи.

Я посмотрю как решить эту проблем, если она окажется технически не сложна, постараюсь в понедельник (1 декабря) дать рекомендацию.
Сейчас с набегу не скажу) что да как


Доброе утро Юрий, я посмотрел, вашу задачу сразу не решить. Я могу вам предложить свои услуги по внедрению «пагинатора» (перелистывание страниц) на страницу информация, если заинтересуетесь пишите комментарий и я отвечу по электронной почте.

Здравствуйте. Внимательно изучил эту статью, но так и не смог решить свой вопрос. Мне необходимо создать новый макет/схему на основе product.tpl. Задача состоит в том, чтобы в карточке товара выбирать дизайн product_new.tpl и отображение товара происходило по данным нового макета.
Беда в том, что внесенные изменения в новый макет, после назначения его какому-то продукту не отображаются…

Добрый день Артем!

А почему бы просто не подправить шаблон «product.tpl» под ваш новый макет? И не создавать новый.

Дело в том, что для разных товаров должна быть разная схема вывода. И стандартный “product.tpl” уже используется…

Огромное спасибо! Все просто и легко оказывается) Не могла вывести все категории на одной странице с созданием пункта меню. А это оказывается просто) Спасибо!

Всегда спасибо Ирина, заходите еще =)

$this->data[‘description’] = $this->document->getDescription();
$this->data[‘keywords’] = $this->document->getKeywords();

Но у вас в “catalog\controller\latest\latest.php” нет
$this->data[‘description’] = $this->document->getDescription();
$this->data[‘keywords’] = $this->document->getKeywords();
Что тогда делать?

Я хочу вывести акционные товары отдельной страницей. для этого я создал директорию special по адресу catalogcontroller, в ней и создал php файл контроллера- special.php
document->setTitle($this->config->get(‘config_title’));
$this->document->setDescription($this->config->get(‘config_meta_description’));
$this->data[‘heading_title’] = $this->config->get(‘config_title’);
if (file_exists(DIR_TEMPLATE . $this->config->get(‘config_template’) . ‘/template/special/special.tpl’)) <
$this->template = $this->config->get(‘config_template’) . ‘/template/special/special.tpl’;
$this->data[‘template’] = $this->config->get(‘config_template’);
> else <
$this->template = ‘default/template/special/special.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());
>
>
?>

Далее создал файл представления для страницы catalog/view/theme/shadow/template и создал директорию, как и в контроллере, т.е. «special». в ней создал файл special.tpl

в панели администратора, Система->Дизайн->Схема добавил новую схему с именем «Скидки» и указал путь т.е. к «special/special». http://[email protected]@@av.ru/с…ial/special.php

По идее для вывода на новой странице новых акций, нужно разрешить модулю «Акции» отображаться на странице «Скидки». Для этого в Дополнения->Модули напротив модуля «Акции» изменяем и выбираем схему «Скидки».

Я хотел чтобы на новую страницу акционных товаров выходить можно было щелкнув на картинку. для этого я вставил в header.tpl ссылку на http://[email protected]@@av.ru/i…special/special картинкой Skidki4.png

При нажатие на данную картинку переходим на новую страницу.

НО в ней нет акционных товаров. Подскажите уважаемые гуру что не так? [email protected]@@rav.ru

Добрый день Александр!

Трудно ответить, в чем загвоздка.
Александр попробуйте выбрать для данного модуля уже «стандартную» схему, посмотрите работает ли он вообще.

Хм… удаленно так проблему не решить.

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

Здравствуйте, у вас такие хорошие уроки! Может сможете подсказать, как добавить вывод последних новостей из блога в футере? Т к , стандартными средствами их можно расположить только в теле контента

Добрый день Людмила!

Я посмотрел, для того что-бы добавить новую позицию для модуля, нужно отредактировать контроллер footer.php и footer.tpl. Редактировать кода не мало и я пока такие вещи делать не пробовал, поэтому советовать не буду, что бы не вводить в заблуждение.
В будущем обязательно напишу статью по данному вопросу!

Доброго дня. Спасибо еще раз огромное за статьи. у меня opencart 2.0.3.1 (последняя версия) сделал все как сказали) но вот в последнем этапе не появляется переменная с новой страницей в header.tpl. а так все работает и страницу открывает. то есть не получается в головной странцие вывести на нее ссылку. подскажите в чем может быть проблема. заранее спасибо.

Добрый день Сергей!

Возможно в данной свежей версии, разработчики сделали какие-то изменения и объявляют переменную ссылку

другим образом.
Посмотрите как дело обстоит с другими переменными ссылками на другие страницы в вашей версии… в header.php должны быть обязательно ссылки на другие схемы.

Спасибо за ответ. скажите пожалуйста вновь создаваемая катеригория родительская товаров, где располагается ее html код. создал категорию, а внизу выходит кнопка, которая мне не нужна с текстом желаю удалить ее, но никак не могу на код выйти где он находится в браузере путь пишет: «http://ocstore/index.php?route=product/category&path=71» никак это path=71 не могу найте. Спасибо заранее. Opencart стоит 2.0.3.1 напомню.

означает, что необходимо выполнить файл контроллера product/category (файл category.php) и ему передать параметр path с значением 71. Если вы откроете контроллер product/category (файл category.php), то в коде мы найдет фрагмент

который как раз принимает значений данного параметр и присваивает какой-то переменной.

Здравствуйте!
Помогите решить задачу. Мне нужно, чтобы для определенной категории применялся макет, отличный от дефолтного, т.е. другой файл шаблона .tpl. Сделала все по Вашей инструкции, только клонировала не home, а product/category. В header.php переменную прописала. В новый .tpl внесла изменения, но они не отображаются на странице нужной категории, там все как и было, в адресной строке http://имя-домена.рф/index.php?route=product/category&path=66. А если в браузере напрямую ввести маршрут, страница отображается правильно, шапка, подвал, даже модули показывает, но пишет «Категория не найдена». OpenCart последней версии.
Спасибо)

Добрый день Светлана!

Интересная задача, с таким дело пока еще не имел.

Попробуйте в панели администратора зайти в категории, далее дизайн и выбрать вашу схему (который вы создали). Если не получится, то придется поколдовать с контроллером (т.е. с header.php файлом),
нужно добавить условие которое проверяет что за текущая категория, далее если для неё нужно вывести другой шаблон, прописываем

$this->template = $this->config->get(‘config_template’) . ‘/template/product/ваш_новый_шаблон.tpl’;

$this->template = $this->config->get(‘config_template’) . ‘/template/product/category.tpl’;

Если нужна помощь, мы можем договориться, я могу отработать данный прием у себя и вам уже выдать готовую пошаговую инструкцию.

Здравствуйте! Спасибо за ответ)
Первый способ сразу попробовала, не работает.
Насчет контроллера — почему header.php, а не category.php? Ваша мысль понятна, но сама реализовать не смогу, только если с Вашей помощью). Можно узнать, каковы условия Вашей помощи?
Еще такой момент — OpenCart последней версии сам делает ЧПУ для страниц, без дополнительных модулей. У страниц с новым шаблоном также должны быть ЧПУ, введенные в админке для данной категории.
Вообще мне нужна возможность делать разные «превьюшки» товаров для разных категорий. Может, Вы знаете какой-то другой способ?

Да, я опечатался)
Только править нужно product.php, этот контроллер принимает запрос и далее передает данные в шаблон category.tpl.

Светлана давайте я вам напишу на почту и дальше мы будем вести диалог там.

Я тут пока писала Вам ответ, случайно решила свою задачу другим способом)) Мне нужно было для разных категорий выводить разные «превью» одного и того же товара. Можно было конечно использовать разные category.tpl шаблоны, но встал вопрос — как выводить «превью» в модулях — Рекомендуемые, Акции и т.д.? В общем, я в админке в поле UPC товара ввожу номер (пусть будет называться номер шаблона вывода «превью»), а в файле category.tpl уже вывожу кусок кода, отвечающий за вывод «превью», в зависимости от значения этого поля. И во всех модулях можно сделать аналогично. Как думаете, пойдет такой способ? Вроде работает)

Не подскажете, можно ли этот кусок кода вынести в отдельный файл, а в шаблонах его подключать? Как это делается? Я php совсем не знаю. Или может ссылку дадите, где посмотреть?

Вам большое спасибо, у Вас замечательный сайт, много полезного нашла. Если еще будут сложные вопросы, обращусь к Вам))

Добрый день Светлана!

Я думал вам надо выводить разные оформленные страницы для каждой категории, походу я вас не правильно понял)

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

Кусок вынести можно и подключить его с помощью include (см. официальную документацию). Другое дело, что это работать будет, но не будет считаться грамотным, все логику работы лучше выносить в контроллер, а потом уже результат выдавать в шаблон, который просто вырисовывает.

Спасибо вам большое Светлана, заходите и спрашивай, я всегда постараюсь помочь =)

День добрый.
Не могу понять. Задача: сделать страницу информации без хедера/футера/сайдбаров. Создал новые контроллер new.php (копия home.php) и шаблон empty.tpl(без хедера и тд) В админке>схемы создал новый макет, в которой прописал путь к шаблону empty/empty
Создаю новую статью и задаю ей эту схему. Но почему-то страница все равно отображается по шаблону information/information.tpl
1.5.4.1

Добрый день Роман!

Скорее всего проблема в контроллере, найдите строки

if (file_exists(DIR_TEMPLATE . $this->config->get(‘config_template’) . ‘/template/common/home.tpl’)) <
$this->template = $this->config->get(‘config_template’) . ‘/template/common/home.tpl’;
> else <
$this->template = ‘default/template/common/home.tpl’;

Что у вас указанно вместо home.tpl ?

Здравствуйте, спасибо. Я нашел решение, как посадить новость на другой шаблон.

if (file_exists(DIR_TEMPLATE . $this->config->get(‘config_template’) . ‘/template/information/information_’ . $information_id . ‘.tpl’)) <
$this->template = $this->config->get(‘config_template’) . ‘/template/information/information_’ . $information_id . ‘.tpl’;
> elseif (file_exists(DIR_TEMPLATE . $this->config->get(‘config_template’) . ‘/template/information/information.tpl’)) <
$this->template = $this->config->get(‘config_template’) . ‘/template/information/information.tpl’;
> else <
$this->template = ‘default/template/information/information.tpl’;
>

Спасибо, что привели решение, возможно это кому-то поможет.

Буду рад вас видеть на s-engineer.ru

Тоже хочу сказать автору, огромное спасибо! И в свою очередь поделиться решением своей проблемы с ЧПУ (я создала новую схему, и в базу данных в таблицу oc_url_alias внесла свои значения, но ничего не произошло, ссылки остались старыми). Как оказалось, опенкарт имеет внутреннее кеширование запросов, я зашла в папку system/cashe/ нашла файл cache.seo_pro, и очистила его содержимое — в итоге все ссылки встали на свои места

Спасибо вам Елена!

Ваш совет обязательно кому-то пригодиться.

Всегда вас рад видеть на s-engineer.ru!

ОГРОМНОЕ СПАСИБО ЗА ПОДРОБНЫЙ И ПРОСТОЙ, ПОНЯТНЫЙ ОТВЕТ НА ЧАСТОИНТЕРЕСУЕМЫЙ ВОПРОС. Делала по аналогии — акции!

Всегда пожалуйста Елена!
Заходите еще =)

Помогите решить.
Задача — необходимо вывести содержимое, например, из файла temp.tpl в любое место на сайте. Т.е. создал и с помощью вывести это в любом месте любого шаблоне опенкарта.

Если есть урок по данной теме, буду признателен.

Добрый вечер Алексей, я написал вам на почту.

Здравствуйте! Спасибо за толковое разъяснение.

Есть задача. В админпанели во вкладке Клиенты есть таблица со списком клиентов:
Имя клиента | E-mail | Группа клиентов | Статус | IP | Дата |

Мне нужно вывести эту таблицу на вновь созданной странице latest/latest.

Я попытался прописать путь к этой странице в контроллере customer.php (вставка после строки 668):
$this->response->setOutput($this->load->view(‘default/template/latest/latest.tpl’, $data));

В файл latest.tpl я добавил строки, выводящие эту таблицу, взятые из файла customer_list.tpl

Но в итоге выходит ошибка Notice: Undefined variable:…..

Подскажите, пожалуйста, что не так.

доброй ночи! Спасибо огромное за статью!
Интересует следующий вопрос — как в схеме сайта удалить определенный блок? допустим футер.
Огромное вам спасибо

Доброе утром Роман.

За отображение той или иной схеме сайта отвечает tpl файл представления (который лежит в catalog/view/theme/имя_вашей_темы/template), если вы, хотите удалить какой либо блок, то делать это нужно там. Вам нужно найти файл представления интересующей вас схемы.
Как это сделать? Могу ошибаться, но напротив схемы есть кнопка «изменить», нажимая её, вы увидите что за контроллер отвечает за данную схему. Например latest/latest, т.е. в папке latest есть файл контроллера latest.php. В контроллере найдите следующий фрагмент
$this->template = ‘default/template/latest/latest.tpl’ ;
Здесь как раз, описан, какой файл представления отвечает за данный контроллер (соответственно и схему). Открываете его и редактируйте.

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

Создать новую схему получилось без проблем — визуально она тоже выглядела как и home. В файле контроллера latest.php — лежит путь к файлу latest.tpl — когда я начинаю редактировать файл .tpl визуально ничего не изменяется, схема моего latest.tpl полностью дублирует и Вашу, данные действия пытаюсь сделать на голой версии opencart 1.5.6.4.

Как я пытаюсь тестировать данные изменения. Я создал новую категорию через админ панель, применил к ней созданную схему latest и пытаюсь редактировать файл latest.tpl, заливая новую версию на хост — но ничего не меняется, даже если файл latest.tpl оставить полностью пустым. Всегда выводится текст и картинки, которые я залил при создании категории.

Кстати, как показывает firebag — по сути нету отдельно хедера, нету отдельно футера у базовой темы опенкарт, все сидит в теге body, и дивы класса body имеют id «header», «footer» і тд…

Но задача стоит прежняя убрать лже-футер и лже-хедер с новой схемы — чтобы выводился только нужный текст.
Очень прошу помощи, где я мог допустить ошибку?
Беспокоит так же и то, что когда я оставляю полностью чистым файл latest.tpl — визуальных изменений нет.
Спасибо большое за помощь!

Главная ошибка может крыться на поверхности — новосозданную схему можно применить к категории, которая была создана через админ панель?

Суть проблемы.
В пункте Дизайн, в подпункте Макеты, далее Главная я установил модули: Слайдер, Новые поступления, Хиты продаж, Рекомендуемые, Карусель производителей.
Шаблон Дефолтный, тестирую на локалке.
На главной странице отображается только Слайдер, а далее
— Новые поступления, причем только 5 шт товара
— Хиты продаж — 4 шт

Но не выводятся — рекомендованные товары, хотя очередность установлена данного модуля — 3

Вопрос. Подскажите, как исправить или изменить количество товаров в модуле «Новые поступления», сейчас 5 шт, нужно хотяб для симметрии — 8 шт и почему не отображается модуль — «Рекомендованные», хотя при дефолтных демо товарах все отображалось, а после удаления оных рекомендованные товары перестали отображаться на главной, хотя в связях товара я все указал?

Честно говоря, с версией 2.0 я работал мало. Так что сразу не подскажу, но могу попытаться помочь в персональном порядке, если интересует дайте мне знать и мы спишемся по e-mail.

версия у меня 2.1.0.0

Много подобных решений реализации задуманного встретилось в сети. Возможно с Вашего источника, блогеры сделали рерайт. Но не суть. Благодарю за материал ваш.. Но есть вопрос следующий:

1.Как сделать вывод последних товаров на отдельную страницу, только из конкретной категории.
2.И как разделить такие страницы вывода последних товаров (правильно создать клоны), где на каждую выводится последние поступления только из своей категории, не из всех?

Добрый день Андрей =)

Я завтра отвечу на ваш вопрос, сегодня много дел.

Интересно насчет рерайта моей статьи, можете дать ссылочки?

Не то чтобы один к одному изложено всё у других, просто все примеры, которые «нагуглил» — они с таким же примером, где для случая создания дополнительной страницы latest (последние поступления) те же правки.. Но окружающий текст другой. Так что всё норм.

Я вот добился вывода товаров из нужных категорий, правкой SQL-запроса в этом файле: …/catalog/model/catalog/product.php
Запрос в самой функции lastes — public function getLatestProducts($limit), где он чуть ниже, но урезан где не менялось

SELECT p.product_id….
…………………
AND p2c.category_id NOT IN (57,88,87,86,85,84,)
…………..

Вот этот «AND p2c.category_id» указывает далее какие ID-категории пропускать, а из всех остальных выводить. Можно там и прировнять конкретную категорию, но как-то на мой взгляд нелепо это лезть, и менять запрос таким образом. И надо было сначала увидеть все эти ненужные ID из базы данных..
Короче вроде то, но не то. Так как нужен вывод 3 разных групп последних товаров, на страницы-клоны lastes

Добрый вечер Андрей, не было времени ответить ранее.

Статьи мои походу действительно воруют, погуглил, примеры на многих сайтах совпадают, печаль…

Прировнять конкретную категорию не вариант.
Вы можете добавить свой аргумент в функцию getLatestProducts, в теле этой функции добавьте код, который в зависимости от параметра будет делать нужный вам SQL запрос.

В контроллере, вы уже можете передать в функцию getLatestProducts параметр указывающий какие категории надо вывести.

Если есть трудности в реализации, я могу помочь, дайте мне знать.

И снова Здравствуйте.. )

Я тоже отвлёкся немного по другим вопросам, потому и позже отвечаю по своей проблеме. Да, снова не получилось реализовать задуманное. Возможно по невнимательности где-то запутался.

Делал дубликат такой же страницы «Последние поступления», можно сказать клон от новосозданной «latest» по описанному вами способу. Всё в новых директориях лежит «latest-dub», в схемах(админка) всё новое отображается, но ничего не выводит на сайт этим клоном.
Да и вообще, а как второй клон (копия первого «latest») будет работать, если он зависит от модуля «Последние», где и указывается тащить всё в подряд, а не из конкретной категории.. Там в админке этого модуля только указывается количество, размеры картинок, и схему указать.

Добрый день Андрей =)

Вам нужно выводить в каждом клоне latest товары определенной категории?

Топ-пост этого месяца:  Биткоин-кошелек — как его создать на официальном сайте и начать использовать

Совершенно верно! Появилась потребность из всех 20 категорий магазина, выделить(подчеркнуть) три популярных. И сделать ссылки на них в слайдере.
Но нужно чтобы последние поступившие товары в эти свои категории, каждые выводились на отдельные страницы «latest», «latest2», «latest3″…

Думаю, тут надо подправить модуль latest, добавить в его настройку (в панели управления) опцию какую категорию (или категории) выводить.

Я делал алогичные вещи (добавлял дополнительные опции), но для панели управления сайтом, а не модуля.
ссылка на пост

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

Добрый день! Такой вопрос, мне нужно на отдельно созданной странице выводить ссылки на другие страницы, причём ссылки при каждой загрузке страницы должны выводиться разные. Я создал массив php, куда включил все ссылки нужные мне, и завёл переменную которая рандомно выводит ссылки из массива.
Вопрос: как можно вывести эту переменную на фронт, на конкретную страницу? Я так понимаю что массив можно хранить в information.php, а вот как вывести переменную на определенную страницу?


За вывод чего-либо на отдельной страницы отвечают ptl шаблоны (которые называются «представления»). За какие страницы отвечает какой шаблон можно посмотреть в моей статье
Структура OpenCart.

Реализация «вывести рандомный элемент» лучше сделать в контроллере (файлы php), который подготовит данные (выберет рандомный элемент) и передаст его шаблону.

OpenCart построен по методологии MVC, Тимур, если возникают трудности с пониманием о чем я написал выше, то рекомендую сначала разобраться с MVC.

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

Добрый день Веломир.

Надо работать с массивом products в контроллере category, у меня сейчас в обрез время, но я могу вам помочь.
Если интересует моя услуга дайте мне знать и мы спишемся по e-mail.

А подскажите как сделать схему чтоб в категории вверху выводилась статья потом был каталог и после ниже продолжение статьи. например как здесь http://e******.ru

Добрый день Evgen, ссылку которую вы дали заблокирована.

В вашем случае нужно править контроллер… возьмите как образец контроллер /catalog/controller/information/information.php, он отвечает за страницу с выводом статьи.
Вам нужно взять его функционал и поместить в контроллер вашей страницы. Например если вы хотите для главной, то контроллер следующий /catalog/controller/common/home.php.
Далее нужно доработать файл представление home.tpl, добавить в него вывод статьи.

Evgen, если нужна более подробная консультация, свяжитесь со мной на странице услуги

хочу сделать такую же страницу, выдает ошибку
на строку 6: Notice: «Indirect modification of overloaded property ControllerPagesNewinshop::$data has no effect in … pages/newinshop.php адрес сайта

Данную статью я писал для Opencat до версий 2.0.

Делайте по аналогии с другими страницами вашей версии OpenCart, если будут проблемы вы можете связаться со мной на странице услуги

Огромное спасибо за статью. Это именно то, что искала. Буду пробовать.

Спасибо вам Алиса, что вы читаете меня =)

Спасибо, за статью! А как быть с языками?
Переключение между языками со страницы /index.php?route=latest/latest не работает.

Добрый день DizeL!

Хм, переключение должно работать в любом случае.
А что происходит, выскакивает ошибка?

Добрый день! Нет ошибки. Вопрос, как перевести текст модуля на другой язык.

Пока решил, вставив в контроллер схемы текст простой страницы (в моем случае с 10 ID):

$this->language->load(‘information/information’);
$this->load->model(‘catalog/information’);
$information_ > $information_info = $this->model_catalog_information->getInformation($information_id);
$this->data[‘description’] = html_entity_decode($information_info[‘description’], ENT_QUOTES, ‘UTF-8’);

DizeL, посмотрите как это реализовано в других контроллерах, я сейчас загружен работой.
Идея такова, что текст модуля хранится в его языковых файлах, которые для разных языках располагаются в разных директориях.

Например для контроллера \catalog\controller\information\contact.php
языковые файлы находятся в директориях
catalog\language\russian\information\contact.php — для русского языка
и
catalog\language\english\information\contact.php — для английского языка

При переключение языка, используется тот или иной языковой файл.

Здравствуйте. Все делаю по инструкции, а страница все-равно пустая остается. И еще в файле представления header.tpl нигде не могу найти свою переменную. Может где-то допущена ошибка? Помогите разобраться.

Так, страница заполнилась, нашла ошибку. А ссылку сделать, как Вы описываете так и не получилось.

Добрый день Gals!

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

Я мало понимаю в этом, но кажется у меня все точно также как и в других ссылках прописано.:(

Добрый день Gals! Ответил Вам на почтовый ящик.

Добрый день. По Вашей схеме создал страницу, присвоил ей url и разместил в ней модуль категорий, выглядит так http://www.my_domain/store. Но при переходе с нее в категорию или продукт получается http://www.my_domain/category/product. Подскажите, пожалуйста, как добиться вида в строке http://www.my_domain/store/categoty/product?

Добрый день Виктор.

Вам нужно смотреть в сторону ЧПУ. Погуглите как работать с ЧПУ на OpenCart, на данном сайте я эту тему не освещал.

Спасибо, интересное решение, но у меня не заработало… делал по аналогии только не с home а с categoriy . К сожалению наверное нужно чтото еще править, т.к. title не изменились по новой схеме а остались старые……

Добрый вечер. Странно..
Попробуйте, посмотрите как у вас реализован контроллер и представление для category, делайте все по аналогии как в ваших файлах в OpenCart.
Когда я писал данный пост, OpenCart версии 2.x еще не было.

Изменяем шаблон Opencart

Приветствую друзья! Статья посвящается новичками, которые только начали работать с Opencart. В данном руководстве вы найдете ответы на вопросы касающиеся редактирования(изменения) шаблона Opencart.

Изменяем шаблон Opencart

Рассмотрим как редактировать следующие элементы шаблона(дизайна):
1. Логотип и favicon
2. Шрифт и Цветовая гамма
3. Фон (Background)
4. Шапка (Верхняя часть сайта)
5. Подвал (Нижняя часть)
6. Изменение внешнего вида модуля

Пункты 2-4 требуют от Вас минимального представления о работе HTML и CSS.
HTML — Используется для написания веб-страничек
CSS — Оформление веб-страничек

Логотип и favicon(иконка)

Изменение логотипа и фавикона не требует от Вас специальных знаний, так как доступно редактирование с админки.
1. Dойдите в панель администратора Opencart.
2. Перейдите Система -> Настройки -> Изменить -> Вкладка «Изображения»
3. В появившейся вкладке жмем кнопку «Очистить» -> затем «Обзор» для загрузки нужного логотипа/фавикона соответственно.
В этой же вкладке можно задать желаемый размер для картинки товара на разных страницах интернет-магазина.

Шрифт и Цветовая гамма & Фон

Для удачного изменения шрифта или цвета отдельных элементов шаблона вы должны быть знакомы с азами html/css.
1. Подключитесь к FTP для редактирования файлов
2. Войдите в корневую папку вашего сайта с файлами Opencart (обычно www или public_html)
3. Перейдите catalog -> view -> theme-> ваша_тема(стандартная default)-> stylesheet -> stylesheet.css
4. Откройте css-файл stylesheet.css для редактирования
5. Задайте требуемый шрифт/цвет элементу шаблона
6. Сохраните изменения и обновите главную страничку сайта в браузере

Фон — Изменить цвет фона можно посредством редактирования значения «background-color» тэга «body».

Шапка (Верхняя часть сайта) & Подвал

1. Подключаемся к FTP используя фтп-менеджер для редактирования файлов.
2. Перейдите в корневую папку интернет-магазина с файлами Opencart (обычно это www или public_html)
3. Перейдите catalog -> view -> theme-> ваша_тема(стандартная default)-> template -> common -> header.tpl
4. Откройте header.tpl для редактирования
5. Редактируем код под свои нужды используя html
6. Не забываем о сохранении изменений

Редактируем Подвал (Нижняя часть) — перейдите catalog -> view -> theme-> ваша_тема -> template -> common -> footer.tpl
Правим и сохраняем.

Изменение внешнего вида модуля

Редактирование модуля не особо отличается от редактирования шапки, все отличие в размещение нужных файлов.
1.Перейдите в папку catalog -> view -> theme-> ваша_тема -> template -> module
2. Выбираем нужный нам модуль и жмем на редактировать
Для того, чтобы Вы знали какой файл править, приведу соответствие между англоязычным названием модуля(в фтп менеджере) и русскоязычным (в админке)

cart -> корзина
currency -> валюты
slideshow -> слайдшоу
carousel -> карусель
featured -> популярные
bestseller -> самые продаваемые
latest -> последние добавленные

3. Правим и сохраняем изменения.

Выше, я описал только базовые моменты изменения шаблона, вероятно у Вас остались вопросы. Поэтому, пишите в комментариях для получения подробного ответа.
Буду благодарен, если поделитесь ссылкой в социальных сетях. Не забываем ставить «палец вверх».
# изменяем шаблон opencart # как изменить шаблон opencart.

Добавить модуль Opencart на отдельную страницу

Я работаю с OCstore 2.3. Статья приминима к любой сборке Opencart ветки 2.3x.
Есть модули, которые выводят структурированную информацию, которую можно отнести только к какой-то одной странице.
Например, модуль блоков – через который можно создать красивый, информационный блок, и вывести его на главной странице – здесь проблем нет, у нас есть схема (макет) – Главная.
А сегодня, мы будем выводить его на одной странице схемы “Информация” (information/information).

Задача была такая: Вывести модуль в схеме “Информация” (information/information) на странице “О компании”, то есть в итоге – блоки созданные модулем заменят контент ($content).
Для начала создаем нужный нам модуль. Обратите внимание на его id, эта информация нам пригодится.

Далее, нам нужно внести изменения в файл контроллера вывода позиций модуля “Вверху страницы” (content_top). Найти его можно так:

Ищём вот этот блок кода – в самом конце файла.

Полная деинсталляция (удаление) vQmod в OpenCart

Раз вы читаете эту статью, это значит, что вы уже имеете понятие о vQmod – дополнении к движку OpenCart, которое во многом упрощает установку разных готовых модулей.

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

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

Итак, для того, чтобы удалить vQmod с вашего сайта, сделаем следующее.

1. Подключитесь к вашему сайту по FTP.

2. Откройте файл index.php, который находится в корне вашего сайта и в папке admin, которая также расположена в корне сайта.

В нем найдите строки:

И замените их на:

Здесь же сделайте еще одну замену. А именно – строки:

Обратите внимание, что наличие строк в зависимости от версии движка, может отличаться. Если каких-то строк, указанных в статье, нет, значит, эту замену вам делать не нужно, так же, как и осуществлять вставку недостающих участков кода.

Сохраняете изменения в обоих файлах и отправляете их на сайт.

3. Удаляете папку vqmod, находящуюся в корне вашего сайта. На этом удаление vQmod закончено.

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

Написание модуля для OpenCart 3.x

OpenCart — одна из популярных CMS для магазина, но в стандартном виде в нем не очень-то много возможностей, что компенсируется большим количеством платных и бесплатных модулей. В этой статье на простом примере я постараюсь рассказать как создать свой модуль для OpenCart 3.x.

Модуль OpenCart может быть исполнен в нескольких вариантах:

  1. Файл-модификатор OCMOD, который изменяет уже существующие в системе файлы. Подробнее о том, как написать модификатор читайте в следующей статье.
  2. Набор php, twig и других файлов, которые добавляют новые возможности в системе как отдельная программа и не затрагивающие стандартный функционал.
  3. Комбинированный — сочетание модификатора и файлов php, twig и т.д.

В этой статье рассказывается как написать свой модуль для OpenCart добавляющий новые возможности в систему.

Начну с того, что OpenCart построен на схеме MVC (Model-View-Controller). Это значит, что модуль может состоять из следующих файлов:

  • Контроллер (Controller) — php-файл, который будет вызван первым и отвечает за логику работы конкретного модуля, определяет, что именно будет делать модуль, обрабатывает взаимодействие с пользователем и т.д. Контроллер может использовать (хотя и не обязательно) Модель и Представление.
  • Модель (Model) — php-файл, отвечающий за чтение и запись данных в базу данных, т.е. содержит функции для получения или сохранения данных. Файл модели не обязателен.
  • Представление (View) — файл какого-то html-шаблона, который определяет каким образом будет выведена информация на экран браузера. В OpenCart 3.x для создания шаблонов применяется обработчик шаблонов Twig и поэтому файл имеют расширение .twig.

Для поддержки мультиязычности в OpenCart так же есть языковые файлы, о которых будет чуть ниже. Файлы OpenCart-а организованы по папкам, контроллеры в своих, представления в своих и т.д. Итак, для создания модуля и правильного расположения файлов, нам понядобятся следующие папки и файлы:

Кроме контроллера, модели и представления, у модуля так же обычно есть так называемые языковые файлы, которые находятся в папках:

Впринципе, если планируется только 1 язык, то можно сделать языковые файлы только для него.

Минимально, у модуля должен быть хотя бы 1 php-файл — контроллер. Остальные составляющие, впринципе, могут и отсутствовать, если модуль не работает с базой данных и ничего не выводит пользователю. Но думаю, не имеет смысла рассматривать такой модуль, т.к. таким образом, мы не сможем понять всю цепочку создания полноценного модуля.

Итак, представим, что мы разрабатываем пример модуля для OpenCart 3.x, который будет иметь административную часть (back) и пользовательскую (front). В административной части, он будет иметь лишь одну настройку «Статус», которую можно менять на Включено/Выключено. А в пользовательской части пусть просто выведет страницу с текстом «Пример модуля на OpenCart 3.x», если он включен или сообщение об ошибке, если выключен. Файлы примера модуля пусть будут иметь имя example, т.е. example.php, example.twig и т.д.

Административная часть модуля

Приведу сразу исходные тексты файлов, думаю, на примерах будет проще понять что для чего нужно. Всего их 4 шт: контроллер, модель, представление и языковой файл для русского языка. Вкратце как происходит взаимодействие напишу сразу после исходного кода.

Контроллер модуля admin/controller/extension/module/example.php

Создание контроллера предполагает чтение из базы единственной настройки — статуса (включено/выключено), выведение на экран представления (шаблона) и сохранение настройки, когда пользователь нажал соответствующую кнопку.

Модель модуля admin/model/extension/module/example.php

Создание модели подразумевает работу с базой данных, а именно сохранение и чтение данных. В данном случае, можно использовать стандартные opencart-овские методы, но при необходимости, вы конечно можете, создавать свои таблицы и сохранять и читать из них.

Языковой файл модуля admin/language/ru-ru/extension/module/example.php

Здесь все просто: нужно написать все используемые фразы и предложения и их переводы на русский, которые будут использоваться в представлении (шаблоне).

Представление (шаблон) модуля admin/view/template/extension/module/example.twig

Как упоминалось выше, для создания представлений-шаблонов, нужно использовать twig. Русскоязычную документацию можете посмотреть, например, на x-twig.ru

Теперь еще несколько слов о том, как всё примерно работает и взаимодействует.

Когда мы нажимаем на кнопку перехода в настройки модуля, в адресной строке получается адрес заканчивающийся на index.php?route=extension/module/example&user_token=123. Токен в конце соответственно будет другой. Нас интересует часть extension/module/example — именно она и говорит opencart-у, где находится файл нашего контроллера.

Получивший управление файл контроллера загружает файл-модель для обращения к базе данных, загружает языковой файл и выводит шаблон twig на экран браузера.

Обратите внимание: в первых строках контроллера и модели идут названия классов: class ControllerExtensionModuleExample extends Controller и class ModelExtensionModuleExample extends Model. Как видим, в их названиях присутствует путь к модулю и название модуля. Если назвать классы как-то иначе, ничего работать не будет.

Пользовательская часть модуля

Контроллер модуля catalog/controller/extension/module/example.php

Создание контроллера пользовательской части похоже на административную, только не нужно сохранять настройки, нужно только написать код, который вывводит информацию в зависимости от того включен модуль или нет.

Модель модуля catalog/model/extension/module/example.php

В нашем примере модель пользовательской части маленькая, т.к. нужно лищь прочитать одну настройку.

Языковой файл модуля catalog/langugage/ru-ru/extension/module/example.php

Представление (шаблон) модуля catalog/view/theme/default/template/extension/module/example.twig

Задача представления вывести на экран посетителю либо страницу с заголовком «Пример модуля на OpenCart 3.x», либо с сообщением «Модуль выключен» в зависимости от того, что выбрано в статусе модуля в его настройках.

Принцип работы пользовательской части такой же, как и административной. В адресной строке будет соответственно index.php?route=extension/module/example, что и говорит opencart-у какой файл контроллера нужно использовать и из какой папки.

В административной части и в пользовательской я использовал по 4 файла (контроллер, модель, языковой файл и представление). Однако, как я писал выше, впринципе, вы можете создать более компактный модуль, сократив количество файлов только до одного контроллера, если он всё необходимое сделает сам. Так же, можно и наоборот, написать более сложный модуль, который будет состоять из нескольких контроллеров, нескольких моделей и нескольких шаблонов.

Создание архива для загрузки модуля установщиком расширений

Когда модуль полностью готов, его лучше оформить в виде архивного файла, который OpenCart может загрузить и установить в систему. Для этого нужно создать папку upload и поместить в нее все файлы модуля со всей структурой папок в которых они находятся. Затем папку нужно упаковать в zip-архив с именем название_модуля.ocmod.zip. В примере выше получится архив example.ocmod.zip.

Теперь модуль готов для автоустановки установщиком расширений.

После установки модуля он появляется в списке модулей.

Модуль нужно активировать нажав на зеленую кнопку со знаком «плюс», после чего можно зайти в настройки модуля через синюю кнопку со знаком «карандаш».

Добавить комментарий