私のサイトでは、ユーザーはコンテンツと画像もアップロードできます。
私の目標は、ユーザーがサイトにコンテンツをアップロードするときに、画像も含めることです。コンテンツのタイトルは、画像のタイトルと画像の代替テキストにもなります。現在、コア画像フィールドを使用しています。
それをすべて達成できる方法またはモジュールはありますか?
最も直接的な方法は、カスタムモジュールの 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 Tokens を使用できます。
ImageFieldトークンモジュールは、画像フィールドのデフォルト機能を拡張して、デフォルト値を指定し、AltおよびTitleテキストでノードトークンを使用する機能を追加します。
これがまさにそのために作成したD7ルールです。 ルール>インポートと保存に移動するだけです。コンテンツが保存または更新されるときに、[node:title]
および[site:name]
トークンを代替テキストフィールドに自動的に追加します。
{ "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が空ではなく、タイトルが空の場合、タイトル属性を更新」または「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]" } }
]
}
}
_