各エントリからテンプレートを選択せず​​に既存の構造のチャネルエントリを管理するにはどうすればよいですか?

既存のWebサイトに構造をインストールしました。私はたくさんのエントリーを持っています。問題は、構造のインストール後にエントリが機能しないことです。エントリのために、デフォルトのテンプレートグループが選択されています。私は手動で各エントリからテンプレートグループを選択する必要がありますが、私は多くのエントリを持っているので、それはより多くの時間がかかります。

私はすでに構造のチャンネル設定でテンプレートを選択しています。エントリでテンプレートグループを選択すると、正しく動作します。

解決策がある場合は、私に知らせてください。

参考:

ExpressionEngine:2.7.2

構造:3.3.6

ありがとう、 ジニッシュ

2

2 答え

これにカスタムスクリプトを書く必要があります。 スクリプトの例をご覧ください。構造サポートフォーラム。このスクリプトの私の小さな変更(あなたはPHPコードを実行する権利を持つテンプレートを作成する必要があります)

!スクリプトを実行する前にDBをバックアップしてください!

<?php
/**
* Batch reset template_id for Structure entries
*/

$site_pages = ee()->db->query( "SELECT site_pages
                                       FROM exp_sites
                                       WHERE site_id = 1" )->row()->site_pages;

$str = base64_decode($site_pages);
$arr = unserialize ($str);
$new_template_id = PASTE-NEW-TEPLATE-ID-HERE; //e.g. 24;

// Set new template_id
foreach( $arr[1]['templates'] as $key => $template_id )
{
    $arr[1]['templates'][$key] = $new_template_id;
}

// Serialize & encode
$new_arr = serialize($arr);
$new_str = base64_encode($new_arr);


$query =  ee()->db->query( "UPDATE exp_sites
                                   SET site_pages = $new_str
                                   WHERE site_id = 1
                                 " );   
exit;
?>
2
追加された

私はまだそこに方法はないと思うが、あなたはそれをSQLからクエリを直接使用することができます

0
追加された