Joomla在哪里存储'fulltext'的文章


Where does Joomla store 'fulltext' of articles?

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

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

我发现fulltext列是空的,introtext列有一个版本的文章文本已经删除了一些html标记,例如项目符号列表。在Joomla管理中,仍然可以打开"编辑文章"屏幕,其中有项目符号列表标记。它存储在数据库的什么地方?

我知道有一个相关的问题:文章存储在joomla的哪里?然而,这个问题的答案只是说内容表是存储文章的地方,这并不能完全解决我的问题。非常感谢,如果你能帮助!

我仍然迷路了,所以提供所有的代码和导致"丢失"标记的过程。我已经用print_r看到所有东西都被返回。

  1. 首先,我用列表创建一篇文章,所以标记看起来像:

    介绍性示例文本

    1. 一些项目在这里加上更多的文本
    2. 另一项加上更多文本
  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。但是,当我再次编辑文章时,标记仍然是:

介绍性示例文本

  1. 一些项目在这里加上更多的文本
  2. 另一项加上更多文本

是否有可能过滤器在这里的某个点剥离列表?

更新2

如果我在joomla文章的顶部添加一个Readmore break,将返回以下内容,但是,我不认为在每篇文章的顶部添加一个Readmore break是正确的方法-看起来像一个hack!

["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>"

如果你不放一个"read more"分隔符,所有内容都将存储在introtext中。如果你放了一个read more,那么它将被分割成intrtext和全文。换句话说,如果你要做这种区分,你只需要全文。有点过时了,但这是Joomla 1.0的API它是pre - JSON

标记存储在introtext/全文列中,没有其他地方存储标记(将它们分开是一个糟糕的主意)。做一个print_r($rows),看看它都在那里。

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

查看Joomla 3.3下载中包含的示例数据库,有#__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标记,例如项目符号列表。

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