回答:
最も直接的な方法は、カスタムモジュールのhook_node_presave()でこれらの行に沿って何かを行うことです。
function YOURMODULE_node_presave($node) {
if(isset($node->field_image)) {
$node->field_image[LANGUAGE_NONE][0]['alt']=$node->title;
$node->field_image[LANGUAGE_NONE][0]['title']=$node->title;
}
}
どこfield_image
あなたのノードを持っているイメージフィールドの実際の名前です。
ユーザーに表示されないようにしたり、これを変更したくない場合は、フィールドの設定でalt
とtitle
ボックスがチェックされていないことを確認してください。例:
これは、フォーム内のフィールドの追加/編集ウィジェット専用です。上記のコードは、これらの属性が「有効」にされていなくても機能します。
ImageFieldトークンを使用できます。
ImageFieldトークンモジュールは、画像フィールドのデフォルト機能を拡張して、デフォルト値を指定し、AltおよびTitleテキストでノードトークンを使用する機能を追加します。
これがまさにそのために作成したD7ルールです。[ルール]> [インポートと保存]に移動します。コンテンツが保存または更新される[node:title]
と、と[site:name]
トークンがaltテキストフィールドに自動的に追加されます。
{ "rules_alt_text_default" : {
"LABEL" : "Alt Text Default",
"PLUGIN" : "reaction rule",
"OWNER" : "rules",
"TAGS" : [ "Custom" ],
"REQUIRES" : [ "rules" ],
"ON" : { "node_insert" : [], "node_update" : [] },
"IF" : [
{ "entity_has_field" : { "entity" : [ "node" ], "field" : "field_image" } }
],
"DO" : [
{ "data_set" : {
"data" : [ "node:field-image:alt" ],
"value" : "[node:title] - Available at [site:name]"
}
}
]
}
}
これを達成するための2つの簡単な方法があります。
方法1の方が簡単です。ファイルエンティティモジュールを構成し、altおよびtitle属性フィールドで、トークンを[current-page:title]
、使用可能なトークンの1つでもあるトークンに置き換えます。
注:上記のこの方法では、フィールドが空の場合、タイトルフィールドと属性フィールドが置き換えられます。フィールドにテキストが入力されると、代わりにそのテキストが使用されます。
方法2はルールを使用してこれを達成し、これは次のようになります。
次のイベントでルールを作成します。
a。新しいコンテンツを保存した後
b。既存のコンテンツを更新した後
Add condition: "content is of type: (add your content type(s) here.....)" Note: without this condition, rules does not seem to pull out the alt and title attributes from your image field.
フィールド内の既存のテキストを変更しないように、他の条件を追加してフィールドが空かどうかを確認することもできます( "using data value is empty ....")。これにより、上記の方法1よりも適切に制御できます。
2つのアクションを追加して、ノードタイトルを使用して、altフィールドとtitleフィールドの両方にデータ値を設定します。
さらに細かく制御するには、「条件付きルール」モジュールをインストールして、alt属性とtitle属性の両方または一方が入力されているかどうかを確認できます(例のシナリオは、「altが空ではなく、タイトルが空の場合、タイトル属性を更新する」または「if altは空で、タイトルは空ではありません。alt属性を更新してください...など)。
条件付きルールモジュールをインストールしないで、空のフィールドのチェックをより適切に制御したい場合は、2つの異なるルールを作成して、両方のフィールドを個別にチェックします。
上記の簡単な手順を実行する、作成したこのルールをインポートすることもできます。私のフィールドは「field_image」という名前で、コンテンツタイプは「article」です。
{ "rules_update_image_alt_and_title_automatically" : {
"LABEL" : "Update image alt and title automatically",
"PLUGIN" : "reaction rule",
"OWNER" : "rules",
"REQUIRES" : [ "rules" ],
"ON" : { "node_update" : [], "node_insert" : [] },
"IF" : [
{ "node_is_of_type" : { "node" : [ "node" ], "type" : { "value" : { "article" : "article" } } } }
],
"DO" : [
{ "data_set" : { "data" : [ "node:field-image:alt" ], "value" : "[node:title]" } },
{ "data_set" : { "data" : [ "node:field-image:title" ], "value" : "[node:title]" } }
]
}
}