Joomla 3.2模块特定通知" echo"在前端

时间:2014-08-09 22:31:00

标签: php mysql database joomla echo

我试图访问joomla后端预定义的一些信息

id asset_id标题备注已激活 90 61 Testtitle testnote 1

我已尝试使用getInt ItemeId使用相同的代码,但它适用于另一个表但不适用于假设所以我尝试了getInt id

这是我试图开始工作的一些代码,但echo $ note不起作用

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


$menuitemid = JRequest::getInt('id');
$db     =& JFactory::getDBO();  
$query = "SELECT note FROM #__modules WHERE published = 1 and id = '".$menuitemid."' ";
$db->setQuery($query);
$note = $db->loadResult();

?>


<div title="**<?php echo $note ?>**" class="custom<?php echo $moduleclass_sfx ?>" <?php if ($params->get('backgroundimage')) : ?> style="background-image:url(<?php echo $params->get('backgroundimage');?>)"<?php endif;?> >
    <?php echo $module->content;?>
</div>

修改

与我提供的建议一样,我已经编辑了我的代码(这实际上也无法正常工作):

defined('_JEXEC') or die;
$jinput = JFactory::getApplication()->input;
$menuitemid = $jinput->get('id', null, 'INT');
$db = JFactory::getDbo();     
$query = $db->getQuery(true);

$query->select('note')
      ->from($db->quoteName('#__modules'))
      ->where($db->quoteName('published') . ' = '. (int)1 . 
      ' AND' . $db->quoteName('id') . ' = '. $db->quote($menuitemid));

$db->setQuery($query);     
$note = $db->loadResult();
?>


<div title="<?php echo $note ?>" class="custom<?php echo $moduleclass_sfx ?>" <?php if ($params->get('backgroundimage')) : ?> style="background-image:url(<?php echo $params->get('backgroundimage');?>)"<?php endif;?> >
    <?php echo $module->content;?>
</div>

最后,通过一些自己的改进,我得到了这个功能正常的代码: 要捕获特定模块ID,我将AND SELECTOION ID更改为$ module-&gt; id

defined('_JEXEC') or die;
$jinput = JFactory::getApplication()->input;
$menuitemid = $jinput->get('id', null, 'INT');
$db = JFactory::getDbo();     
$query = $db->getQuery(true);

$query->select('note')
      ->from($db->quoteName('#__modules'))
      ->where($db->quoteName('published') . ' = '. (int)1 . 
      ' AND' . $db->quoteName('id') . ' = '. $module->id);

$db->setQuery($query);     
$note = $db->loadResult();
echo $note;

1 个答案:

答案 0 :(得分:0)

好的,让我们一点一点地思考。正如我的评论中所提到的,JRequest已被弃用,因此您需要使用以下内容:

$jinput = JFactory::getApplication()->input;
$menuitemid = $jinput->get('id', null, 'INT');

您使用旧的编码标准进行数据库查询,并且不使用任何转义方法。以下是Joomla文档中提供的内容,您应该使用它:

$db = JFactory::getDbo();     
$query = $db->getQuery(true);

$query->select('note')
      ->from($db->quoteName('#__modules'))
      ->where($db->quoteName('published') . ' = '. (int)1 . 
      ' AND' . $db->quoteName('id') . ' = '. $db->quote($menuitemid));

$db->setQuery($query);     
$note = $db->loadResult();

echo $note;

在上面的查询中,您将看到我使用(int)1,这意味着该值将始终为整数。我还使用quoteName()表示字段,quote()表示用于转义的值。

这将输出您已分配给模块的note。我测试了这个,它对我来说很有效。

希望这有帮助