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
看到所有东西都被返回。
- 首先,我用列表创建一篇文章,所以标记看起来像:
介绍性示例文本
- 一些项目在这里加上更多的文本
- 另一项加上更多文本
- 文章已保存。
模块从数据库中提取所有文章(及其所有内容)。模块代码如下所示:
// 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; }
其结果简单地在模块模板中回显:
echo $articlesTable;
如果我然后从显示它的页面复制模块输出的标记,只有这个通过:
["introtext"]=> string(127) "Introductory example text <strong>Some item</strong> plus more text here <strong>Another item</strong> plus more text here" ["fulltext"]=> string(0) ""
到目前为止,我没有看到过滤器是如何发挥作用的-它看起来很直接地从数据库进入
print_r
。但是,当我再次编辑文章时,标记仍然是:
介绍性示例文本
- 一些项目在这里加上更多的文本
- 另一项加上更多文本
是否有可能过滤器在这里的某个点剥离列表?
更新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标记,例如项目符号列表。
例如:您在显示内容时是否使用任何过滤功能?