【问题标题】:How to use hook_node API in Drupal 6 to fetch and display contents from Database如何在 Drupal 6 中使用 hook_node API 从数据库中获取和显示内容
【发布时间】:2012-01-11 11:08:36
【问题描述】:
我已将 D6 网站的翻译内容保存在我的自定义数据库表中(我的表有标题、正文等列)。我的网站是英文的,它有这些翻译的源内容。当在语言切换器等中选择法语时,我需要从数据库中提取并显示法语内容。我研究了 hook_node API 是实现这一目标的一种方法。希望您的意见相同。
这是我网站中一个页面的示例屏幕截图。
Sample Node 3 Of my site
这是我的自定义数据库表的屏幕截图:
Database table
如果您看到带有 sr-id '2' 的行,我有我对数据库中节点 3 的西班牙语翻译。
当用户通过 hook_node API 选择“Espanol”时,我想就如何在我的 UI 上获取和显示这一行提供一些指导,如 UI 屏幕截图所示。
【问题讨论】:
标签:
php
database
internationalization
drupal-6
hook
【解决方案1】:
我可以使用代码实现它
<?phpfunction freeway_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL)
{
$currLang = i18n_get_lang();
switch ($op)
{ case 'load':
$node_id = $node->nid;
$nodeSrcLang = $node->language;
if($nodeSrcLang == en)
{
$nodeSrc = 'en-us';
}
if($currLang == fr){
$frewayLang = 'fr-fr';
}
if($currLang == es){
$frewayLang = 'es-es';
}
$nodeId = $node->nid;
$result = db_query("SELECT node_title,node_body FROM {freeway}
WHERE node_id = '$nodeId'
AND src_lang ='$nodeSrc'
AND tar_lang='$frewayLang'");
while ($record = db_fetch_object($result))
{
$node->body = $record->node_body;
$node->title = $record->node_title;
}
break; } }?>