2017-04-15 42 views

答えて

3

次試すことができます。

ステップ1:

がSEOMetaクラスを拡張子クラスを作成し、getCanonical関数をオーバーライドします。

Class XyzSEOMeta extends SEOMeta { 
    public function getCanonical() { 
     // Write your logic here 
    } 
} 

ステップ2:

オーバーライドされたクラスのサービスプロバイダを作成します。 bindファンクションの最初のパラメータは、ファサードアクセッサのSEOMetaファサード(check here)と同じでなければなりません。 seotoolsパッケージのサービスプロバイダの後にこのファサードをconfig/app.phpに登録してください。 :

Class XyzSEOMetaServiceProvider extends ServiceProvider { 
    public function register(){ 
     $this->app->bind('seotools.metatags', function(){ 
      return new XyzSEOMeta($this->app['config']); 
     }) 
    } 
} 

あなたはすべてのセットです。これが役立つことを願っています。

EDIT:

記載方法上記は1つだけクラスをオーバーライドします。複数のクラスのロジックを変更したい場合。最も良い方法は、プロジェクトをフォークすることです。コードを変更してフォークにプッシュします。フォークされたプロジェクトを作者の依存関係として使用します。リンクをたどって、コンポーザーの依存関係としてプライベートリポジトリを使用する方法を知ってください:https://getcomposer.org/doc/05-repositories.md#using-private-repositories

+0

ありがとうございます。あなたはかなり良いアプローチを説明している。 私はこのアプローチに従っていますが、私の目的を達成できませんでした。少し複雑です。 – Mehdi

+0

** getCanonical **メソッドは、** generate ** function line 128で同じクラスで呼び出されました。それでもまだ運がない。 もっと深く見てください** generate **関数はクラスライン123の下に呼び出されました。 https://github.com/artesaos/seotools/blob/master/src/SEOTools/SEOToolsPHP は、私は次のように私の見解では、パッケージを使用しています – Mehdi

+0

...、さらに私は、全体のパッケージを上書きするに終わるかもしれないつもりな方法を説明してくださいでした: '' {!! SEO :: ''} !!)( を生成するが、私は次のように設定し、configの下にseotool.phpています '' '標準的な' => NULL、//のURL ::電流を使用するためのnullを設定します() '' – Mehdi

2

派生クラスの親クラス関数をオーバーライドするのと同じように非常に簡単です。

独自のクラスを作成し、パッケージクラスSEOMetaを拡張し、オーバーライドして論理を内部に入れたい関数を宣言し直してください。カスタムクラスの上にパッケージクラスSEOMetaの名前空間を使用することを忘れないでください。

ここでは、コントローラ側でパッケージクラスの代わりにカスタムクラスを使用します。

たとえば を使用します。Path \ to \ SEOMeta;

クラスurclassnameはSEOMetaは{

パブリック関数overridemethodname(){

//ここでウルロジックを入れて拡張します。 }

}

+0

Dude。これは普通のクラスではありません。それはlaravelのFacadeです。 –

関連する問題