2017-07-21 13 views
0

エンティティクエリを使用してノードのパスを取得する方法を理解しようとしています。これまではノードのタイトルを取得していましたが、ノードのパス/ URLを取得する方法の解決策を見つけることができます。ここに私のコードのサンプルですエンティティクエリを使用してノードのURLパスを取得します。

$facultyPostings = $query->get('node') 
          ->condition('status', 1, '=') 
          ->condition('type', 'careers') 
          ->condition('field_career_directory', 'Faculty Postings', '=') 
          ->sort('created') 
          ->execute(); 

foreach ($facultyPostings as $key => $faculty_postings_careers) { 


    $careersNode = _nodeLoad($faculty_postings_careers); 



    $variables['faculty_postings'][$key]['title'] = $careersNode->get('title')->value; 
    $variables['faculty_postings'][$key]['path'] = $careersNode->get('path')->value; 
} 
+0

あなたはURLの別名を使用していますか? – vishwa

+0

@vishwaはい私は – clestcruz

+1

です。D7を使用している場合は、drupal_get_path_alias()を使用できます。あなたがノードnidを持っているなら。 D8でサービスパスを使用することができます.alias_manager – vishwa

答えて

1

あなたはDrupal 8 core.services.ymlファイルで提供されるサービスを使用する必要があります。だからあなたのループであなたは使うことができます。

//そう思う、これはNIDを取得します

$ NID = $ careersNode->( 'ID')を取得 - >の値を、

//この1つのドキュメントあたりとして正しい

$別名= \ Drupalの::サービス( 'path.alias_manager') - > getAliasByPath( '/ノード/'.$ NID)。

https://api.drupal.org/api/drupal/core%21lib%21Drupal%21Core%21Path%21AliasManager.php/class/AliasManager/8.3.x

+0

私は現在、$ careersNode = _nodeLoad($ faculty_postings_careers ); 'ノードをロードまたは取得します – clestcruz

+0

はいノードをロードします。 – vishwa

関連する問題