0

私は現在、アート作品をオンラインで販売するアート ギャラリーのウェブサイトを開発しています。アーティストに関する情報 (バイオ、メール、電子メール、展示会の日付など) を収集して表示するためのコードを開発する必要があります。私は最初にメーカーの機能を使用し、「メーカー」を「アーティスト」に置き換えて翻訳のみを適応させようとしましたが、すぐに限界があることに気付きました。アーティストと住所を関連付ける必要はなく、追加情報が必要です。問題は、コードをきれいに保ち、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;

これをモジュールにするか、コア クラスにアーティスト モジュールとコントローラーを直接追加する必要がありますか? そうする場合、製品クラスをオーバーライドする必要があります。製造元は必要ないので、製造元クラスをオーバーライドする必要がありますか?

4

1 に答える 1

0

私はPrestashop フォーラムで同じ質問をし、良いアドバイスを得ました。誰かが同じ問題を抱えていたら、ここに要約します.

コア クラスを変更する方法はありませんが、可能な限りオーバーライドを使用する必要があります。


バックオフィス機能

  • 質問に記載されているように、データベース テーブルを作成します。
  • Artistクラスをoverrides/classesコピーして貼り付け、byManufacturerCoreへの言及を置換し、追加のフィールドをインスタンス変数として指定して、クラスを作成します。manufacturerartist
  • ArtistControllerでクラスを作成し、 byoverrides/controllersの言及を置換しますmanufacturerartist
  • クラスをオーバーライドし、インスタンス変数としてandProductを追加します。次の関数を変更して、製品がそのアーティストとリンクされるようにします: 、およびid_artistartist_name__constructgetFieldsgetProducts
  • バックオフィスを使用して新しい/編集アーティストを追加できるように、inのArtistsAdminサブクラスを作成します。AdminTabadmin/tabs
  • バックオフィスでタブを有効にします (従業員 -> タブ -> 新規追加)
  • admin/ajax.phpバックオフィスからアーティストに問い合わせできるように修正
  • 商品の追加・編集時にアーティストを選択できるようProductsAdminに修正admin/tabs
  • アーティスト タブのロゴを作成してコピーしimg/admin/artist.gifimg/admin/artists.gif
  • で画像フォルダを処理しますconfig/defines.inc.php

    define('_ARTI_DIR_', _PS_IMG_.'ar/'); define('_PS_ARTI_IMG_DIR_', _PS_IMG_DIR_.'ar/');

  • フォルダarimg作成し、全員に書き込み権限を設定します

フロントオフィス機能 (まだテストされていないため、情報が不足している可能性があります):

  • getDistributorLinkをモデル化するという関数で Link をオーバーライドします。getSupplierLink
  • Tools をオーバーライドして、generateHtaccess 関数を更新し、サプライヤーのリダイレクトをモデル化するアーティストのリダイレクトを含めます。私は 3 つのアンダースコア ( ___) を使用しました。製造業者は 1 つのアンダースコア ( _) を使用し、サプライヤは 2 つのアンダースコア ( __) を使用します。
  • 新しいコア ファイルをサポートするためのテーマ ファイル (テンプレート、css)。
  • 製品ページにアーティストを表示したい場合は、extraRight をフックするモジュール、または製品ページのフックの 1 つ以上を作成することもできます。
于 2012-08-05T17:02:48.170 に答える