JEDからのレビューの取得


7

私はNoNumberのウェブサイトで見た、彼はJoomla Extensions Directoryからのレビューを表示するタブを持っています。例えば、ここに

どういうわけかJEDのウェブサイトからレビューを引っ張ることが可能かどうか疑問に思っていました。調べてみましたが、JEDはAPIを提供していないようで、Joomlaライブラリフォルダーでも何も見つかりません。

ページからHTMLを解析してみましたが、これはやり過ぎであり、ページの読み込み時間が非常に長くなります。

これが可能かどうか誰かが知っていますか?ある種のRSSフィードの方が適切でしょうか?

回答:


9

文書化されていないJSON APIがあります。

拡張機能のIDが83であるとします。このURLは拡張機能とそのレビューを提供します。

http://extensions.joomla.org/index.php?option=com_jed&view=extension&layout=details&id=83&format=json

単純なjson出力ではなくjsonpが必要な場合は、format = jsonpを設定します。

拡張機能のIDを確認するには、拡張機能の実際のページにアクセスします(例:http : //extensions.joomla.org/extensions/extension/contacts-and-feedback/forms/fabrik)、[レビューを書く]ボタンのhrefを調べます-これは次のようになります。

http://extensions.joomla.org/write-review/review/add?extension_id=83

セグメントextension_id = FOOの拡張IDとしてFOOを使用します。

レート制限は将来実装される可能性があることに注意してください。API呼び出しの結果をキャッシュするのが最善です。また、そのJSON Webトークン(http://jwt.io/)は、APIにアクセスするために将来必要になる可能性があります。


ロブに感謝します。有望に見えるので、私もこれについて調べます
Lodder

私はこの方法を使用してしまいました。JSONをどのように反復したかを示す回答を以下に書きました。ありがとうございました;)
Lodder 2015

5

いい考えだ。

Feed43などのツールを使用して「カスタムフィード」を作成できると思います。無料のオンラインサービスで、あらゆるWebページをオンザフライでRSSフィードに変換します。その後、このフィードを使用して、好きな場所に結果を表示できます。

検索パターンを適用してテキストまたはHTMLのスニペットを抽出することにより、自由形式のHTMLまたはXMLドキュメントを有効なRSSフィードに変換し、出力テンプレートを使用してこれらのスニペットを結合して、フィードのアイテムのユーザーフレンドリーなコンテンツを形成します。

フィードのセットアップが完了すると、それは非常に簡単に思えます。

  • フィードリーダーがフィードをダウンロードするリクエストをサーバーに送信します。
  • 一方、Feed43は、元のソースURLをダウンロードして処理し、その場で有効なRSSフィードに変換して、フィードリーダーアプリケーションに返します。
  • フィードリーダーは、このフィードのコンテンツを表示します。

ランダムなJED拡張URLを使用して自分ですばやく試しましたが、レビューはJEDのタブに表示されています(他の無料のrss作成者はこれを行うことはできません)。

ここで自分で遊んでみてください。その分、実験する時間はあまりありません。検索パラメータは私を捨てましたが、それはほんの少しの練習が必要だと確信しています!

お役に立てれば。


ジョニー、ありがとう。私は実際に以前これを試してみましたが、私も検索パターンに夢中になりました。私は間違いなくこれをさらに調査し、私が思いつくことができるものを見ます。/:私は希望ジェドは一種であるようにして自分のサイトのパフォーマンスは、これらの日遅く遅くなるように思われるん
Lodder

5

結局、@ Rob Clayburnが推奨するJSONメソッドを使用しました。

これは、拡張機能について知っておくべきすべてのものを含む巨大なオブジェクトをダンプします。

私は次のように書いて、レビューのタイトルとメインテキストを提供しました。

<?php
    $url        = 'http://extensions.joomla.org/index.php?option=com_jed&view=extension&layout=details&id=3711&format=json';
    $contents   = file_get_contents($url);
    $decode     = json_decode($contents, true);
    $reviews    = $decode['reviews'];

    foreach ($reviews as $key => $value) 
    {
        echo $value['core_title']['html'] . "<br>";
        echo $value['core_body']['html'] . "<br>";
    }
?>

またはで置き換えることもできhtmlます。valuetext

新しいJEDでは、次のものを書くことができます。

  • 機能性
  • 使いやすさ
  • サポート
  • ドキュメンテーション

したがって、結果を取得すると、次のような結果になる可能性があります。

{functionality} TEXT_HERE {/ functionality} {ease_of_use} TEXT_HERE {/ ease_of_use} {support} TEXT_HERE {/ support} {documentation} TEXT_HERE {/ documentation}

したがって、分類/分離が必要になる場合があります。

これが将来同じことをしたい人に役立つことを願っています。

他の人がコードを気にすることなく自分のサイトに統合できるように、Joomlaモジュールを書くかもしれません。


4

1日1回JEDサイトをスクレイピングし、Joomlaのキャッシュ管理システムを使用して解析済みコンテンツをキャッシュするモジュールをコーディングしました。ページの読み込みを高速に保つことができたのは素晴らしいことでした。しかし、JEDはサイトのレイアウトを変更し、私はそれを修正するだけではありません。

その中には多くの逆行的な正規表現がありますが、それは可能です。私に提供したいのですが、新しいデザインとレイアウトではまだ機能しません。


あ、いいね。それでは、cronジョブを使用していましたか?
Lodder 2015

すべてのレビューなどはマイクロデータを使用しているので、このようなものを使用してレビューをこすることができますgithub.com/linclark/MicrodataPHP(jsonアプローチの方が簡単だと思います)
Rob Clayburn

@Lodder-はい、Joomla CLIを介して呼び出し、その日のデータセットとキャッシュを更新します。更新を強制できるクエリ文字列変数もありました(テスト/手動更新の目的で)。
muely2k1

1

残念ながら、JEDページにはrssフィードがありません:(私は手動で行うか、ページをこするのではないかと思います。schema.orgマークアップにも使用できれば素晴らしいので、残念です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.