web-dev-qa-db-ja.com

タイトルと代替テキストを画像に自動的に追加しますか?

私のサイトでは、ユーザーはコンテンツと画像もアップロードできます。

私の目標は、ユーザーがサイトにコンテンツをアップロードするときに、画像も含めることです。コンテンツのタイトルは、画像のタイトルと画像の代替テキストにもなります。現在、コア画像フィールドを使用しています。

それをすべて達成できる方法またはモジュールはありますか?

6
EB84

最も直接的な方法は、カスタムモジュールの 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ボックスがチェックされていないことを確認してください。たとえば、次のようにします。

enter image description here

これは、フォーム内のフィールドの追加/編集ウィジェット専用です。上記のコードは、これらの属性が「有効」にされていなくても機能します。

10
Jimajamma

ImageField Tokens を使用できます。

ImageFieldトークンモジュールは、画像フィールドのデフォルト機能を拡張して、デフォルト値を指定し、AltおよびTitleテキストでノードトークンを使用する機能を追加します。

enter image description here

6
milkovsky

これがまさにそのために作成した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]"
        }
      }
    ]
  }
} 
1
Bob T.

これを達成するための2つの簡単な方法があります。

方法1の方が簡単です。ファイルエンティティモジュールを構成し、altおよびtitle属性フィールドで、トークンを_[current-page:title]_に置き換えます。これは、使用可能なトークンの1つでもあります。

注:上記のこの方法では、フィールドが空の場合、タイトルフィールドと属性フィールドが置き換えられます。フィールドにテキストが入力されると、代わりにそのテキストが使用されます。

方法2はルールを使用してこれを達成し、これは次のようになります。

  1. 次のイベントでルールを作成します。

    a。新しいコンテンツを保存した後

    b。既存のコンテンツを更新した後

  2. 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よりも優れた制御が得られます。

  3. 2つのアクションを追加して、ノードタイトルを使用して、altフィールドとtitleフィールドの両方にデータ値を設定します。

さらに細かく制御するには、「 条件付きルール 」モジュールをインストールして、alt属性とtitle属性の両方または一方が入力されているかどうかを確認します(例のシナリオは、「altが空ではなく、タイトルが空の場合、タイトル属性を更新」または「altが空で、タイトルが空でない場合、alt属性を更新...など)。

条件付きルールモジュールをインストールしないで、空のフィールドのチェックをより適切に制御したい場合は、2つの異なるルールを作成して、両方のフィールドを個別にチェックします。

  1. ルールを保存します。それでおしまい。

上記の簡単な手順を実行する、作成したこのルールを単にインポートすることもできます。私のフィールドは「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]" } }
    ]
  }
}
_
0
IT Pro Manager