我使用https://github.com/artesaos/seotools包进行搜索引擎优化。 我试图覆盖位于https://github.com/artesaos/seotools/blob/master/src/SEOTools/SEOMeta.php的getCanonical函数,并将其输出为小写。你能指导我怎么做?
答案 0 :(得分:3)
您可以尝试以下操作:
第1步:
创建一个扩展SEOMeta类的子类并覆盖getCanonical
函数。
Class XyzSEOMeta extends SEOMeta {
public function getCanonical () {
// Write your logic here
}
}
第2步:
为重写的类创建服务提供者。 bind
函数的第一个参数必须与SEOMeta
Facade(here)的外观访问者相同。在 seotools 包的服务提供商之后,在config/app.php
中注册此外观。 :
Class XyzSEOMetaServiceProvider extends ServiceProvider {
public function register(){
$this->app->bind('seotools.metatags', function(){
return new XyzSEOMeta($this->app['config']);
})
}
}
你们都准备好了。希望这会有所帮助。
修改强>
上面提到的方法只会覆盖单个类。如果要更改多个类的逻辑。最好的方法是分叉项目。更改代码并将其推送到您的分支。使用forked项目作为您的作曲家依赖项。按照链接了解如何使用私有存储库作为编写器依赖:check here
答案 1 :(得分:2)
就像我们在派生类中重写任何父类函数一样非常简单。
创建自己的类并扩展包类SEOMeta并重新声明要覆盖的函数并将逻辑放入其中。不要忘记在自定义类的上方使用包类SEOMeta的命名空间。
现在在控制器旁边使用自定义类而不是包类。
e.g 使用Path \ to \ SEOMeta;
class urclassname扩展了SEOMeta {
public function overridemethodname(){
//把你的逻辑放在这里。 }
}