我有一个自定义扩展,在记录的详细信息页面上,我想对个人资料网站进行 seo 拉皮条。我也在使用 tx_metaseo。
我已经像这样通过 show 操作更改了“title”标签:
/**
* action show
*
* @param Application $record
* @return void
*/
public function showAction(Application $record=null) {
// For the search
$GLOBALS['TSFE']->indexedDocTitle = $record->getName();
}
}
但是因为我安装了 tx_metaseo ... 我也得到了 generall 元标签。因此,在我的扩展的详细信息页面上,我想覆盖它们:
<meta name="DCTERMS.title" content="">
<meta name="description" content="">
<meta name="DCTERMS.description" content="">
<meta name="keywords" content="">
<meta name="DCTERMS.subject" content="">
<meta property="og:title" content="">
<meta property="og:type" content="">
<meta property="og:email" content="">
...另外我想添加/设置:
<meta property="og:description" content="">
...我想考虑一下语言(默认/德语/英语)...所以我想添加(德语):
<meta http-equiv="Content-Language" content="de" />
<meta name="Language" CONTENT="Deutsch"/>
我该怎么做?
我假设我需要使用 Hooks/Signals? https://docs.typo3.org/typo3cms/extensions/metaseo/DeveloperManual/Index.html#signals但是如何呢?
这是一个类似的讨论:https://github.com/webdevops/TYPO3-metaseo/issues/477
编辑:我尝试这样做是为了防止由 tx_metaseo 创建的元标记
#[globalVar = TSFE:id = 71, GP:tx_metaseo|var = 0]
[globalVar = TSFE:id = 71, GP:tx_metaseo]
#page.metaseo.meta.og:title >
#page.metaseo.meta.og:description >
page.meta.og:title =
page.meta.og:description =
[global]
... 或:
[globalVar = TSFE:id = 71]
plugins.tx_metaseo >
[global]
最佳答案
由于您无法覆盖现有元值,因此您需要防止创建默认元标记。
一种常用的方法是打字错误条件。
您通常可以通过获取要显示的记录的 uid 的 URL 参数来识别显示记录详细 View 的页面。
关于新闻记录,您可以在网站扩展模板中这样做:
[globalVar = GP:tx_news_pi1|news > 0]
// set news-specific meta tags
[else]
// set default meta tags (based just on the pages record)
[global]
或另一种方式:
// somewhere (site_extension or other specific template):
// set default meta tags (based just on the pages record)
// in the static template of your extension:
[globalVar = GP:tx_news_pi1|news > 0]
// clear default meta tags (if that is possible)
page.meta.og:title >
page.meta.og:site_name >
page.meta.og:description >
page.meta.og:image >
// or deactivate the extension for generating the default meta tags
// maybe something like
plugins.tx_metatagsgenarator >
// finaly: set news-specific meta tags
:
[global]
第一个示例可以通过添加更多条件来针对多个记录进行增强(假设这些记录的详细 View 位于不同的页面上):
[globalVar = GP:tx_news_pi1|news > 0]
// set news-specific meta tags
[globalVar = GP:tx_myext|myrec_uid > 0]
// set myext-specific meta tags
[else]
// set default meta tags (based just on the pages record)
[global]
使用生成元标记的扩展程序而没有选项来通过打字控制它会使整个过程变得非常复杂。
Outlook:使用 TYPO3 9 可以更轻松地处理元标记。
ext:metaseo 最简单的操作看起来像 stdWraps手册中提到。
或者使用 Hook 来操纵扩展生成的所有值的整个数组。
在扩展手册中,没有真正的提示如何增强附加记录的扩展功能。因为您需要做的不仅仅是详细 View 的元标记:您需要增强生成的站点地图。也许扩展作者需要一些冲动来使用有关如何为自己的记录添加元信息的信息来增强手册。
关于seo - TYPO3 - 在自定义扩展的详细 View 上覆盖和添加元标记(来自 tx_metaseo),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51196631/
我有一个包含模块的模型。我想在模块中覆盖模型的访问器方法。例如:classBlah这显然行不通。有什么想法可以实现吗? 最佳答案 您的代码看起来是正确的。我们正在毫无困难地使用这个确切的模式。如果我没记错的话,Rails使用#method_missing作为属性setter,因此您的模块将优先,阻止ActiveRecord的setter。如果您正在使用ActiveSupport::Concern(参见thisblogpost),那么您的实例方法需要进入一个特殊的模块:classBlah
我想向我的Controller传递一个参数,它是一个简单的复选框,但我不知道如何在模型的form_for中引入它,这是我的观点:{:id=>'go_finance'}do|f|%>Transferirde:para:Entrada:"input",:placeholder=>"Quantofoiganho?"%>Saída:"output",:placeholder=>"Quantofoigasto?"%>Nota:我想做一个额外的复选框,但我该怎么做,模型中没有一个对象,而是一个要检查的对象,以便在Controller中创建一个ifelse,如果没有检查,请帮助我,非常感谢,谢谢
我在pry中定义了一个函数:to_s,但我无法调用它。这个方法去哪里了,怎么调用?pry(main)>defto_spry(main)*'hello'pry(main)*endpry(main)>to_s=>"main"我的ruby版本是2.1.2看了一些答案和搜索后,我认为我得到了正确的答案:这个方法用在什么地方?在irb或pry中定义方法时,会转到Object.instance_methods[1]pry(main)>defto_s[1]pry(main)*'hello'[1]pry(main)*end=>:to_s[2]pry(main)>defhello[2]pry(main)
在Ruby类中,我重写了三个方法,并且在每个方法中,我基本上做同样的事情:classExampleClassdefconfirmation_required?is_allowed&&superenddefpostpone_email_change?is_allowed&&superenddefreconfirmation_required?is_allowed&&superendend有更简洁的语法吗?如何缩短代码? 最佳答案 如何使用别名?classExampleClassdefconfirmation_required?is_a
我们的git存储库中目前有一个Gemfile。但是,有一个gem我只在我的环境中本地使用(我的团队不使用它)。为了使用它,我必须将它添加到我们的Gemfile中,但每次我checkout到我们的master/dev主分支时,由于与跟踪的gemfile冲突,我必须删除它。我想要的是类似Gemfile.local的东西,它将继承从Gemfile导入的gems,但也允许在那里导入新的gems以供使用只有我的机器。此文件将在.gitignore中被忽略。这可能吗? 最佳答案 设置BUNDLE_GEMFILE环境变量:BUNDLE_GEMFI
我正在使用RubyonRails3.0.9,我想生成一个传递一些自定义参数的link_toURL。也就是说,有一个articles_path(www.my_web_site_name.com/articles)我想生成如下内容:link_to'Samplelinktitle',...#HereIshouldimplementthecode#=>'http://www.my_web_site_name.com/articles?param1=value1¶m2=value2&...我如何编写link_to语句“alàRubyonRailsWay”以实现该目的?如果我想通过传递一些
有这些railscast。http://railscasts.com/episodes/218-making-generators-in-rails-3有了这个,你就会知道如何创建样式表和脚手架生成器。http://railscasts.com/episodes/216-generators-in-rails-3通过这个,您可以了解如何添加一些文件来修改脚手架View。我想把两者结合起来。我想创建一个生成器,它也可以创建脚手架View。有点像RyanBates漂亮的生成器或web_app_themegem(https://github.com/pilu/web-app-theme)。我
是否有简单的方法来更改默认ISO格式(yyyy-mm-dd)的ActiveAdmin日期过滤器显示格式? 最佳答案 您可以像这样为日期选择器提供额外的选项,而不是覆盖js:=f.input:my_date,as::datepicker,datepicker_options:{dateFormat:"mm/dd/yy"} 关于ruby-on-rails-事件管理员日期过滤器日期格式自定义,我们在StackOverflow上找到一个类似的问题: https://s
我们目前正在为ROR3.2开发自定义cms引擎。在这个过程中,我们希望成为我们的rails应用程序中的一等公民的几个类类型起源,这意味着它们应该驻留在应用程序的app文件夹下,它是插件。目前我们有以下类型:数据源数据类型查看我在app文件夹下创建了多个目录来保存这些:应用/数据源应用/数据类型应用/View更多类型将随之而来,我有点担心应用程序文件夹被这么多目录污染。因此,我想将它们移动到一个子目录/模块中,该子目录/模块包含cms定义的所有类型。所有类都应位于MyCms命名空间内,目录布局应如下所示:应用程序/my_cms/data_source应用程序/my_cms/data_ty
如何使此根路径转到:“/dashboard”而不仅仅是http://example.com?root:to=>'dashboard#index',:constraints=>lambda{|req|!req.session[:user_id].blank?} 最佳答案 您可以通过以下方式实现:root:to=>redirect('/dashboard')match'/dashboard',:to=>"dashboard#index",:constraints=>lambda{|req|!req.session[:user_id].b