0

DataObjectsのコードをPages2として使用しているため、adminの[Product]タブで作成した製品ごとに1つから複数のカテゴリを選択できます。

私の質問は、カテゴリの親ページ(ProductsList.phpと呼ばれます)のタイトルをどのように表示できますか?詳しくは画像をご覧くださいここに画像の説明を入力してください

または、ここに説明があります。私のカテゴリページはすべて1人以上の親の下にあり、一部のカテゴリページはサイトで繰り返されています(トヨタやホンダなど)。管理者がどの繰り返しカテゴリを選択するかがわかるように、親ページのタイトルを[カテゴリ]チェックボックスの下に[販売]や[レンタル]などと表示したいと思います。

[カテゴリ]チェックボックスフィールドに関連するコードは次のとおりです。

 //Relate to the category pages
  static $belongs_many_many = array(
    'Categories' => 'CategoryPage'
  );

 //Categories
    $Categories = DataObject::get('CategoryPage');
    $fields->addFieldToTab("Root.Categories", new CheckboxsetField('Categories', 'Categories', $Categories));

私はSSを通り抜けようとしているので、どんな助けでもありがたいです。

どうもありがとう。

サム

編集/更新:

以下のコードを使用して、[カテゴリ]タブを親子として表示するように作成しました。たとえば、Sale-Toyota、Sale-Honda、Rental-BMW、Rental-Toyotaなどです。ただし、それらはすべて無秩序/ランダムに表示されます。それらを適切にグループ化する方法に関する提案はありますか?たとえば、すべてのセールスが一緒で、すべてのレンタルが一緒です。

コード:CategoryPage.phpに以下のコードを追加します

function CheckboxSummary(){
    return $this->Parent()->Title . ' - ' . $this->Title;
}

そして、Product.phpのチェックボックスセットのオプションに$ Categorys-> map('ID'、'CheckboxSummary')を追加します

 $Categories = DataObject::get('CategoryPage'); 
 $fields->addFieldToTab("Root.Categories", new CheckboxsetField('Categories', 'Categories', $Categories->map('ID', 'CheckboxSummary')));

ありがとう:)

4

1 に答える 1

1

'親ページ'ごとに1つのチェックボックスセットを作成できます(適切なURLSegmentが設定されていることを確認してください)。

$salePage = DataObject::get_one('Page', "URLSegment = 'sale'");
$Categories = $salePage->Children();
$fields->addFieldToTab("Root.Categories", new CheckboxsetField('Categories', 'Sale', $Categories));

アップデート

更新された質問で言及した「CheckboxSummary」を使用した解決策に関して、最も簡単な解決策は、「asort()」を使用して、CheckboxSetFieldにフィードしている配列を並べ替えることです。

$Categories = DataObject::get('CategoryPage');
$map = $Categories->map('ID', 'CheckboxSummary');
asort($map);
$fields->addFieldToTab("Root.Categories", new CheckboxsetField('Categories', 'Categories', $map)); 

asort()の機能については、http://php.net/manual/en/function.asort.phpを参照してください

于 2012-02-01T08:55:02.843 に答える