タグ付けされた質問 「hooks」

コードを編集せずにモジュールの機能を拡張できるメカニズムに使用します。

1
独自のコンテンツをノードに追加する
ノードにカスタムコンテンツを追加するモジュールを作成しました。このカスタムコンテンツをノードビューに表示したいと思います。hook_node_view()使用するのに最適なフックだと思いますが、コンテンツが表示されません。 私がこれまでに得たものは次のコードです: function mymodule_node_view($node, $view_mode = 'full', $langcode = NULL) { $node->content['mymodule']['#items'][0] = array( 'value' => theme('mymodule_output', array('mymodule_cid' => $node->mymodule_cid)), 'summary' => '', 'format' => 'full_html', 'safe_value' => theme('mymodule_output', array('mymodule_cid' => $node->mymodule_cid)), 'safe_summary' => '', ); $node->content['mymodule']['#weight'] = 12; } 誰か助けてもらえますか?
8 7  hooks  nodes 

2
hook_file_downloadの例
コンテンツタイプに基づいて特定のファイルへのアクセスを制限するにはどうすればよいですか?登録ユーザー向けのダウンロードセクションがあり、自分のサイトの外部にリンクが投稿されないようにしたい。 実装はhook_file_download()十分ですか? 私はこのコードを試しましたが、それは私の目的には十分ですが、のドキュメントhook_file_download()はあまり役に立ちません。 function customize_file_download($uri) { global $user; if (!array_intersect(array('administrator','editor','expert','verified'), array_values($user->roles))) { return −1; } }
8 7  entities  hooks  files 

3
カスタムテーマ関数が呼び出されていませんか?
Drupal 7モジュールをビルドして、オーダーメイドのフィールドタイプを作成しています。必要なフックをすべて実装しました。私のhook_field_formatter_view()機能は次のようになります: function MYMODULE_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) { $element = array(); switch ($display['type']) { case 'default': foreach ($items as $delta => $item) { $element[$delta] = array( '#theme' => 'test', '#item' => $item, ); } break; } return $element; } 次に、theme()以下の関数を定義しました。 function theme_test($variables) { return '<h1>Hello World</h1>'; } …
8 7  theming  hooks  entities 

1
独自のメニューを持つカスタムモジュール?
私は3番目のカスタムモジュールを作成中であり、これは私の最大の課題です。私はhook_menuを使用してメニュー項目を生成する方法を知っています。選択したパスに応じて、それらがサイトのどこに表示されるかを決定します(管理メニューやメインメニューなど)。 私の質問は、作成したパスが「プライマリリンク」や「ナビゲーション」ではなく、独自の「カスタムモジュール」メニューに表示されるように、新しいメニューを指定するにはどうすればよいですか。
8 7  routes  hooks 

