Выбор структуры кода для функции производителя в Prestashop

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

Я думаю, что мне нужно будет сделать новые таблицы базы данных, как показано ниже (даты выставки, еще не реализованы):

CREATE TABLE `artist` (
  `id_artist` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(64) NOT NULL,
  `date_add` datetime NOT NULL,
  `date_upd` datetime NOT NULL,
  `active` tinyint(4) NOT NULL DEFAULT '0',
  `email` varchar(255) DEFAULT NULL,
  `phone` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id_artist`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;


CREATE TABLE `artist_lang` (
  `id_artist` int(11) NOT NULL,
  `id_lang` int(11) NOT NULL,
  `name` varchar(255) NOT NULL,
  `description` text NOT NULL,
  `short_description` text NOT NULL,
  `meta_title` varchar(128) NOT NULL,
  `meta_keywords` varchar(255) NOT NULL,
  `meta_description` varchar(255) NOT NULL,
  PRIMARY KEY (`id_artist`,`id_lang`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

Должен ли я сделать это модулем или напрямую добавить модуль художника и контроллеры в основные классы? Если я это сделаю, мне придется переопределить класс продукта. Поскольку мне не нужны производители, должен ли я переопределить класс производителя?


person Julien Bourdon    schedule 04.08.2012    source источник
comment
@tereško Спасибо за редактирование. Prestashop использует шаблон MVC, но мой вопрос не имеет прямого отношения к MVC, даже если структура моего кода должна ему соответствовать.   -  person Julien Bourdon    schedule 05.08.2012


Ответы (1)


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

Невозможно изменить основные классы, но переопределение следует использовать как можно чаще.


Функции бэк-офиса

  • Создайте таблицу базы данных, как указано в вопросе.
  • Создайте класс Artist в overrides/classes, скопировав класс ManufacturerCore и заменив упоминания manufacturer на artist, а также указав дополнительные поля в качестве переменных экземпляра.
  • Создайте класс ArtistController в overrides/controllers и замените упоминания manufacturer на artist
  • Переопределите класс Product и добавьте id_artist и artist_name в качестве переменных экземпляра. Измените следующие функции, чтобы продукт был связан с его исполнителем: __construct, getFields и getProducts
  • Создайте подкласс ArtistsAdmin для AdminTab в admin/tabs, чтобы можно было использовать бэк-офис для добавления новых/редактирования исполнителей.
  • Включить вкладку в бэк-офисе (сотрудники -> вкладка -> добавить новую)
  • Измените admin/ajax.php, чтобы артисты могли получать запросы из бэк-офиса.
  • Измените ProductsAdmin в admin/tabs, чтобы пользователь мог выбирать исполнителя при добавлении/редактировании товара.
  • Создайте логотип для вкладки исполнителей и скопируйте его в img/admin/artist.gif и img/admin/artists.gif.
  • Обработайте папку изображений в config/defines.inc.php:

    определить('_ARTI_DIR_', _PS_IMG_.'ar/'); определить('_PS_ARTI_IMG_DIR_', _PS_IMG_DIR_.'ar/');

  • Создайте папку ar в img и установите права на запись для всех

Функции фронт-офиса (еще не тестировалось, может не хватать информации):

  • Переопределите ссылку с помощью функции getDistributorLink, которая моделирует getSupplierLink
  • Переопределите инструменты, чтобы обновить функцию generateHtaccess, чтобы включить перенаправления для исполнителя, который моделирует перенаправления поставщика. Я использовал 3 подчеркивания (___), где производитель использует 1 подчеркивание (_), а поставщик использует 2 подчеркивания (__).
  • Файлы темы (шаблоны, css) для поддержки новых основных файлов.
  • Если вы хотите отобразить исполнителя на странице продукта, вы также можете создать модуль, который подключает extraRight или один или несколько крючков страницы продукта.
person Julien Bourdon    schedule 05.08.2012
comment
Вы можете создавать новые классы непосредственно в каталоге overrides/classes, вообще не вмешиваясь в каталог /classes. Просто используйте имя класса Artist. Я не пробовал то же самое с контроллерами, но я бы попробовал - на мой взгляд, это намного чище, чем добавление файлов в основные каталоги. - person Paul Campbell; 07.08.2012
comment
Да, я сделал это в конце концов. Я отредактировал свой ответ, чтобы отразить эти изменения. Это работает и для контроллеров. Спасибо за комментарий! - person Julien Bourdon; 07.08.2012
comment
Кстати, то же самое можно сделать с ProductAdmin и вкладкой администратора исполнителя, переместив их в модуль, чтобы поддерживать чистоту ядра. - person Julien Bourdon; 07.08.2012