web-dev-qa-db-ja.com

メニュー項目オプションのバッチ処理

メニュー項目が100個以下のWebサイトで作業しています(タイプは「単一記事」です)。各メニュー項目には、[オプション]タブの下に独自の設定があります。

enter image description here

これは明らかにグローバル設定を上書きしますが、記事マネージャーの「グローバル設定」から設定を制御し、すべての記事が同じように見えるようにするために、「グローバルを使用」に戻したいと思います。

すべてのオプションすべてのメニュー項目に「グローバルを使用」を一度に設定することはできますか?

私の最初の考えはMySqlクエリを使用することですが、それをどのように記述するか、どのデータベースエントリを変更する必要があるかはわかりません。

3
johanpw

これは自己責任で使用してください。

UPDATE jos_menu SET params = CONCAT('{"show_title":"","link_titles":"","show_intro":"","info_block_position":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_vote":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_hits":"","show_tags":"","show_noauth":"","urls_position":"",', SUBSTR(params, POSITION('"menu-anchor_title"' IN params))) WHERE `link` like "index.php?option=com_content&view=article&id=%"
  • josをJoomlaテーブルの接頭辞に置き換えます。
  • FFrewinが言ったように、「実際のWebサイトでこれを試さないでください。大量の更新を直接操作する前に、常にデータベースのバックアップを作成してください。」

更新

クエリはJoomla 3.3.3テスト環境で機能しました。

2
Farahmand

Joomla 3.7でこれを行っただけで、1つのパラメーターを変更するだけで済みました。これが私が正常に使用したコードです:

update xxx_menu set params = replace(params,'"show_page_heading":"1"','"show_page_heading":"0"') where params like '%"show_page_heading":"1"%'

まず、1つのメニューIDのwhere句を使用してテストし、それが機能することを確認しました。もちろん、すべてを最初にバックアップしました。これが誰かを助けることを願っています。

1

PHPmyAdminでは、次のように記述できます。

UPDATE `#__menu`
SET `params` = '{"show_title":"","link_titles":"","show_intro":"","info_block_position":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_vote":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_hits":"","show_tags":"","show_noauth":"","urls_position":"","menu-anchor_title":"","menu-anchor_css":"","menu_image":"","menu_text":1,"page_title":"","show_page_heading":0,"page_heading":"","pageclass_sfx":"","menu-meta_description":"","menu-meta_keywords":"","robots":"","secure":0}'
WHERE `link` LIKE 'index.php?option=com_content&view=article&id=%'

ノート:

  • Updateステートメントでは、テーブルのdbプレフィックスを使用します。
  • SET paramsは、メニュー項目オプションの値を取ります。パラメータをデフォルト設定に設定するには、空の値を渡すだけです。 "show_title": ""。各パラメータをチェックして、目的の設定になっていることを確認してください。
  • WHERE link LIKE 'index.php?option = com_content&view = article&id =%'は、単一の記事アイテムのみを検索するために使用されます。
  • ライブWebサイトでこれを試さないでください。大量の更新を直接操作する前に、常にデータベースのバックアップを作成してください。

更新:

Fariコメントのおかげで注意:このクエリは、メタ説明、メタキーワード、ページクラス、ブラウザページタイトルなどのパラメータにも影響します。

0
FFrewin