2
レンダリング前にフィールド値を変更
Drupal 8では、それは簡単な作業だと思っていましたが、そうではありません。 function hmytheme_preprocess_field(&$variables, $hook) { $element = $variables['element']; if (isset($element['#field_name'])) { if($element['#field_name'] == "bar"){ element['#items']->value ="foo"; //or element['#items']->set(0,"foo"); } } } これはレンダリングには影響しません。方法 ?変更された値を保存したくない
8 entities  8  hooks 

1
Drupal 8でのテンプレート候補の操作
URLに特定の_GETパラメータが含まれている場合、カスタムページテンプレートを使用するにはDrupalが必要です。 ではD7 Iテーマのtemplate.phpにこのような何かをするだろう。 function mytheme_preprocess_page(&$variables) { if($_GET['isCustomTpl'] == true) $variables['theme_hook_suggestions'][] = 'page__myCustomTpl'; } ただし、D8では機能しません(テーマレイヤーのすべてのアーキテクチャの変更を考えると、その反対に驚いたでしょう)。 何か案は? おまけの質問:そのような関数をモジュールで定義して、ユーザーにテーマを編集させることなく公開できるようにすることは可能ですか?
8 8  theming  hooks 

2
Drupal 8のhook_node_viewの代替とは何ですか?
Drupal 8 Beta 14を使用しており、ティーザービューモードでノードオブジェクトを編集したいと考えています。hook_node_viewDrupal 8で削除されたとおりです。ノードの編集に使用できる代替フックまたはその他の方法は何ですか?それであるhook_ENTITY_TYPE_viewか、hook_entity_viewまたはいくつかの他の事? ありがとうございました。
7 nodes  hooks  8 

1
drupalブロックモジュールのjquery getまたはpostメソッド
drupal7.xブロックモジュールでjquery getまたはpostメソッドを使用して動的にデータをフェッチすることは可能ですか?私はdrupalの初心者です。 ここに私のevent_calendar.moduleファイルがあります function event_calendar_help($path, $arg) { switch ($path) { case "admin/help#event_calendar": return '<p>'. t("A block module that creates events and lists them in a event calendar") .'</p>'; break; } } /** * Implements hook_block_info(). */ function event_calendar_block_info() { $blocks['event_calendar'] = array( 'info' => t('Event calendar'), 'cache' => DRUPAL_CACHE_PER_ROLE, //Default …
7 7  hooks  blocks  javascript 



4
カスタムモジュールのインストールを介して、組み込みのコンテンツタイプにカスタムフィールドと表示設定を追加するにはどうすればよいですか?
私はDrupalにかなり慣れていません。Wordpress開発から来ており、プラグインの一部をDrupal 8のモジュールに「変換」しようとしています。 新しいフィールドを追加しようとしているドキュメントに従っています。ノードに「price」と言います。私が見つけたすべてのドキュメントは、カスタムノードへのフィールドの追加に関連していますが、私の場合、それらのフィールドを通常の事前定義ノードに追加したいと思います。 頭に浮かぶ最初の質問は、YML構成ファイルまたはコードを使用してカスタムフィールドを作成できることです。 私はYMLでフィールドを作成し、それはdrupalによって認識されました。問題は、それらがノードに表示されないことです(手動でアクティブにする必要があります)。 私のモジュール/ config / install /に作成しました: core.entity_form_display.node.article.default core.entity_view_display.node.article.default 私は自分のフィールドを追加しますが、もちろん、モジュールをアクティブ化しようとすると、Drupalによってすでに定義されているため、モジュールは好きではありません。 これらのコアファイルを「拡張」する方法はありますか?YMLまたはコードでそれは可能ですか? 私はhttps://www.drupal.org/docs/8/api/entity-api/programming-custom-fields-into-your-content-typeをフォローしました。/ config / installにYMLファイルを作成しましたが、実際にフィールドが作成されました。問題は、カスタムノードタイプに関連していないため、ビューエンティティを「拡張」して表示エンティティを形成する方法がわからないことです。これらのファイル(core.entity_form_display.node.article.default core.entity_view_display.node.article.default)はすでにコアに存在しているため、事前に作成されたノードタイプにリンクされ、再定義できません。 このコメントに続いて、次のファイルを作成しました。 /config/install/field.field.node.article.field_price.yml langcode: en status: true dependencies: config: - field.storage.node.field_price - node.type.article id: node.article.field_price field_name: field_price entity_type: node bundle: article label: Price description: 'Premium Price' required: false translatable: false default_value: { …
7 nodes  8  entities  hooks 

1
hook_preprocess_views_viewから表示名を取得します
:私は、この記事で説明したようにtheme_hook_suggestionsを追加することにより、同じテンプレートを共有する複数のビューためにhook_preprocess_views_viewを使用したいhttp://greenash.net.au/thoughts/2014/04/sharing-templates-between-multiple-drupal -views / function mytheme_preprocess_views_view(&$vars) { if (in_array( $vars['view']->name, array( 'whatever'))) { $vars['theme_hook_suggestions'][] = 'whatever'; } } 問題は、ビュー全体ではなく、特定のビューのどの表示に適用するかを指定する必要があることです。$ varsを出力してみたところ、表示名がどこにも含まれていないように見える巨大な繰り返し配列ができました。 また、ビューのUIでタグ付けすることでこれを実行していることも承知しています。同じ問題が発生しますが、ビューの特定の表示にタグを追加できません。 私がこれを達成できる別の方法がある場合、私はすべて耳です!
7 views  hooks 

3
hook_module_implements_alter()でフックの実装を別のファイルに配置-悪い習慣?
私が書いたいくつかのモジュールでは、hook_module_implements_alter()を使用して* .moduleファイルを分割し、フックの実装を個別のファイルに移動しています。 主な理由は、長いファイルが嫌いだからです。(そして、はい、これは私がDrupal 7の多くのファイルについて不満に思って、貢献しています) 例: nestedbox_core_module_implements_alter() xautoload_module_implements_alter() 考慮すべきことがいくつかあります。 すべてのフックで機能しない場合があります。たとえば、bootまたはinstall、またはmodule_implements()経由で呼び出されないフック。 module_implements()の動作方法により、hook_module_implements_alter()実装内からそれぞれのファイルを含めることが重要です。 今、私は長い間、よく知られたDrupal開発者から、この方法には問題があると聞きました。https://drupal.org/node/2230319(トピックスターター、コメント#5および#11)。 機能の移動を始める前に、技術的にも審美的にも、これが悪いかどうか、なぜ悪いのかを他の人から聞きたいと思います。 編集:これは2つの質問に分けられると思います: * .moduleファイルを分割して、フック実装が別の場所に存在するようにするのは良いことですか、悪いことですか? hook_module_implements_alter()の信頼性は十分include_once __DIR__ . '/MYMODULE.filename.inc'ですか、それとも* .moduleファイルで直接使用する必要がありますか?このためにhook_module_implements_alter()を使用すると、何が問題になる可能性がありますか?
7 7  hooks 

1
.activeクラスをメニュー項目に追加する方法は?
Drupal 7のテーマを開発していて、次の問題に悩まされています。jQueryによる修正があることがわかります。しかし、私はDrupalの方法でそれをしたいと思います。 現在のHTML <ul class="menu sf-js-enabled"> <li class="first leaf"> <a href="/" class="active">Home</a></li> <li class="last expanded"> <a href="/node/57">About Us</a> <ul class="menu sf-js-enabled" style="display: none; visibility: hidden;"> <li class="first leaf"><a href="/node/69">Contact Us</a></li> <li class="last leaf"><a href="/node/73">Typhygraphy</a></li> </ul> </li> そして、私はこのようなものが欲しい <ul class="menu sf-js-enabled"> <li class="first leaf active"> <a href="/" class="active">Home</a></li> <li class="last expanded"> …
7 theming  hooks 

4
別のモジュールでのモジュールの機能のオーバーライド
Module1には、「function1」という名前の関数があります。「function1」はフックのタイプではありませんが、メニューコールバックであるか、フック内で呼び出されます。 Module2は、Module1内のfunction1で使用可能なすべての変数を使用して、「function1」をオーバーライドしようとしています。 を使用してfunction1を呼び出すことができmodule_load_include()ますが、呼び出された関数をオーバーライドする必要があります。 どうすればこれを達成できますか?
7 hooks 

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