2016-10-27 38 views
1

我試圖從Pimcore中的可編輯鏈接檢索文檔對象或頁面對象。由於每documentation,我有機會獲得以下方法:Pimcore:從可編輯鏈接檢索文檔或頁面

  • getHref()獲取該鏈接的路徑STRING
  • getText()獲取鏈接的文本STRING
  • getTarget()獲取鏈接的目標作爲STRING
  • getParameters()獲取鏈接的查詢參數爲STRING
  • getAnchor()獲取作爲鏈接STRING
  • getTitle()的錨文本獲取鏈接的標題爲STRING
  • getRel()獲取鏈接的相對文本STRING
  • getTabindex()獲取鏈接tabindex屬性爲STRING
  • getAccessKey()獲取訪問密鑰的鏈接爲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,你可以通過他們的URL獲得帖子,雖然我在Pimcore/Zend找不到類似的功能。

附加信息

如果我使用無證方法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關鍵的數字就是我的目標。我的問題是,這可以做什麼適當和最有效的方式?我可以簡單地從這個數組中安全地訪問這個值嗎?

接受的解決方案:

伊戈爾的解決方案可在這兩個方面。我們最終使用HREF可編輯而不是LINK可編輯。

回答

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編輯可能是一個更好的選擇: https://www.pimcore.org/docs/latest/Documents/Editables/Href.html

隨着HREF編輯,你可以只需使用getElement方法即可。

+0

太棒了,我會試試看,並回復給你。謝謝! – RedYetiCo

+0

完美地工作。謝謝。 – RedYetiCo

+0

很高興能幫到你! –