将MYSQL连接的动态PHP站点转换为CMS的简单方法?

时间:2013-01-23 15:52:19

标签: php mysql wordpress joomla content-management-system

(我不知道说出这个的最好方法但是这里去了!) 我有一个PHP的站点,它根据标识符输入(例如.php?id = 500)从表中获取某些数据,并从每个表中查找每个相应的字段并将它们放入表或列表中。

我会使用的最简单的CMS是什么?我该如何处理?是否有像Joomla或Wordpress这样的简单插件,或者我可以指向特定的表,告诉它标识符列,并告诉它列出匹配的每一行?包括其他表格?

IE。它从地址表中提取内容并列出所有地址,从信息中提取内容并列出其性别年龄等。

所以这样,它创建了我可以更轻松地管理的动态页面,并具有搜索和索引。试图编写所有这些,并且它已经超越了我。我想有一个CMS可以为我做这一切。

我希望你们理解我的问题,我试着搜索很多这方面的措辞。

11 个答案:

答案 0 :(得分:1)

你做出了正确的决定。转到CMS。 我已成功将数据(类别,文章和图像)迁移到Joomla安装中,步骤如下:

  1. 从您的CMS中选择 相关数据
  2. 如果图片与CMS中的文章分开存储,则至少添加一个

    到文本中并附加其余内容;

  3. J2.5 +支持文章图片和拇指,但模板仍然没有实现它
  4. 除非您需要在文章级别进行细粒度访问,否则请指出所有内容 文章到单个资产ID
  5. 创建示例文章并使用 额外的字段填补空白
  6. 如果可能,请使用IntroText和FullText的正确分隔;确保进入每个内容的html是自包含的并验证
  7. 验证您的数据是否为UTF-8(否则转换它)然后运行SQL import
  8. 从文章管理器中选择重建图标以重建资产和ltr-rtl字段
  9. 要执行SQL导入,您还需要清除content_frontpage表。

    这是一个从另一个cms接收一行并将其放入Joomla的函数;一些意见是意大利语,但你应该感受到如何做到这一点。 mdc2j是我写的专用函数,可以根据需要正确地转义数据并更改格式/类别ID等。

    function importaArticolo($row) {
        global $link;
        echo "<h3>Importa Articolo ".$row->Id . " (". $row->titolo . ")</h3>";
    
        /*
            " ('$row->id', '0', 'test', 'test_alias', '', 'tutto il testo riga per riga', ".
            "  '', '0', '0', '0', '111', '2001-01-25 16:30:15', '4', 'la firma', '2001-01-25 16:30:15',  ".
            " '0', '0', '0000-00-00 00:00:00', '2001-01-25 16:30:30', '0000-00-00 00:00:00', 'list of images?', 'list of urls?',  ".
            " '".'{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":""}'."', ".
            "  '1', '0', '0', 'kewords', 'key-description',  ".
            " '0', '0',  ".
            " '".'{"robots":"","author":"","rights":"","xreference":""}'."', '0', '*', '');";
            */
        try {
            $idcategory = mdc2jCategory($row->idCanale);
            if ($row->isDossier * 1 == 1) {
                if (1*$idcategory==10) {
                    $idcategory= 28;
                }
            }
            $default_user=42;
            $SQL=sprintf(
                "INSERT INTO `".$GLOBALS['db_database_new']."`.`eco_content` (`id`, `asset_id`, `title`, `alias`, `title_alias`, `introtext`, ".
                " `fulltext`, `state`, `sectionid`, `mask`, `catid`, `created`, `created_by`, `created_by_alias`, `modified`,  ".
                " `modified_by`, `checked_out`, `checked_out_time`, `publish_up`, `publish_down`, `images`, `urls`, `attribs`,  ".
                " `version`, `parentid`, `ordering`, `metakey`, `metadesc`, `access`, `hits`, `metadata`, `featured`, `language`,  ".
                " `xreference`)  ".
                " VALUES  ".
                " ('%d', '0', '%s', '%s', '', '%s', ".
                "  '%s', '%d', '0', '0', '%d', '%s', '%d', '%s', '%s',  ".
                " '0', '0', '0000-00-00 00:00:00', '%s', '0000-00-00 00:00:00', '', '',  ".
                " '".'{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":""}'."', ".
                "  '1', '0', '0', '%s', '%s',  ".
                " '%d', '%d',  ".
                " '".'{"robots":"","author":"","rights":"","xreference":""}'."', '%d', '*', '');",
            $row->Id,
            mysql_real_escape_string($row->titolo),
            makeAlias($row->titolo), // alias
            mdc2jSommario($row), // this creates the introtext
    
            mdc2jText($row), // this returns the text
            $row->idStato=="2"?0:1, // idStato="suspended"
            $idcategory, // correct category id
            mdc2jDate($row->dataCreazione),
            $default_user,
            mdc2jFirma($row->firma),
            mdc2jDate($row->dataCreazione), //2001-01-25 16:30:15
            mdc2jDate($row->dataPubblica), //2001-01-25 16:30:30
    
            mdc2jMetaKeywords($row), // adds "dossier" if appropriate
            mdc2jMetaDesc($row), // if not assigned, create it automatically
            $row->idStato=="2"?3:1,
            $row->viewCounter,
            0 //featured: (($row->Id % 13) == 0 ? 1 : 0 )
            );
    
    
            $res = mysql_query($SQL);
    
            if ($res) {
                $lastid = mysql_insert_id();
                //echo "Article $lastid ($row->Id) Inserted into DB<br>";
                        // this will import images in a separate tool, an ignite gallery, so it's not really meaningful for you:
                importaImmagini($row->Id, $row->canale, $row->cid);
    
    
                return 1;
    
            }
            else {
                echo "<span class='err'>WARNING: article not inserted in db</span>"."<br>".mysql_errno($link) . ": " . mysql_error($link);
                echo "<textarea cols='80' rows='3'>".$SQL."</textarea><br>";
            }
    
            return 0;
    
        }
        catch (Exception $e)
        {
            echo "<span class='err'>Exception! ".$e->getMessage()."</span><br>";
            return 0;
        }
    }
    

