t3lib_browseLinksHook 和自定义链接格式

问题描述 投票:0回答:1

我正在尝试为 RTE 浏览链接窗口创建一个新选项卡,目的是允许链接到网络共享上的文件。使用外部链接将不起作用,因为 TYPO3 会自动在链接前面添加

http://<domain>/typo3

我的自定义选项卡中也遇到同样的问题。当例如输入

\\<share>\<file>
,链接最终变为
http://<domain>/typo3/\\<share>\<file>

钩子类:

class Tx_Test_Hooks_NetworkFolderTree implements t3lib_browseLinksHook
{
  public function init($browseLinks, $additionalParameters)
  {
    $this->browseLinks = &$browseLinks;
  }

  public function getTab($linkSelectorAction)
  {
    global $BE_USER, $LANG;

    $content = '
      <form action="" name="lurlform" id="lurlform">
        <table border="0" cellpadding="2" cellspacing="1" id="typo3-linkURL">
          <tr>
        <td>URL:</td>
        <td><input type="text" name="lurl"'.$this->browseLinks->doc->formWidth(20).' value="" /> '.
        '<input type="submit" value="set" onclick="browse_links_setHref(document.lurlform.lurl.value); browse_links_setAdditionalValue(\'data-htmlarea-external\', \'1\'); return link_current();" /></td>
          </tr>
        </table>
      </form>';

    $content .= $this->browseLinks->addAttributesForm();

    return $content;
  }

  public function parseCurrentUrl($href, $siteUrl, $info)
  {
    if( preg_match('/^([a-z]\:[\/\\\]|\\\{2})/', $href, $matchData) ) $info['act'] = 'unc';

    return $info;
  }

  public function modifyMenuDefinition($menuDefinition)
  {
    global $LANG;

    return array_merge($menuDefinition, array(
                'unc'   => array(
                'isActive'  => ($this->browseLinks->act == 'unc'),
                'label'     =>  'Network file',
                'url'       =>  '#',
                'addParams' =>  'onclick="jumpToUrl(\''.htmlspecialchars('?act=unc&mode='.$this->browseLinks->mode.'&bparams='.$this->browseLinks->bparams).'\');return false;"'
            )
        )
    );
  }

  public function addAllowedItems($currentlyAllowedItems)
  {
    return array_merge($currentlyAllowedItems, array('unc'));
  }

}
php typo3
1个回答
0
投票

发现问题了。通过 PHP 的

parse_url
进行检查,它返回有关 url 的信息数组。如果缺少架构(此处就是这种情况),则会附加
http://

© www.soinside.com 2019 - 2024. All rights reserved.