web-dev-qa-db-ja.com

チェックされていない「自動URLエイリアスを生成する」の一括更新

Generate automatic URL alias」がオフになっているプログラムで生成されたノードがたくさんあるので、pathautoモジュールのBulk Updateを使用できません。

これらのノードのpathautoエイリアスを一括生成するにはどうすればよいですか?

編集:私はDrupal 7を使用します

6
user1014351

Views Bulk Operation を使用してみましたか?必要なことは、基準を満たすすべてのノードを一覧表示するビューを作成し、「URLエイリアスの生成」アクションを割り当てることです(私はまだ試していません)。

6
Gokul N K

VBOには、「自動URLエイリアスの生成」のステータスを変更するオプションがありません

次のmysqlクエリを実行できます。

UPDATE `pathauto_state` SET `pathauto`=1 WHERE `entity_type` = 'node'

または、正確なコンテンツタイプのみを更新する場合:

UPDATE  `pathauto_state` p, `node` n SET `pathauto` = 1 WHERE
p.entity_id = n.nid and n.type = 'mycustontype'

ここで、 'mycustomtype'はコンテンツタイプのマシン名です。

または、Drushがインストールされている場合:

drush sqlq "UPDATE pathauto_state SET pathauto=1 WHERE entity_type = 'node'"

その後、通常の場合と同じように新しいパスを一括生成できます:admin/config/search/path/update_bulk

6
Rick B

Rick Bの回答に加えて、チェックされたことのないノードのエントリも作成する必要があります。これは、次のクエリを実行して実行できます。

INSERT INTO pathauto_state
SELECT 'node',n.nid ,1
FROM node n
WHERE n.type = 'api'
AND n.nid NOT IN (SELECT entity_id FROM pathauto_state)

rickが説明したように、データベースで直接Drush onを使用して実行できます。

分類用語については、用語の語彙ID(3以下の例では)、同様の挿入を行います。

INSERT INTO pathauto_state
SELECT 'taxonomy_term', t.tid, 1
FROM taxonomy_term_data t
WHERE t.vid = 3
AND t.tid NOT IN (SELECT entity_id FROM pathauto_state)
2
Sherwin Harris

これが Views Bulk Operations(VBO) で動作することを確認できます。

Gokul N K で言及したことを試してみたところ、同じ問題が発生し、実際のモジュールバージョンでも動作することを確認できました。

[自動URLエイリアスを生成する]がオフになっている既存の分類用語があり、それらをまとめて更新したいと考えていました。

以下の私の設定:Drupal 7(7.34)with Views(7.x-3.8)、Pathauto(7.x-1.2)&VBO(7.x-3.2)。私はモジュールを想定しています現在/インストール済みの構成済み。

  1. すべての分類用語のエイリアス/ admin/config/search/path/delete_bulkを削除しました
  2. / admin/structure/viewsの下に新しいビューを作成し、分類用語を選択(表示)しました(私の場合、すべての語彙にすべてを選択したため、特定の語彙のみを選択できます)
  3. [表示形式]で[フィールド]を選択し、必要に応じてさらに調整して、[続行して編集]
  4. フィールドの下で、「追加」を押して「一括操作:分類用語」を検索し、確認して適用します
  5. 次に、「分類用語のエイリアスの更新」をチェックして適用します
  6. ビューを保存してビューの場所に移動し、すべての分類用語パスのエイリアスを一括更新します
1
4aficiona2

以前に作成したノードのエイリアスを削除してから、新しいエイリアスを割り当てる必要があります。 これ 投稿ではその方法を説明しています。

0
aerozeppelin

これはDrupal 8とVBO(少なくともそれは私にとってはうまくいった)で実行できると思います-"フィールド値の変更"アクションを使用-"自動URLエイリアスの生成 "はfieldであり、コンテンツのアイテムごとに自動的に提供されます。警告は、各content typeに対して行う必要があることです。 、しかしこれはすべて次のように同じフォームで行うことができます:-

  1. 必要なVBOリストの項目を選択してください(またはすべて選択
  2. 「フィールド値の変更」を選択action
  3. 「選択したアイテムに適用」ボタンをクリックします
  4. これを適用する各コンテンツタイプを展開し、「RLエイリアス」チェックボックスをオンにします。展開されたフォームには、[自動URLエイリアスを生成する]チェックボックスが表示されます。これはデフォルトでチェックされているため、何もする/変更する必要はありません。 しないでください送信ボタンをまだ押してください...
  5. コンテンツタイプについて手順4を実行した後、送信ボタンを押します。

後で確認メッセージは表示されませんでした(これは当惑します-おそらく優れたVBOモジュールのバグです)が、(おそらくバックグラウンドのバッチジョブで)うまくいきました。

0
mautumn

Module/theme/etcで使用するためにこれをphp形式にする必要のある人のために:

<?php
$update_auto_aliases = db_update('pathauto_state')
  ->fields(array(
    'pathauto' => 1,
  ))
  ->condition('entity_type', 'node', '=')
  ->execute();
?>
0
Daniel Rogers