繁体   English   中英

Joomla 4 表单域选择现有的 joomla 文章

[英]Joomla 4 form field to select existing joomla article

我正在寻找一种在我的模板中包含印记和隐私文章的方法。 我在模板中使用标准 xml 文件。 现有的Joomla 标准表单字段类型似乎没有提供解决方案。

如果你想在菜单中链接一篇文章,你已经可以这样做了。

这也可以在模板中完成吗? 像这个例子。

<field name="linktomyarticle" type="article" label="Select a article" description="link to privacy article" />

如果我能从 Joomla 获得正确的 URL,我会很高兴。 还是有其他方法可以做到这一点?

我找到了一个解决方案,并将其发布在这里,以防其他人正在寻找它。 可能会有一种更快的方法,但这对我有用。

添加到 templateDetails.xml:

        <field
          name="Datenschutzbeitrag" 
          type="sql"
          default="10"
          label="Datenschutzbeitrag auswählen"
          query="SELECT id, title As Datenschutzbeitrag FROM #__content"
          key_field="id"
          />

在 index.php 中你现在可以得到如下代码:

$this->params->get('Datenschutzbeitrag')`

该字符串包含所选文章的文章 ID。 我现在编写了一个函数,它返回一个正确的 seo 优化的 Joomla 路径。

调用函数:

<?php echo druckfenstertools::gibLinkvonID($this->params->get('Datenschutzbeitrag')); ?>

php函数:

<?php defined( '_JEXEC' ) or die;

use Joomla\CMS\Router\Route;
use Joomla\CMS\Factory;

class druckfenstertools {

    public static function gibLinkvonID($ArtikelID)
    {
        $db = Factory::getDbo();
        $query = $db->getQuery(true);
            
        // Abfage erstellen für die ID
        $query->select($db->quoteName(array('id','title','catid')));
        $query->from($db->quoteName('#__content'));
        $query->where('id = ' . $db->quote($ArtikelID));
        
        // Query erzeugen
        $db->setQuery($query);

        $LinkObjekt = $db->loadObject();

        return '<a href="' .  Route::_('index.php?option=com_content&view=article&catid=' . $LinkObjekt->catid . '&id='.$LinkObjekt->id,true) . '" title="' . $LinkObjekt->title . ' öffnen">' . $LinkObjekt->title . '</a>';
    }
}
?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM