我正在尝试从Pimcore中的可编辑链接检索文档对象或页面对象。根据{{3}},我可以访问以下方法:
getHref()
获取此链接的路径STRING
getText()
获取链接文字STRING
getTarget()
获取链接的目标为STRING
getParameters()
获取链接的查询参数STRING
getAnchor()
获取链接的锚文本STRING
getTitle()
获取链接标题STRING
getRel()
获取链接的rel文本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,您可以通过其网址获取帖子,但我在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可编辑。
答案 0 :(得分: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方法。