(我不知道最好的措辞方式,但在这里!我有一个PHP站点,它根据标识符输入(如.php?id=500)从表中获取某些数据,并从每个表中查找每个相应的字段并将它们放入表或列表中。
我会使用的最佳简单 CMS 是什么?我将如何处理这个问题?有没有一个简单的插件,比如Joomla或Wordpress之类的东西,我可以指向特定的表格,告诉它标识符列,并告诉它列出匹配的每一行?包括其他表?
即。它从地址表中提取一些内容并列出他们的所有地址,从信息中提取一些内容并列出他们的性别年龄等。
因此,通过这种方式,它可以创建动态页面,我可以更轻松地管理这些页面,并具有搜索和索引。试图编写所有这些代码,它远远领先于我。我想有一个CMS可以为我做这一切。
我希望你们理解我的问题,我尝试搜索了很多措辞。
你做出了正确的决定。 迁移到内容管理系统。我已经成功地将数据(类别,文章和图像)迁移到Joomla安装中,步骤如下:
- 从您的内容管理系统中选择相关数据
-
如果图片与CMS中的文章分开存储,请至少在前面加上一张
到文本并附加其余部分;
- J2.5+ 支持文章图像和拇指,但模板仍然没有实现它
- 除非您需要在文章级别进行细粒度访问,否则请全部指向文章到单个资产 ID
- 创建示例文章并使用要填空的额外字段
- 如果可能,使用适当的 IntroText 和 FullText 分隔;确保进入每个 html 是独立的并验证
- 验证数据是否为 UTF-8(否则进行转换),然后运行 SQL 导入
- 从文章管理器中选择重建图标以重建资产和 ltr-rtl 字段
要执行 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;
}
}
有很多CMS解决方案可以为您做到这一点。老实说,如果你已经有一个网站启动并运行,而你只需要一个CMS,Joomla或WordPress有点矫枉过正。看看PyroCMS,它完全符合你的描述。它非常容易设置和运行,并且有很好的文档。
如果你喜欢Python并且对混合解决方案感兴趣,我已经成功地将PHP框架用于主站点,Django(在Python中)用于CMS。
这真的不会那么复杂。事实上,它类似于我的一个内容管理系统的工作方式:我为每个"模块"和属性都有一个类,用于指定要从中选择记录的数据库表、要在概述页面上显示的列(表标题)以及要在表单视图中显示的列(输入)。
试图将一个已经建立的网站硬塞进像WordPress或Joomla这样的CMS!想要为你做所有事情(包括前端网站)开箱即用,这将是一个痛苦的屁股。即使您确实将CMS硬塞到您的网站上并使其正常工作,它也会变得臃肿。
另一个想法可能是使用Cakephp http://cakephp.org/。Cake 可以读取您的数据库方案并生成启动和运行所需的文件。(如果您有命令行访问权限)。它使用 MVC 模式,设置速度非常快。我个人在您描述的许多项目上使用蛋糕。
Wordpress可能很难在不手动操作的情况下将所有帖子放入。但是,如果您不想编写太多代码,并且愿意手动移动所有内容wordpress或其他开箱即用的CMS系统可能适合您。
好问题。既然Joomla得到了回答,我将回答WordPress。我建议创建一个php文件,将所有表数据导出为xml(RSS或WordPress)。然后,您可以使用WordPress导入功能简单地将您的信息导入WordPress。
通过这种方式,您可以保留两个表,并且可以将信息完全导入WordPress。
如果您有兴趣,如果您给我表格的格式,我可能会一起编写一些代码。
最后,您应该在WordPress Stack Exchange(wordpress.stackexchange.com)上搜索并重新发布您的答案。
您有以下几种选择:
- 将您的PHP模板转换为WordPress兼容主题。
- 使用和现有主题并安装TablePress插件来管理您的表格。
另请参阅 http://thethemefoundry.com/blog/html-wordpress/另请参阅 http://wordpress.org/plugins/tablepress/
有四个问号:
问。我会使用的最佳简单 CMS 是什么?
A. Wordpress。
我将如何处理这个问题?
A. 学习 PHP。
问。有没有一个简单的插件,比如Joomla或Wordpress之类的东西,我可以指向特定的表格,告诉它标识符列,并告诉它列出匹配的每一行?
答:可能。这在 PHP 中是一个简单的任务。
问:包括其他表格?
A. 同上。
以下是您要完成的操作的一些可能的快捷方式:
如果您当前的站点正在生成RSS聚合链接,那么WP-RSS-Multi-Importer看起来很有希望。
如果您当前的站点没有RSS,但您可以访问数据库(通过托管控制面板/phpmyadmin,或通过mysqldump等服务器命令行实用程序),那么您可以将数据库导出为CSV或XML,并尝试使用WP-All-Import等插件将其导入Wordpress。
这将花费更多时间,因为您需要将数据映射到相应的wordpress字段。
如果您既没有RSS也没有访问数据库的权限,那么您将需要"抓取"您的网站。 通常这意味着编码,但有几个 wordpress 插件可能适合您。 这里可能会出错很多,所以如果最终产品不是您想要的,请不要感到惊讶。
cakephp 更底层的方法是使用 ActiveRecord,这对处理数据库有很大帮助。
例如,使用 PHP ActiveRecord
你可以使用 yii 或 codeigniter 这样的框架。他们可以让你的生活变得非常轻松。您可以使用这些框架非常轻松快速地制作 CMS。
你可以传递像id这样的参数
- 使用WordPress或Joomla或drupal来设置新的CMS。
- 创建一个 PHP 以将所有数据库项导入该 CMS。