2016-10-27 5 views
1

Pimcoreの編集可能なリンクからドキュメントオブジェクトまたはページオブジェクトを取得しようとしています。Pimcore:編集可能なリンクからドキュメントまたはページを取得する

  • getHref()は、リンクのターゲットを取得しますSTRING
  • getTarget()として、リンクのテキストを取得STRING
  • getText()として、このリンクのパスを取得します。documentationごととして、私は次のメソッドへのアクセス権を持っていますSTRING
  • getParameters()としてSTRING
  • getAnchor()として、リンクのクエリのparamsをゲットSTRING
  • getTitle()として、リンクのアンカーテキストはSTRING
  • getRel()として、リンクのタイトルを取得しますSTRING
  • getAccessKey()うとしてリンクのtabindex属性を取得しますSTRING
  • getTabindex()としてリンクの相対テキストを取得します。リンクのアクセスキー:STRING
  • isEmpty()編集可能かどうかを確認しますBOOL

ZEND PHP:

<?php if(!empty($this->block("topfive_linkblock"))) : ?> 
    <ul class="wrapper"> 
    <?php while($this->block("topfive_linkblock")->loop()) : ?> 
     <li><?= $this->link("topfive_links"); ?></li> 
    <?php endwhile; ?> 
    </ul> 
<?php endif; ?> 

これはアンカーリンクを作成することもしていますが、私はプレビュー画像のように物事を引くことができますので、私はこれらのページ用のカスタムプロパティを取得できるようにしたいのですがその他の情報ビットを含む。

WordPressでは、Pimcore/Zendで同様の機能を見つけることはできませんでしたが、URLで投稿を受け取ることができます。

追加情報

私は私が必要なものとの配列を得ることができますが、それは何が適切な方法だ場合、私は配列としてキーにアクセスするためにしたくない文書化されていない方法getDataForResource()を使用している場合これを行うには(アーキテクチャの変更が将来の動作を変更したり、このメソッドを削除した場合)

<?= print_r($this->link("topfive_links")->getDataForResource(), true); ?>

出力:

Array 
(
    [text] => Associations 
    [path] => /customers/associations 
    [target] => 
    [parameters] => 
    [anchor] => 
    [title] => 
    [accesskey] => 
    [rel] => 
    [tabindex] => 
    [class] => 
    [attributes] => 
    [internal] => 1 
    [internalId] => 49 
    [internalType] => document 
    [type] => internal 
) 

internalIdキー内の数字は、私が目指してるものです。私の質問は、これができる適切かつ最も効率的な方法は何ですか?この配列からこの値に簡単にアクセスできますか?

受理解決策:

イゴールのソリューションは、両方の点で動作します。 LINK編集可能ではなくHREF編集可能を使用しました。

答えて

2

あなたは、編集可能なリンク内の要素この方法について、すべてのデータを取得することができます。

<?php 
/** @var \Pimcore\Model\Document\Tag\Link $link */ 
$link = $this->link("topfive_links"); 
?> 

<?php if ($this->editmode): ?> 

    <?php if(!empty($this->block("topfive_linkblock"))) : ?> 
     <ul class="wrapper"> 
      <?php while($this->block("topfive_linkblock")->loop()) : ?> 
       <li><?= $link ?></li> 
      <?php endwhile; ?> 
     </ul> 
    <?php endif; ?> 

<?php else: ?> 

    <?php 
    while($this->block("topfive_linkblock")->loop()) { 
     $link = $this->link("topfive_links"); 
     $linkElementData = $link->getData(); 

     $element = null; 
     if ($linkElementData["internal"]) { 
      $elementId = $linkElementData["internalId"]; 
      switch ($linkElementData["internalType"]) { 
       case "document": 
        $element = \Pimcore\Model\Document::getById($elementId); 
        break; 

       case "asset": 
        $element = \Pimcore\Model\Asset::getById($elementId); 
        break; 
      } 
     } 

     if ($element) { 
      echo get_class($element) . "<br>"; 
     } 
    } 
    ?> 

<?php endif ?> 

ご利用の場合のHREF編集可能な、より良い選択かもしれません:あなたができるのhref編集可能で https://www.pimcore.org/docs/latest/Documents/Editables/Href.html

getElementメソッドを使用してください。

+0

恐ろしい、私はそれを試し、あなたに戻ってきます。ありがとう! – RedYetiCo

+0

完全に動作します。ありがとう。 – RedYetiCo

+0

うれしい私は助けることができました! –

関連する問題