我不确定这是否可行,但我有一个Joomla 1.5安装,我正在更新到3.1.5但问题是当前网站使用了一个插件,它使用每篇文章的Key Reference来生成元页面标题,我需要从每篇文章(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值并插入params列的page_title值,其中文章ID与菜单链接中使用的id匹配,这将执行每个操作网站上的文章。
希望这是有道理的!
编辑此解决方案
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=')
答案 0 :(得分:0)
您可能会找到一个可以通过使用一些棘手的正则表达式来执行此操作的SQL语句。但我真的建议你用PHP编写一个脚本,循环遍历所有记录并完成这项工作。这将为您提供更多控制和进行错误检查的能力。