modx 上有一个站点(MODX 3.0.1),还有一个 ipb 论坛(Invision Community v4.7.1),php 8.1。
我想将 ipb 论坛的最新主题带到 modx 站点。
在网上找到了关于modx和vbulletin整合的文章(
https://habr.com/ru/post/93572/),以及vbulletin论坛到modx网站的话题输出( https://habr.com/ru/post/93572/ ) /habr.com/ru/post/93943/)。
我试图通过与这些文章类比来做到这一点。
从第一篇文章开始,我不明白全局 $vbulletin 来自哪里;
也许我不明白 ipb 中的哪个文件需要复制到 global_modx.php,所以我决定跳过它..
Для начала нам необходимо подготовиться, и первым будет файл global.php форума.
Я сделал так: скопировал его в global_modx.php (.../forum/global_modx.php), открыл для редактирования и удалил все после 891 строки (напоминаю, версия форума 3.8.1) — подключение стилей и т.д., т.е. последней строчкой в файле у меня вызов функции verify_ip_ban();
从论坛撤话题的文章来看,一切似乎都清楚了。我用 ipb 替换表和列的名称,添加到论坛外部数据库的连接,结果如下:
<?php
define('MODX_CORE_PATH', '/path/to/revo/core/');
define('MODX_CONFIG_KEY','config');
require_once MODX_CORE_PATH . 'model/modx/modx.class.php';
// Задаем подключения к сторонней базе данных:
$host = 'localhost';
$username = 'root';
$password = '123456';
$dbname = 'forum';
$port = 3306;
$charset = 'utf8';
$dsn = "mysql:host=$host;dbname=$dbname;port=$port;charset=$charset";
$xpdo = new xPDO($dsn, $username, $password);
$count = 10;
$forumlink = 'https://forum.mysite.ru/';
$sql = 'SELECT title as topic,tid,last_post,last_poster_id,last_poster_name,title_seo
FROM `forums_topics`
WHERE forum_id NOT IN ()
ORDER BY `last_post` DESC
LIMIT '.$count.';';
$res = $xpdo->query($sql);
$txt = '';
while ($f_res = $modx->db->getRow($res, 'assoc')) {
//элементы массива названы вполне себе понятно
$txt .= $modx->parseChunk('forum_last_messages',
array(
'forumlink' => $forumlink,
'postid' => $f_res['last_poster_id'],
'threadtitle' => $f_res['topic'],
'title_seo' => $f_res['title_seo'],
'lastposter' => $f_res['last_poster_name'],
'forum' => $f_res['forum'],
'postdate' => date("H:i", $f_res['last_post']) //формат даты
),
'[+',
'+]'
);
}
return $txt;
结果,网站错误
致命错误:未捕获的 PDOException:SQLSTATE[42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取在 ') ORDER BY 附近使用的正确语法
last_post
/public_html/core/vendor/xpdo/xpdo/src/xPDO/xPDO.php:2549 第 3 行的 DESC LIMIT 10' 堆栈跟踪:#0 /public_html/core/vendor/xpdo/xpdo/src/xPDO/xPDO。 php(2549): PDO->query('SELECT title as...') #1 /public_html/core/cache/includes/elements/modx/revolution/modsnippet/17.include.cache.php(25): xPDO \xPDO->query('SELECT title as...') #2 /public_html/core/src/Revolution/modScript.php(88): include('/home/zamorinpa...') #3 /public_html/ core/src/Revolution/modParser.php(505): MODX\Revolution\modScript->process(NULL) #4 /public_html/core/src/Revolution/modParser.php(218): MODX\Revolution\modParser->processTag (Array, true) #5 /public_html/core/src/Revolution/modResource.php(521): MODX\Revolution\modParser->processElementTags('', '...', true, false, '[[', ']]', 大批,9) #6 /public_html/core/src/Revolution/modResource.php(469): MODX\Revolution\modResource->parseContent() #7 /public_html/core/src/Revolution/modResponse.php(72): MODX\ Revolution\modResource->prepare() #8 /public_html/core/src/Revolution/modRequest.php(154): MODX\Revolution\modResponse->outputContent(Array) #9 /public_html/core/src/Revolution/modRequest. php(138): MODX\Revolution\modRequest->prepareResponse() #10 /public_html/core/src/Revolution/modX.php(1495): MODX\Revolution\modRequest->handleRequest() #11 /public_html/index. php(63): MODX\Revolution\modX->handleRequest() #12 {main} 在第 2549 行的 /public_html/core/vendor/xpdo/xpdo/src/xPDO/xPDO.php 中抛出MODX\Revolution\modResource->prepare() #8 /public_html/core/src/Revolution/modRequest.php(154): MODX\Revolution\modResponse->outputContent(Array) #9 /public_html/core/src/Revolution/ modRequest.php(138): MODX\Revolution\modRequest->prepareResponse() #10 /public_html/core/src/Revolution/modX.php(1495): MODX\Revolution\modRequest->handleRequest() #11 /public_html/ index.php(63): MODX\Revolution\modX->handleRequest() #12 {main} 在第 2549 行的 /public_html/core/vendor/xpdo/xpdo/src/xPDO/xPDO.php 中抛出MODX\Revolution\modResource->prepare() #8 /public_html/core/src/Revolution/modRequest.php(154): MODX\Revolution\modResponse->outputContent(Array) #9 /public_html/core/src/Revolution/ modRequest.php(138): MODX\Revolution\modRequest->prepareResponse() #10 /public_html/core/src/Revolution/modX.php(1495): MODX\Revolution\modRequest->handleRequest() #11 /public_html/ index.php(63): MODX\Revolution\modX->handleRequest() #12 {main} 在第 2549 行的 /public_html/core/vendor/xpdo/xpdo/src/xPDO/xPDO.php 中抛出handleRequest() #11 /public_html/index.php(63): MODX\Revolution\modX->handleRequest() #12 {main} 在 /public_html/core/vendor/xpdo/xpdo/src/xPDO/xPDO.php 中抛出在线 2549handleRequest() #11 /public_html/index.php(63): MODX\Revolution\modX->handleRequest() #12 {main} 在 /public_html/core/vendor/xpdo/xpdo/src/xPDO/xPDO.php 中抛出在线 2549
在 WHERE forum_id NOT IN () 这一行中固定 WHERE forum_id NOT IN (0),忘记了 0。
现在报错是这样的
致命错误:未捕获错误:在 /public_html/core/cache/includes/elements/modx/revolution/modsnippet/17.include.cache.php:28 中调用 null 上的成员函数 getRow() 堆栈跟踪:#0 /public_html /core/src/Revolution/modScript.php(88): include() #1 /public_html/core/src/Revolution/modParser.php(505): MODX\Revolution\modScript->process(NULL) #2 /public_html /core/src/Revolution/modParser.php(218): MODX\Revolution\modParser->processTag(Array, true) #3 /public_html/core/src/Revolution/modResource.php(521): MODX\Revolution\modParser ->processElementTags('', '...', true, false, '[[', ']]', Array, 9) #4 /public_html/core/src/Revolution/modResource.php(469): MODX \Revolution\modResource->parseContent() #5 /public_html/core/src/Revolution/modResponse.php(72): MODX\Revolution\modResource->prepare() #6 /public_html/core/src/Revolution/modRequest.php(154): MODX\Revolution\modResponse->outputContent(Array) #7 /public_html/core/src/Revolution/modRequest.php(138): MODX\Revolution\modRequest->prepareResponse() #8 /public_html/core/src/Revolution/modX.php(1495): MODX\Revolution\modRequest->handleRequest() #9 /public_html/index.php(63): MODX\Revolution\modX->handleRequest() #10 {main} 在第 28 行的 /public_html/core/cache/includes/elements/modx/revolution/modsnippet/17.include.cache.php 中抛出MODX\Revolution\modX->handleRequest() #10 {main} 在第 28 行的 /public_html/core/cache/includes/elements/modx/revolution/modsnippet/17.include.cache.php 中抛出MODX\Revolution\modX->handleRequest() #10 {main} 在第 28 行的 /public_html/core/cache/includes/elements/modx/revolution/modsnippet/17.include.cache.php 中抛出