0

我不确定这是否可能,但我安装了 Joomla 1.5 并且我正在更新到 3.1.5 但问题是当前站点使用了一个插件,该插件使用每篇文章的关键参考来生成元页面标题我需要从每篇文章(220+)中获取这些信息并将其放在菜单项的参数下,所以我目前有以下内容;

文章

TABLE joscontent COLUMN id VALUE 39

TABLE joscontent COLUMN attribs VALUE:

show_title=
link_titles=
show_intro=
show_section=
link_section=
show_category=
link_category=
show_vote=
show_author=
show_create_date=
show_modify_date=
show_pdf_icon=
show_print_icon=
show_email_icon=
language=
keyref=Page Title Value is Currently Here
readmore=

菜单项

table      column   value
jos_menu   link     index.php?option=com_content&view=article&id=39
jos_menu   params   

show_noauth=
show_title=
link_titles=
show_intro=
show_section=
link_section=
show_category=
link_category=
show_author=
show_create_date=
show_modify_date=
show_item_navigation=
show_readmore=
show_vote=
show_icons=
show_pdf_icon=
show_print_icon=
show_email_icon=
show_hits=
feed_summary=
page_title=
show_page_title=1
pageclass_sfx=
menu_image=-1
secure=0

那么有没有一种方法可以提交一个 SQL 查询,该查询将从 attribs 列中获取 keyref 值,并在文章 ID 与菜单链接中使用的 ID 匹配的地方插入 params 列的 page_title 值,这将在地点。

希望这是有道理的!

编辑此解决方案有效

update jos_menu jm
set params = (select concat('show_noauth=
show_title=
link_titles=
show_intro=
show_section=
link_section=
show_category=
link_category=
show_author=
show_create_date=
show_modify_date=
show_item_navigation=
show_readmore=
show_vote=
show_icons=
show_pdf_icon=
show_print_icon=
show_email_icon=
show_hits=
feed_summary=
page_title=',
replace(substr(attribs, locate('keyref=', attribs)+7), 'readmore=', ''),
' 
show_page_title=1
pageclass_sfx=
menu_image=-1
secure=0 ')
from jos_content jc
where jm.link = concat('index.php?option=com_content&view=article&id=', jc.id))
where Instr(jm.link, 'index.php?option=com_content&view=article&id=') 
4

1 回答 1

0

您可能会发现一条 SQL 语句可以通过使用一些棘手的正则表达式来完成此操作。但我真的建议你用 PHP 编写一个脚本,它遍历所有记录并完成这项工作。这将为您提供更多控制权并能够进行一些错误检查。

于 2013-08-21T16:37:05.970 回答