如何在OpenCart中创建一个简单的模块?例如获取WordPress最新文章并在OpenCart中显示它?

24

我是新来的论坛用户,也是 OpenCart 的新手。

我需要关于在 OpenCart 中创建模块的帮助。我的情况是从我 WordPress 安装的每个分类中获取最新的5篇文章,并在我 OpenCart 商店的主页中显示它们。

我已经在同一数据库和同一主机上安装了 OpenCart 和 WordPress。

有人能给我提供建议吗?


3
http://wordpress.stackexchange.com/ 是针对WordPress问题的网站。 - Eugen
6
@Eugen,这是真的,但在我看来这更像是一个Opencart问题。开发者,欢迎来到SO - 你需要在问题上付出比那更多的努力才能得到任何帮助。在你的问题中添加你尝试过的内容、代码等。"请替我完成所有工作"类型的问题只会在这里被踩或关闭。 - McNab
2个回答

32
这取决于你的技能水平,如果很容易的话。我预计会有人对你的问题点个踩,但我将简要介绍一下步骤,因为这不是SO的做法。第一件事是编辑我们的THEMES文件。由于OpenCart是MVC,我们首先编辑我们的主题,然后是PHP... 或者先是PHP,再是主题文件.. 这是相反的顺序。

指南

1 - 打开/catalog/view/theme/default/template/common/home.tpl

在此行之后:

<h1 style="display: none;"><?php echo $heading_title; ?></h1>

添加这个:

<?php MyWordPressFunction() ?>

或者这个:
<div>
    <h2>Latest posts from our blog</h2>
    <?php MyWordPressFunction() ?>
</div>

2 - 打开我们的PHP代码,它现在是“home.tpl”页面的代码,这是“/catalog/controller/common/home.php”

在主类和结束的?> PHP标记之后,在代码底部添加以下内容:

// WORDPRESS LATEST POSTS
//#customPHP
// The tag above is so that when you upgrade OpenCart
// Before doing so you need to make sure of all the core
// core changes you made - a unique global comment tag
// is easy to find.

function MyWordPressFunction(){

    // DB
        // GET THE POSTS
        // LIMIT BY 5
        // ORDER BY LATEST POSTS
    $sql=mysql_query("SELECT * FROM `wordpress_db`.`wp_posts` ORDER BY `wp_posts`.`post_date` DESC LIMIT 5");
    while($row = mysql_fetch_array($sql)){

        // VARS (easy to play with in the echo)

        $id=$row["ID"];
        $author=$row["post_author"];
        $date=$row["post_date"];
        $post=$row["post_content"];
        $title=$row["post_title"];

        echo '

            <div id="postID_'.$id.'>

                <h3>'.$title.'</h3>

                <p>'.$post.'</p>

                <p>Posted by '.$author.' on '.$date.'</p>

            </div>

        ';

    }

    // END DB

}

这应该会给你一些基本的PHP函数调用的概念。这是一个让你开始的方向。你可以进一步扩展链接类别、作者链接等。

顺便说一下,所有这些变量都可以像在WP_Posts表中看到的那样使用:

/*

All these can be used

ID
post_author
post_date
post_date_gmt
post_content 
post_title
post_excerpt
post_status
comment_status
ping_status
post_password
post_name
to_ping
pinged
post_modified
post_modified_gmt
post_content_filtered
post_parent
guid
menu_order
post_type
post_mime_type
comment_count

*/

提示

一般来说,浏览整个OpenCart过滤器在SO上-有许多关于编写模块、修改其工作方式和创建自定义页面的文章-这些将在长时间调整中真正帮助。以上代码没有样式或其他调整,这只是一个指南。

进一步阅读和更好的模块类型文章

如何在OpenCart管理中添加新模块?

如何在OpenCart管理中添加新模块?

如何在OpenCart中创建自定义管理页面?

如何在OpenCart中创建自定义管理页面?

如何让OpenCart上的外部页面优惠券/代金券表格工作?

如何让OpenCart上的外部页面优惠券/代金券表格工作?

在不修改产品控制器的情况下,如何在OpenCart产品页面上执行自定义代码?

在不修改产品控制器的情况下,如何在OpenCart产品页面上执行自定义代码?

如何在OpenCart上的任何页面上显示小计?

如何在OpenCart上的任何页面上显示小计?


1
@开发者 为什么这个答案还没有被接受?请接受答案,这样问题就可以得到解决。谢谢! - shadyyx
@TheBlackBenzKid 在这种情况下,你实际上如何连接到数据库?因为你正在向 OC 添加代码,但需要在 WP 中查询 DB。我正在尝试完成相同的事情,而博客只是子域。blog.url.com(WP)和url.com(OC) - Travis
@Travis 这样做。把 MySQL 连接变量放在循环之上 - 这不是一种干净的方式,但是是一种快速解决方案。 - TheBlackBenzKid

1

感谢TheBlankBenzKid提供非常有帮助的答案,但我认为还有一件小事值得在这里补充。如果您确实希望在您的opencart商店上显示您的wordpress博客,请确保将您的wordpress数据库赋予正确的用户权限以供opencart数据库用户使用,在我的情况下通过cpanel完成。


感谢您的回答。并非每个人都有cPanel,我认为这样做是不明智的。这取决于数据库和博客设置的情况。例如,我们的博客托管在单独的服务器上。 - TheBlackBenzKid
我认为你实际上没有选择的余地?你正在访问WP数据库,它的登录凭据与OC数据库不同。对我来说,答案就像我所说的那样,因为我没有它而只是收到了“访问被拒绝”的错误消息。 - Gavin Simpson
我可能被纠正了。进行了另一个安装,这次没有访问错误,但是最新的安装是在我的Apache本地主机上。 - Gavin Simpson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接