我尝试将开放图形中的og:图像正确添加到使用智能模板的网站。 我正确地插入了部分中的其他og:标签,但在图像标签中我必须使用名为$ image.file_name的变量。 不幸的是,该标签仅在名为link_summary.tpl的子tpl文件中可用,该文件在部分的主模板中调用。
这会导致Facebook共享调试程序出错:
您的页面在正文中有元标记而不是头部。这可能是 因为你的HTML格式不正确,而且它们在解析树中降低了。 请修复此问题以使标签可用。
我想问一下,有没有办法将一个变量从child.tpl传递给parent.tpl?当我试图从child中包含该变量时,它会插入整个子内容而不是那个变量。
main / parent.tpl文件og:meta标签看起来:
<!--OG types-->
<meta property="fb:app_id" content="1069177856507061" />
<meta property="og:type" content="website" />
<meta property="og:url" content="http://hotter.pl{$story_url}" />
<meta property="og:title" content="{$posttitle} | Hotter" />
<meta property="og:locale" content="pl_PL" />
{if $meta_description neq ""}
<meta property="og:description" content="{$meta_description|truncate:'300'}" />
{/if}
<!-- /OG types-->
来自link_summary(child).tpl的那个og:image标签看起来:
{checkActionsTpl location="tpl_kliqqi_story_end"}
<meta property="og:image" content="http://hotter.pl/modules/upload/attachments/thumbs/{$image.file_name|substr:0:-12}600x6000.jpg" />
<!--/link_summary.tpl -->
我想将og:image标记移动到父级,但需要传递{$ image.file_name}变量。
提前感谢您的提示。
答案 0 :(得分:1)
每个默认的新变量或更改的变量包含在本地范围内,并且在包含/父模板中不可见,但您可以自己确定范围。
可以为分配的所有变量更改此默认行为 使用
{include}
处的范围属性包含的模板 语句或使用scope属性的单个变量{assign}
声明。后者对返回值很有用 从包含的模板到包含模板。
以下是使用{assign}
如何完成此操作的简短示例,因为这应符合您的目的:
parent.tpl
{include file="child.tpl"}
{* display variable from child template *}
{$var}
child.tpl
{assign var="var" value="hello world" scope=parent}