Drupal

Drupal開発者および管理者向けのQ&A

2
宛先パラメータが設定されていても、送信ハンドラで強制的にリダイレクトする
カスタムサブミットハンドラーを追加し、フォームがサブミットされた後にカスタムルートにリダイレクトします。 これは私が使ったものです use Drupal\Core\Form\FormStateInterface; use Symfony\Component\HttpFoundation\Request; use \Drupal\Core\Url; function MYMODULE_form_alter(&$form, FormStateInterface $form_state, $form_id) { if ($form_id == 'node_trends_form' || $form_id == 'node_trends_edit_form') { foreach (array_keys($form['actions']) as $action) { if ($action != 'preview' && isset($form['actions'][$action]['#type']) && $form['actions'][$action]['#type'] === 'submit') { $form['actions'][$action]['#submit'][] = 'zyetondev_sync_trends_submit'; } } } } function zyetondev_sync_trends_submit(array $form, FormStateInterface …
9 8  redirection 

1
Drupal 8でエンティティクエリをデバッグするにはどうすればよいですか?
Drupal 8でエンティティクエリのクエリを印刷するためのすぐに使えるソリューションはありますか? 現在、私は一種のハックを使用しています: ->addTag('debug') そしてカスタムモジュールで: function mymodule_query_alter($query) { if ($query->hasTag('debug')) { mymodule_query_debug($query); } } そしてデバッグ関数: function mymodule_query_debug($query) { $sql = (string) $query; $quoted = array(); foreach ((array) $query->arguments() as $key => $val) { if (is_array($val)) { $val = implode(', ',$val); } $quoted[$key] = \Drupal::database()->quote($val); } $sql = strtr($sql, $quoted); $sql …
9 8  database 

2
HTMLを含む変数をt()関数を介して渡す-!プレースホルダーは削除されました
Drupal 8では、!(感嘆符)t()関数を含むプレースホルダーは削除されました。 HTMLを含む変数があります。 <span class="fullname_wrapper"><span class="first_name">John</span> <span class="last_name">Hancock</span> <span class="account_name_wrapper">(@JohnH)</span></span> このHTMLは、サイトのどこにでも表示されるように特別にスタイル設定されるので、保持しておきます。 Drupal 7では、これを行うことができました。 t('Your name is !name', array('!name' => $name)); $ nameには、上記のHTMLが含まれています。ただし、Drupal 8では、感嘆符のパススループレースホルダーが削除されているため、これは機能しません。 私はこれを試しました: t('Your name is :name', array(':name' => $name)); しかし、HTMLはまだエスケープされています。 @マークもHTMLをエスケープします。 D8のt()関数を介してHTMLを渡す方法を知っている人はいますか? 更新: No Sssweatのコメントによると、私の!markはt()で機能するようです。だからここに私の実際のコードがあります: drupal_set_message( $this->t( "@amount has been transferred to !account", array( '@amount' => '¥' . …
9 8  i18n-l10n 

4
カスタム画像スタイルでpage.html.twigの画像フィールドをレンダリングする
各ページに固有のスライドショーを設定しようとしています。このためのコードはにある必要がありますpage.html.twig。スライドショーはほとんど機能していますが、特定のサイズのカスタム画像スタイルではなく、完全な画像URLのみを呼び出すことができます。このコードを変更して特定の画像サイズを呼び出すにはどうすればよいですか? {% for key, item in node.field_slides %} {% if node.field_slides[key].entity %} <figure class="swiper-slide"> <img class="swiper-image" src="{{ file_url(node.field_slides[key].entity.uri.value) }}" alt="{{ node.field_slides[key].alt }}" /> {% if node.field_slides[key].title %} <figcaption class="swiper-caption"> <div class="swiper-user-content user-content"> {{ node.field_slides[key].title|striptags("<a>,<h1>,<h2>,<h3>,<h4>,<h5>,<h6>,<ol>,<p>,<table>,<ul>")|raw }} </div><!--/.swiper-user-content.user-content--> </figcaption><!--/.swiper-caption--> {% endif %} </figure><!--/.swiper-slide--> {% endif %} {% endfor %} 私がURLを呼び出しているビットは次のとおりです。 {{ file_url(node.field_slides[key].entity.uri.value) …
9 8  theming  media 


4
プログラムでノードの分類用語を設定するにはどうすればよいですか?
ノードの分類を設定するのにいくつかの問題が発生しました。現在、私はこのコードを使用しています。 $node = Node::create(array( 'type' => 'detailseite', 'title' => $data[$headlineIndex], 'langcode' => 'de', 'uid' => '1', 'status' => 1, 'field_headline' => $data[$headlineIndex], 'field_intro' => $data[$introIndex] . $categories[$data[$categoryIndex]], 'created' => $data[$dateIndex], 'field_autor' => $data[$autorIndex], 'field_teaser_text' => $data[$shortIndex], 'field_fields' => array(), )); $node->save(); これまでのところうまくいきます(「詳細」のフィールドの画像の下)。 すべてが正しく設定され、正しく動作する管理領域で新しく作成されたノードを見つけることができます。次に、分類法へのエンティティ参照である「field_meldungstyp」を設定する必要があります。 これにはすでに3つのエントリが含まれています。 プログラムで作成したノードを取得して、 "field_meldungstyp"を "Meldungstyp" -Vocabularyの "Artikel"に設定します。 私はすでに追加しようとしました: …

2
別の言語でフロントページにリダイレクトする
異なる言語のページへのリダイレクトについて質問があります。drupal 7のこの古い投稿を見つけましたが、実際には役に立ちません-https://www.drupal.org/node/1280468 これでDrupal 8になり、リダイレクトは次のように機能します。 return new RedirectResponse(\Drupal::url('<front>')) しかし、リダイレクトの言語を設定するにはどうすればよいですか?私のコードには、ニュージーランドのNZのような言語コードがあります。
9 8  redirection 

3
プログラムで語彙用語を削除する方法は?
語彙からすべての用語を削除したいが、語彙自体は削除したくない。 データベースでそれを行うことができますが、D8で利用可能な場合はむしろAPIを使用します。 $existingTerms = \Drupal::entityTypeManager()->getStorage('taxonomy_term')->loadTree('mycustomvocab'); foreach ($existingTerms as $existingTerm) { // Delete vocabulary term *** This function is not available in D8 *** taxonomy_term_delete($existingTerm->tid); // Delete vocabulary - *** Not what is required *** /* $vocab = Vocabulary::load($existingTerm->vid); if (!is_null($vocab)) { $vocab->delete(); } */ } これは、私がより良い解決策を見つけるまで、現時点でそれをやっている方法です db_query("DELETE FROM {taxonomy_term_hierarchy} WHERE …

2
フィールドタイプを変更するにはどうすればよいですか?
タイプがText(プレーン、ロング)であるfield_mapsを持つコンテンツタイプがあります。テキスト(プレーン)に変更する必要がありました。 したがって、次のSQLステートメントを実行しました。 ALTER TABLE node__field_maps MODIFY field_maps_value VARCHAR(200); field_typeがに変更されたようですVARCHAR(200)が、まだ問題が1つあります。コンテンツタイプと管理フィールドのタブで、フィールドがText(plain、long)として表示されます。 テキスト(プレーン)に変更するにはどうすればよいですか?
9 entities  8  database 

1
Drupal 8カスタムテーマからすべての「安定した」テーマのCSSを削除する
安定したテーマから自動的に含まれるすべてのCSSを削除したい: /core/themes/stable/css/system/components/* .info.ymlファイル内で1つずつ削除できます。 stylesheets-remove: - 'core/themes/stable/css/system/components/ajax-progress.module.css' - 'core/themes/stable/css/system/components/autocomplete-loading.module.css' - ... それらすべてを一度に削除する方法はありますか? 何かのようなもの: stylesheets-remove: - 'core/themes/stable/css/system/components/*'
9 theming  8 

6
エンティティページからentity_typeおよびentity_idを取得するにはどうすればよいですか?
一部のページ(パス)は1つのエンティティを表しています。例えば: これらのパスにあるページは、1つのノードエンティティを表します。entity_id(nid)はXXです。 / node / xx / node / xx / delete / node / xx / edit このパスのページは、1つの検索サーバーエンティティ(検索APIモジュールで定義)を表し、entity_id(machine_name)は「apache_solr」です。 / admin / config / search / search_api / server / apache_solr 現在のフックまたは関数がそれを渡さない場合、このエンティティ(idおよびtype)に関する基本データをどのようにロードしますか? 現在のエンティティを取得する標準的な方法は明らかに使用すること menu_get_object($entity_type,$position_of_id_in_url)です。ただし、これは1つのエンティティタイプのみをコーディングしていることを前提としています。エンティティタイプをプログラムで記述する必要があり、さらに悪いことに、このエンティティが使用するエンティティIDのURL位置を調査してハードコーディングする必要があります。 。 これまでに見つけることができる最も近いのは、ページの基になるシステムURI(例:)を取得してから、この提案のようなものにsubstr(request_uri(),strlen($base_path))基づいて怪しいスイッチリストを記述し、サイトがこれまでに持っていると思われるすべての考えられるエンティティについてケースを推測し、ハードコーディングします。 。しかし、それよりももっと良いものがあるに違いありませんよね? コアからの一般的な解決策が最善ですが、ctools(ページマネージャー、コンテキストなど)、Entity API、Develなどの一般的なモジュールに依存する回答も受け入れます。 私の当面の必要性は、hook_field_widget_form()(適切な構成とモジュールを使用して)フィールド化可能なエンティティタイプにアタッチできるウィジェット用の編集フォームです。したがって、一般的な解決策が最善ですが、この関数内またはフォームでのみ機能する狭い答えも受け入れます(エンティティタイプに固有のIDおよびデータは$ formに埋め込まれているように見えますが、エンティティにキー入力されています特定の方法で入力するので、$ formから取り出すのは、鶏と卵の問題のようです)。 ------------編集------------------ 一部の人々は単純な一般的な問題を理解するのが難しいようです。これが別の使用例です(別の別の関連する問題が私が直面しています)。いくつかのエンティティーをリストするビューがあるとします。このビューは、ノードページやユーザープロファイル(またはその両方)などの1つのエンティティを表すことができるページのブロック/ペインとして配置されます。ビューのデータを読み取り、結果を確認するフックを設定しました(foreach $view->result as...)。それがhook_views_pre_renderだとしましょう、つまり$ viewオブジェクトだけを持っているということです。ビューの結果の行にページと同じエンティティIDとエンティティタイプがある場合、何かを実行したい(たとえば、行を削除したり、フィールドデータを変更したりする)。ビューの結果からこのデータを抽出するためのロジックがあるので、必要なのは、生成されているページのentity_typeとentity_idを検索して比較することだけです。そのデータはDrupalのどこかにあります。そうでなければ、Drupalはこのビューをロードする必要があることを理解できなかったでしょう。それで、それがあなたがいるフックまたは関数に渡されないとき、どうやってそれを得るのですか?
9 7  entities 

3
進行状況バーを作成するにはどうすればよいですか?
Drupal 7を使用してプログレスバーを実装する必要があります。これは私が実際に使用しているコードです。 $form[$name][$name.'_enc'] = array( '#type' => 'submit', '#value' => t($name.' Enable'), // '#submit' => array('submit_'.$name.'_enc'), '#ajax' => array( 'callback' => 'submit_'.$name.'_enc', 'wrapper' => 'ajax-response-goes-here', 'method' => 'replace', 'effect' => 'fade', 'progress' => array ( 'type' => 'bar', 'message' => 'convert..', 'url' => 'misc/progress.js', 'interval' => '1500' )
9 7  forms  ajax 

3
Drushでノードまたはノードのリストを削除するにはどうすればよいですか?
特定のコンテンツタイプのすべてのノードを削除する機能を提供する[すべて削除]モジュールを発見しました。ただし、このモジュールでは、単一のノードまたはノードのリストを削除することはできません。 「Drushを使用して特定のコンテンツタイプのノードを削除できますか?」という質問で、コマンドに関する2つの回答が見つかりましたdrush node_delete <nid>が、このコマンドが見つかりません。 node_delete()に関する議論で、evalを使用してこのタスクを実行するコードが見つかりましたが、evalを使用しています。 drush php-eval "global \$user; \$user = user_load(1); node_delete(nid);" これを達成するために実装された機能が存在しない場合、この機能を実装するためのより良い方法は何ですか:Drushモジュールで、または新しいモジュールを作成しますか?
8 7  nodes  drush 


1
MIgrate_D2Dを使用して書籍を移行するにはどうすればよいですか?
閉鎖したと思ったDrupalgeddonバグにヒットしたため、最近サイトを再構築する必要がありました。私はすべてを簡単に移行しようとしましたが、何らかの理由で移行したくないようです。 今、私はほとんどの部分でD2dの移行を使用していますが、グループ、グループの投稿、および書籍が正常に機能する場合を除いて、問題はエンティティ参照または階層に関するものです。
8 7  migration 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.