Joomla在哪里存储全文'文章?

时间:2014-06-01 10:52:36

标签: php database joomla joomla3.0

Joomla(3.3)在哪里存储文章的“全文”?当我从Joomla内容表中选择全部(“*”)时:

private function selectAllContent() {
    $query = $db->getQuery(true);
    $query->select("*");
    $query->from($db->quoteName(array('#__contents')));
    $rows = $db->loadRowList();
    // ...
}

我发现fulltext列为空,而introtext列的文章文本版本已删除了某些html标记,例如子弹列表。在Joomla admin中,仍然可以打开存在项目符号列表标记的“编辑文章”屏幕。它存储在数据库中的哪个位置?

我知道有一个相关的问题: where are articles stored in joomla? 但是,该问题的答案只是说内容表是文章的存储位置,这并不能完全解决我的问题。非常感谢你能提供帮助!

更新

我仍然迷失方向,因此提供导致“丢失”标记的所有代码和流程。我已经使用print_r来查看返回的所有内容。

  1. 首先,我创建一个带有列表的文章,因此标记看起来像:
      

    介绍性示例文本

        
              
    1. 有些商品加上更多文字
    2.         
    3. 另一项加上更多文字
    4.     

  2. 文章已保存。
  3. 模块从数据库中提取所有文章(及其所有内容)。模块代码如下所示:

    // From the main module file:
    $helper = new modArticlesTableHelper;
    $articlesTable = $helper->getArticleContent($params);
    
    // From the module helper file:
    public function getArticleContent($params) {
        $result = $this->_getArticles();
        return "<div style=\"display:none;\">".print_r($result, true)."</div>";
    }
    
    private function _getArticles() {
        $db = JFactory::getDbo();
        $query = $db->getQuery(true);
        $query->select("*");
        $query->from($db->quoteName(array('#__contents')));
        $query->where($db->quoteName('catid')." = 16");
        $rows = $db->loadObj();
        return $rows;
    }
    
  4. 其结果只是在模块模板中回显:

    echo $articlesTable;
    
  5. 如果我然后复制模块从显示它的页面输出的标记,只有这样:

    ["introtext"]=&gt;
    string(127) "Introductory example text 
    
    <strong>Some item</strong> plus more text here
    <strong>Another item</strong> plus more text here"
    ["fulltext"]=&gt;
    string(0) ""
    
  6. 到目前为止,我还没有看到过滤器如何发挥作用 - 看起来它直接从数据库进入print_r。但是,当我再次编辑文章时,标记仍然是:

  7.   

    介绍性示例文本

         
        
    1. 有些商品加上更多文字
    2.   
    3. 另一项加上更多文字
    4.   

    过滤器是否有可能在某处剥离列表?

    更新2

    如果我在joomla文章的顶部添加一个Readmore中断,则会返回以下内容,但是,我不相信在每篇文章的顶部添加readmore中断是正确的方法 - 看起来像是劈!

    ["introtext"]=>
    string(0) ""
    ["fulltext"]=>
    string(164) "
    <p>Introductory example text</p>
    <ol>
    <li><strong>Some item</strong> plus more text here</li>
    <li><strong>Another item</strong> plus more text here</li>
    </ol>"
    

3 个答案:

答案 0 :(得分:2)

如果您没有“阅读更多”,则所有内容都将存储在introtext中。如果你进行了更多的阅读,那么它将在introtext和fulltext之间进行分割。换句话说,如果要进行区分,则只需要全文。它有点老式,但这是来自Joomla 1.0的API,它是JSON之前的版本。

答案 1 :(得分:2)

标记存储在introtext / fulltext列中,没有其他地方只存储标记(将它们拆分是一个可怕的想法)。做一个print_r($rows),看看它就在那里。

如果您在输出中没有看到它,问题就在于您显示它的方式。你能告诉我们你是怎么做到的吗?

答案 2 :(得分:1)

查看Joomla 3.3下载中包含的exmaple数据库,#_content表中有此条目(仅显示introtext列的一部分):

<p>Here are some basic tips for working on your site.</p>\r\n<ul>\r\n<li>Joomla! has a "fr ... ge.</li>\r\n</ul>, 

它包含无序列表<ul><li>,并且SQL转储中没有其他位置可以找到无序列表的html标记。

所以问题是,基于什么事实你的结论是:

  

introtext列有一个文章文本的版本,其中有一些   删除了html标记,例如子弹列表。

例如:您在显示内容时是否使用了任何过滤功能?