模板中的Joomla自定义字段
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了模板中的Joomla自定义字段相关的知识,希望对你有一定的参考价值。
我想为Joomla 3.7自定义我的模板,以便我可以使用Joomla 3.7的新功能,自定义字段(com_fields),并在我需要显示它的模板中通过CSS显示和格式化它们。
有人可以建议我在模板中使用的php代码来显示字段,请举例说明。
提前致谢。
当然不是正确的方法,但我有同样的需要,我找到了基于https://www.giudansky.com/news/12-coding/146-joomla-custom-fields的工作
从/components/com_content/views/article/tmpl/default.php到模板/ YOUR_THEME / html / com_content / article / default.php的Copie default.php
添加以下代码行25:
$myCustomFields = array();
foreach($this->item->jcfields as $field) {
$myCustomFields[$field->name] = $field->value;
}
$GLOBALS['myCustomFields'] = $myCustomFields;
通常,您会在全局变量中添加附加到文章的字段内容。在您的模板页面上,您可以知道您的字段的检索值。 just print_r($ GLOBALS ['myCustomFields']);查看数组的内容。
这将成为等待更好答案的诀窍..
对于每个迟到的人来说。如果你想在Module-Override中使用自定义表单字段(这实际上是修改j!-templates的唯一方法,那么google'joomla template override')你可以使用这个方便的代码片段:
<?php
JLoader::register('FieldsHelper', JPATH_ADMINISTRATOR . '/components/com_fields/helpers/fields.php');
$jcFields = FieldsHelper::getFields('com_content.article', $item, true);
$itemCustomFields = array();
foreach($jcFields as $field) {
$itemCustomFields[$field->name] = $field->rawvalue;
}
?>
现在您可以使用自定义字段:qazxsw poi
尚未在文章覆盖中进行测试。可能很快,如果是这样,这将得到更新。
这绝对是错误的方法,我想,但我撕裂了我的头发所以我想出了这个快速的数据库查询,以返回模板中的自定义字段值。这当然违反了某种joomla协议?很明显,这假设你可以在你的模板中获得$ articleid,这是你文章的当前ID。
我也在等待更好的解决方案,但希望这会有所帮助
itemCustomFields['customFieldName1']
我发现最容易理解com_fields在渲染代码中的作用。在Joomla!3.7+中,您可以在[joomla_root] /components/com_fields/layouts/fields/render.php中找到它。
以下是重现Joomla具有的格式所需的主要部分:
$db =& JFactory::getDBO();
$sql = "select * from #__fields_values where `item_id` = $articleid";
$db->setQuery($sql);
$fieldslist = $db->loadObjectList();
echo $fieldslist[0]->value;
echo $fieldslist[1]->value;
echo $fieldslist[your field ID here]->value;
这将循环遍历组件或文章的所有可用标记。这个方法的好处是它仍然应用你在字段中包含的渲染类。
确保将自动显示设置为不自动显示在您的字段上;否则你会在页面视图中看到它们两次。
如果您只想定位要显示的特定字段,可以使用字段的名称来定位它。 (标签和值对位于下方。)有关详细信息,请参阅JLoader::register('FieldsHelper', JPATH_ADMINISTRATOR . '/components/com_fields/helpers/fields.php');
<dl class="fields-container">
<?php foreach ($this->item->jcfields as $field) : ?>
<?php // If the value is empty do nothing ?>
<?php if (!isset($field->value) || $field->value == '') : ?>
<?php continue; ?>
<?php endif; ?>
<?php $class = $field->params->get('render_class'); ?>
<dd class="field-entry <?php echo $class; ?>">
<?php echo FieldsHelper::render($context, 'field.render', array('field' => $field)); ?>
</dd>
<?php endforeach; ?>
</dl>
。
以上是关于模板中的Joomla自定义字段的主要内容,如果未能解决你的问题,请参考以下文章
Joomla 3 MVC 平台 12.1 自定义组件模板覆盖