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
来查看返回的所有内容。
介绍性示例文本
- 有些商品加上更多文字
- 另一项加上更多文字
醇>
模块从数据库中提取所有文章(及其所有内容)。模块代码如下所示:
// 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中断,则会返回以下内容,但是,我不相信在每篇文章的顶部添加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>"
答案 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标记,例如子弹列表。
例如:您在显示内容时是否使用了任何过滤功能?