Joomla 1.5 Module Вывод возврата - PullRequest
1 голос
/ 30 декабря 2011

Я создаю модуль Joomla, который в конечном итоге будет извлекать данные из внешнего источника данных.Прямо сейчас, пока я учусь, я просто установил строку «Этот бит работает правильно» в позицию модуля.Однако у меня были проблемы с тем, чтобы заставить его работать правильно.Вот мой код:

mod_ucr.php:

<?php
/**
* UniversalContentRepository Module Entry Point
* 
* @package    UniversalContentRepository
* @subpackage Modules
*/

// no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );

// Include the syndicate functions only once
require_once( dirname(__FILE__).DS.'helper.php' );
$helper = new modUCRHelper();
$content = $helper->getSnippetContent();
require( JModuleHelper::getLayoutPath( 'mod_ucr' ) );
?>

mod_ucr.xml

<?xml version="1.0" encoding="utf-8"?>
<install type="module" version="1.5.0">
    <name>Universal Content Repository</name>
    <author>Brendon Dugan</author>
    <version>1.5.0</version>
    <description>A module to allow the insertion of UCR Snippets into a Joomla site.</description>
    <files>
        <filename>mod_ucr.xml</filename>
        <filename module="mod_ucr">mod_ucr.php</filename>
        <filename>index.html</filename>
        <filename>helper.php</filename>
        <filename>tmpl/default.php</filename>
        <filename>tmpl/index.html</filename>
    </files>
    <params>
    </params>
</install>

helper.php:

<?php
class modUCRHelper
{
    function __construct(){

    }


    public function getSnippetContent($id = 0){
        $content = "This bit works correctly, ID = $id";
        return $content;
    }
}
?>

tmpl/default.php:

<?php // no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );
echo $content; 
?>

Здесь мы устанавливаем переменную $ content как выход метода getSnippetContent () вспомогательного класса.Этот метод в настоящее время:

function getSnippetContent($id = 0){
    $output = "This bit works correctly";
    return $output;
}

, который просто выводит строку, которую я хочу напечатать.В моем шаблоне я должен иметь возможность отображать содержимое следующим образом:

<?php // no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );
echo $content; 
?>

Но вместо этого модуль выводит:

"This bit works correctlyThis bit works correctly"

Если я закомментирую выражение echo, строка будетвсе еще повторяется один раз, предполагая, что само выражение return повторяет.

Я адаптировал свой код из "Hello World!"Пример расположен в документации Joomla .Есть идеи?

Ответы [ 2 ]

2 голосов
/ 04 января 2012

Это основной код Joomla для отображения модуля

$content = '';
ob_start();
require $path;
$module->content = ob_get_contents().$content;
ob_end_clean();

Используется сама переменная $ content. И ваш модуль меняет значение $ содержимого. Один вывод из вашего модуля, а другой из-за этого кода Joomla. Он добавляет содержимое вашего модуля в переменную $ content (которая была изменена в вашем модуле).

Так что не используйте переменную $ content в вашем коде.

0 голосов
/ 03 января 2012

Оператор return не повторяется.

Идея состоит в том, чтобы добавить больше информации к вашей функции.Попробуйте добавить идентификатор в вывод, например,

function getSnippetContent($id = 0){
    $output = "This bit works correctly. ID=" .$id ."<br>";
    return $output;
}

и посмотрите, не вызывает ли это какие-либо идеи.Может быть, вы добавили модуль дважды?

...