Drupalう思えば思うほど、ノードidからビューをカスタマイズでリンクをブロック

StackOverflow https://stackoverflow.com/questions/1668874

  •  13-09-2019
  •  | 
  •  

質問

どのようにして作成ブロックシステムを変更できるのノードIDのページのブロックを現在の座っていますか?

を使用してい景色を大きなチャンクの私がしたいできる"インテリジェントブロックにPHPモードによる動的コンテンツによってどのビューが表示するようにした。

かにすることができますので、$nidるビューは、現在の表示?

役に立ちましたか?

解決

ここでノードIDを取得する、より堅牢な方法です。

<?php
    // Check that the current URL is for a specific node:
    if(arg(0) == 'node' && is_numeric(arg(1))) {
        return arg(1); // Return the NID
    }
    else { // Whatever it is we're looking at, it's not a node
      return NULL; // Return an invalid NID
    }
?>

この方法は、あなたがpathおよび/またはpathautoモジュールを使用してノードのカスタムパスを持っている場合でも動作します。

あなたがpathモジュールをオンにしない場合は、

ただ、参考のために、Drupalは発生し、デフォルトのURLは、マニュアルの「システム・パス」と呼ばれています。あなたがpathモジュールをオンにしない場合は、文書で「エイリアス」と呼ばれるカスタムパスを設定することができます。

私はいつもpathモジュールがオンになっているので、

、最初に私を混乱一つのことは、それがエイリアスの一部ではなく、システムパスの一部を返すためにarg機能のために、これまで可能であったかどうかでした。

結局のところ argので

arg機能は、常にシステムのパスを返します。機能は、$_GET['q']は、常にシステムのパスを返すことらしい研究のビットの後$_GET['q'] の...に基づいています。

あなたは、実際のページ要求からのパスを取得したい場合は、

、あなたは$_REQUEST['q']を使用する必要があります。 pathモジュールが有効になっている場合、$_REQUEST['q']エイリアスまたはシステム・パスのいずれかを返すことがあります。

他のヒント

ソリューション、department/%/listようなパスの中でビューの引数を必要とする、特に1については、ブログ記事を参照してください。の<のhref = "http://peterpetrik.com/blog/node-id-view -argument-から-SEOフレンドリー-URLパス」のrel = "noreferrer"> SEOフレンドリーなURLパスする

からの眺め引数としてノードID

最後に、このスニペットは、仕事をした - それだけできれい URL を剥奪し、報告します非常に最後の引数をバックアップます。

<?php
    $refer= $_SERVER ['REQUEST_URI'];
    $nid = explode("/", $refer);
    $nid = $nid[3];
?>
<時間>

コメント返信を考えると、上記のは、おそらくDrupalの arg() の関数は、要求のパスの一部を取得します:

<?php
    $nid = arg(3);
?>

あなたは、パネルモジュールをconsidder必要があります。これは非常に大きなモジュールであり、あなたは本当にそれの潜在能力を活用することができます前に、いくつかの作業が必要です。だから、considderationにそれを取るます。

あなたはセットアップに異なる領域に配置することができますいくつかのビュー/ブロックを含むページを使用することができます。それはあなたが見ているものに関連する何もすることができ、コンテキストと呼ばれる概念を使用しています。あなたは閲覧をブロックだけでなく、レイアウトを変更するだけでなく、されているノードを決定するために、そのコンテキストを使用することができます。あなたは離れて管理インターフェースからPHPコードを移動することができますので、それはまた、もう少しきれいです。

サイドノートでは、それはまた、ビューの著者によって書かれています。

カップルの方にとって:

  1. お客様のセットのブロックの見通し株式会社エヌアイデイを引数に指定する。

  2. できる手動でパスのアクセスすることにより、株式会社エヌアイデイ $view オブジェクトをコードします。この配列で $view->result.各行のオブジェクトの配列内の株式会社エヌアイデイ"は、そのオブジェクト。ですが、foreachことをすべて取得しますnidのすべての列のか。

最初のオプションが多く、そのニーズにこうと思います。

新しいDrupalの約7:関数menu_get_object()を使用しているノードIDを取得する正しい方法;

例:

$node = menu_get_object();
$contentType = node_type_get_name($node);

のDrupal 8は、別の方法を有しています。これをチェックします:

のarg()に廃止され

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top