Сделайте так, чтобы RokSprocket извлекал видео элемента k2, но получал неопределенную ошибку свойства

Я создаю свой сайт с помощью Joomla, и я использую RokSprocket для отображения некоторых популярных элементов на странице. RokSprocket может использовать k2 в качестве поставщика контента, хотя он не может получить видео элемента k2. Поэтому я попытался изменить файлы PHP, но я получил свойство Undefiend $stdClass::video error. Вот что я делаю:

 RokSprocket is using function convertRawToItem to convert raw items(in this case k2 items) to RokSprocket items:

     protected function convertRawToItem($raw_item, $dborder = 0)
{
    //$textfield = $this->params->get('k2_articletext_field', '');

    $item = new RokSprocket_Item();

    $item->setProvider($this->provider_name);
    $item->setId($raw_item->id);
    $item->setAlias($raw_item->alias);
    $item->setTitle($raw_item->title);
    $item->setDate($raw_item->created);
    $item->setPublished(($raw_item->published == 1) ? true : false);
    $item->setCategory($raw_item->category_title);
    $item->setHits($raw_item->hits);
    $item->setRating($raw_item->rating);
    $item->setMetaKey($raw_item->metakey);
    $item->setMetaDesc($raw_item->metadesc);
    $item->setMetaData($raw_item->metadata);
    $item->setPublishUp($raw_item->publish_up);
    $item->setPublishDown($raw_item->publish_down);
    ................
    return $item;
 }

и определение класса RokSprocket_item следующее:

class RokSprocket_Item
.......
{
public function setText($introtext)
{
    $this->text = $introtext;
}
public function getText()
{
    return $this->text;
}....}

RokSprocket устанавливает значение своего элемента с соответствующим значением необработанного элемента k2. Поскольку на собственных страницах K2 он использует echo $this->item->title и echo $this->item->video и т.п. для вывода различных значений элемента k2, я думаю, что я могу использовать значение видео элемента k2 как rokSprocket. использует другое значение элемента k2. Поэтому я думаю, что все, что мне нужно сделать, это 1) добавить новое значение "video" и функцию setVideo/getVideo в класс RokSprocket_item;

protected $video;
    public function setVideo($video)
{
    $this->video = $video;
}
public function getVideo()
{
    return $this->video;
}   

2) в функцию convertRawToItem добавьте

    $item->setVideo($raw_item->video);

3) на передний конец добавить

   <?php echo $item->getVideo(); ?>

Но на первой странице выводится сообщение об ошибке: Неопределенное свойство: stdClass::$video в строке, где я добавил "$item->setVideo($raw_item->video);".

Что я сделал не так?

Я думаю, что сообщение об ошибке означает, что $ raw_item не имеет значения видео, я искал в файлах PHP, чтобы проверить, когда вызывается этот convertRawToItem, и нашел это в файле AbstarctJoomlaBasedProvider.php:

public function getArticleInfo($id, $raw = false)
{
    /** @var $filer_processor RokCommon_Filter_IProcessor */
    $filer_processor = $this->getFilterProcessor();
    $filer_processor->process(array('id' => array($id)), array(), true);
    $query = $filer_processor->getQuery();
    $db    = JFactory::getDbo();
    $db->setQuery($query);
    $db->query();
    if ($error = $db->getErrorMsg()) {
        throw new RokSprocket_Exception($error);
    }
    $ret = $db->loadObject();
    if ($raw) {
        $ret->preview = $this->_cleanPreview($ret->introtext);
        $ret->editUrl = $this->getArticleEditUrl($id);
        return $ret;
    } else {
        $item          = $this->convertRawToItem($ret);
        $item->editUrl = $this->getArticleEditUrl($id);
        $item->preview = $this->_cleanPreview($item->getText());
        return $item;
    }
}

Теперь я застрял здесь. Что делать дальше, совершенно за пределами моих очень ограниченных знаний PHP, похоже, что-то связано с базой данных. Любые намеки или учения высоко ценятся.

1 ответ

Вам нужно определить видео как стандартный класс

$video = new stdClass;
Другие вопросы по тегам