Nhận đánh giá từ JED


7

Tôi thấy trên trang web của NoNumber, anh ta có một tab hiển thị các đánh giá từ Thư mục phần mở rộng Joomla, ví dụ, ở đây

Tôi đã tự hỏi, nếu bằng cách nào đó có thể lấy các đánh giá từ trang web của JED. Tôi đã nhìn xung quanh, nhưng có vẻ như JED không cung cấp API, tôi cũng không thể tìm thấy bất cứ thứ gì trong thư mục thư viện Joomla.

Tôi đã thử phân tích HTML từ một trang, tuy nhiên điều này là quá mức cần thiết và dẫn đến thời gian tải trang rất dài.

Có ai biết nếu điều này là có thể? Một nguồn cấp dữ liệu RSS nào đó sẽ phù hợp hơn?

Câu trả lời:


9

Có một API không có giấy tờ JSON.

Giả sử tiện ích mở rộng của bạn có id là 83, url này sẽ cung cấp cho bạn tiện ích mở rộng và đánh giá của nó:

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

Nếu bạn cần jsonp thay vì chỉ là một đầu ra json đơn giản thì hãy đặt format = jsonp.

Để tìm ra id tiện ích mở rộng, bạn có thể truy cập trang thực tế của tiện ích mở rộng, ví dụ: http : //extensions.j Joomla.org/extensions/extension/contacts-and-feedback/forms/fabrik và kiểm tra nút 'viết đánh giá' - trông giống như:

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

sử dụng FOO làm id tiện ích mở rộng của bạn từ phân đoạn extension_id = FOO.

Lưu ý rằng giới hạn tốc độ có thể được thực hiện trong tương lai - vì vậy tốt nhất để lưu trữ bất kỳ kết quả cuộc gọi api nào. Ngoài ra, các mã thông báo Web JSON ( http://jwt.io/ ) có thể cần thiết trong tương lai để truy cập API.


Cảm ơn Rob, tôi cũng sẽ xem xét điều này, vì nó có vẻ đầy hứa hẹn
Lodder

Tôi đã kết thúc bằng cách sử dụng phương pháp này. Tôi đã viết một câu trả lời dưới đây cho thấy cách tôi lặp qua JSON. Cảm ơn một lần nữa;)
Lodder

5

Đó là một ý tưởng tuyệt vời.

Tôi cho rằng bạn có thể sử dụng một công cụ như Feed43 để tạo ' nguồn cấp dữ liệu tùy chỉnh '. Đây là một dịch vụ trực tuyến miễn phí chuyển đổi bất kỳ trang web nào thành nguồn cấp RSS một cách nhanh chóng. Sau đó, bạn có thể sử dụng nguồn cấp dữ liệu này và hiển thị kết quả bất cứ nơi nào bạn muốn.

Nó hoạt động bằng cách chuyển đổi các tài liệu HTML hoặc XML dạng tự do thành các nguồn cấp RSS hợp lệ bằng cách trích xuất các đoạn văn bản hoặc HTML bằng cách áp dụng các mẫu tìm kiếm và sau đó kết hợp các đoạn mã này với nhau bằng các mẫu đầu ra để tạo thành nội dung thân thiện với các mục của nguồn cấp dữ liệu.

Một khi bạn đã thiết lập nguồn cấp dữ liệu có vẻ khá đơn giản;

  • Trình đọc nguồn cấp dữ liệu của bạn gửi yêu cầu đến máy chủ của chúng tôi để tải xuống nguồn cấp dữ liệu.
  • Feed43, đến lượt nó, tải xuống URL nguồn ban đầu, xử lý nó, chuyển đổi thành nguồn cấp RSS hợp lệ một cách nhanh chóng và trả lại cho ứng dụng đọc nguồn cấp dữ liệu.
  • Trình đọc nguồn cấp dữ liệu hiển thị nội dung của nguồn cấp dữ liệu này cho bạn.

Tôi đã tự mình thử nó một cách nhanh chóng bằng cách sử dụng URL tiện ích mở rộng JED ngẫu nhiên và nó nhận các đánh giá, mặc dù chúng được hiển thị trong một tab trong JED (những người tạo rss miễn phí khác không thể làm điều này).

Chơi xung quanh với nó ở đây , tôi không có nhiều thời gian để thử nghiệm nó vào lúc này. Các thông số tìm kiếm đã ném tôi đi nhưng tôi chắc chắn rằng nó chỉ cần thực hành một chút!

Hi vọng điêu nay co ich.


Cảm ơn Johnny. Tôi đã làm như một vấn đề thực tế thử điều này trước đây và tôi cũng bị loại bỏ bởi các mẫu tìm kiếm. Tôi chắc chắn sẽ xem xét thêm về điều này và xem những gì tôi có thể đưa ra. Tôi hy vọng JED sắp xếp hiệu suất trang web của họ vì dường như sẽ chậm chậm trong những ngày này: /
Lodder

5

Cuối cùng tôi đã tìm ra phương thức JSON được đề xuất bởi @Rob Clayburn.

Nó vứt một vật thể lớn với mọi thứ cần biết về phần mở rộng.

Tôi đã kết thúc việc viết những điều sau đây để cung cấp cho tôi tiêu đề đánh giá và văn bản chính:

<?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>";
    }
?>

Bạn cũng có thể thay thế htmlvới một trong hai valuehoặc text.

Trên JED mới, bạn có thể viết một cái gì đó cho:

  • Chức năng
  • Dễ sử dụng
  • Ủng hộ
  • Tài liệu

Vì vậy, khi bạn nhận được kết quả, bạn có thể kết thúc với một cái gì đó như thế này:

{chức năng} TEXT_HERE {/ chức năng

Vì vậy, phân loại / tách có thể được yêu cầu.

Hy vọng điều này sẽ giúp những người muốn làm điều tương tự trong tương lai.

Tôi có thể viết một mô-đun Joomla để những người khác có thể tích hợp nó trong trang web của riêng họ mà không phải lo lắng về mã.


4

Tôi đã mã hóa một mô-đun loại bỏ trang web JED mỗi ngày một lần và lưu trữ nội dung được phân tích cú pháp bằng hệ thống quản lý bộ đệm của Joomla. Thật tuyệt vời, vì nó giữ cho trang tải nhanh. Tuy nhiên, JED đã thay đổi bố cục của trang web và tôi không thể sửa nó.

Có rất nhiều biểu thức chính quy hồi quy trong đó, nhưng nó có thể được thực hiện. Tôi sẽ cung cấp cho bạn của tôi nhưng nó không hoạt động cho thiết kế và bố trí mới của họ.


À Bạn đã sử dụng một công việc cron sau đó?
Lodder

tất cả các đánh giá, v.v. đang sử dụng dữ liệu vi mô để bạn có thể sử dụng một cái gì đó như thế này để cạo các đánh giá github.com/linclark/MicrodataPHP (nhưng tôi nghĩ cách tiếp cận json đơn giản hơn)
Rob Clayburn

@Lodder - có, gọi qua Joomla cli để cập nhật tập dữ liệu và bộ đệm trong ngày. Tôi cũng có một biến chuỗi truy vấn có thể buộc cập nhật (cho mục đích kiểm tra / cập nhật thủ công).
muely2k1

1

Thật không may, không có nguồn cấp dữ liệu rss trên các trang JED :( Tôi nghi ngờ họ làm điều đó bằng tay hoặc có thể họ cạo trang. Thật xấu hổ vì sẽ rất tuyệt nếu họ cũng có thể được sử dụng để đánh dấu lược đồ.org.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.