答案 1 :(得分:0)

有很多CMS解决方案可以为您完成此任务。说实话,如果你已经有一个网站启动并运行,你只想要一个CMS,Joomla或WordPress有点矫枉过正。看看PyroCMS,它完全符合您的描述。它很容易设置和运行,并且具有良好的文档。

如果您正在使用Python并对混合解决方案感兴趣,那么我已经成功地将主要网站的PHP框架和CMS中的Django(在Python中)使用。

答案 2 :(得分:0)

写自己真的不会那么复杂。事实上,它与我的一个内容管理系统的工作方式类似:我有一个用于每个“模块”的类和指定数据库表以从中选择记录的属性,在概述页面上显示的列(表标题),以及要在表单视图中显示的列(输入)。

尝试将已经建成的网站用于像WordPress或Joomla这样的CMS!想要为你做的一切(包括前端网站)开箱即用将是一个痛苦的屁股。即使你在你的网站上使用CMS制作一个CMS并让它工作,它也会变得臃肿。

答案 3 :(得分:0)

另一个想法可能是使用Cakephp http://cakephp.org/。 Cake可以读取您的数据库方案并生成启动和运行所需的文件。 (如果您有命令行访问权限)。它使用MVC模式,并且非常快速地设置。我亲自在你描述的项目数量上使用了蛋糕。

如果不手动操作,Wordpress可能会有点难以获取所有帖子。但是如果你不想编写太多代码并且想要手动移动所有wordpress或其他一些开箱即用的CMS系统可能适合你。

答案 4 :(得分:0)

好问题。自Joomla回答后,我将回答WordPress。我建议创建一个php文件,将所有表数据导出到xml(RSSWordPress)。然后,您只需使用WordPress import函数将信息导入WordPress。

通过这种方式,您可以保留两个表,并且可以将信息完全导入WordPress。

如果您感兴趣我可以将一些代码一起烹饪,如果您给我的表格格式。

最后,您应该在WordPress Stack Exchange(wordpress.stackexchange.com)上搜索并重新发布您的答案。

答案 5 :(得分:0)

您有几个选择:

  1. 将您的PHP模板转换为WordPress兼容主题。
  2. 使用现有主题并安装TablePress插件来管理您的表格。
  3. 另见http://thethemefoundry.com/blog/html-wordpress/ 另请参阅http://wordpress.org/plugins/tablepress/

答案 6 :(得分:0)

有四个问号:

问。我会使用什么最好的简易CMS?

甲。 WordPress的。

我该如何处理?

甲。学习PHP。

问。是否有一个简单的插件,如Joomla或Wordpress,或者我可以指向特定的表,告诉它标识符列,并告诉它列出匹配的每一行?

甲。大概。这是PHP中的一项简单任务。

问。包括其他表格?

甲。同上。

答案 7 :(得分:0)

以下是您尝试完成的一些可能的快捷方式:

如果您当前的网站正在生成RSS聚合链接,那么WP-RSS-Multi-Importer看起来很有希望。

如果您当前的网站没有RSS,但您可以访问数据库(通过主机控制面板/ phpmyadmin,或通过服务器命令行实用程序,如mysqldump),那么您可以将数据库导出为CSV或XML,并尝试使用WP-All-Import等插件将其导入Wordpress。

这需要更多时间,因为您需要将数据映射到相应的wordpress字段。

如果您既没有RSS也没有访问数据库,那么您将需要&#34;刮擦&#34;你的网站。通常这意味着编码,但有几个wordpress插件可能适合你。这里可能会出现很多问题,所以如果最终产品不是您想要的,请不要感到惊讶。

答案 8 :(得分:0)

比使用cakephp更低级别的方法是使用ActiveRecord,这对处理数据库有很大帮助。

e.g。使用PHP ActiveRecord

答案 9 :(得分:-1)

您可以使用yii或codeigniter之类的框架。他们可以让你的生活变得轻松。您可以使用这些框架轻松快速地创建CMS。

您可以传递id

之类的参数

答案 10 :(得分:-1)

  1. 使用WordPress或Joomla或drupal设置新的CMS。
  2. 制作PHP以将所有数据库项目导入该CMS。