Giải pháp cho việc sử dụng nội dung Markdown từ github?


7

Tôi thích Markdown rất nhiều và tôi muốn sử dụng github để lưu nội dung ở đó (cũng với lợi ích bổ sung mà bất kỳ ai cũng có thể gửi PR).

Tôi không quan tâm đến trình soạn thảo Markdown cho Joomla, chỉ là một tiện ích mở rộng có thể truy xuất các tệp Markdown từ github và chuyển đổi chúng trong HTML (ngoài ra để lưu trữ chúng trong một khoảng thời gian).

Tương tự với những gì JoomlaTools làm.

github => trang web


Nếu bạn phát hiện ra điều này trước tôi, xin vui lòng chia sẻ, vì tôi rất thích làm điều tương tự. Cũng rất thú vị khi tìm ra sự khác biệt về hiệu suất giữa việc nhận nội dung từ github và#__content
Lodder

Trên thực tế tôi đã làm điều này ở đây vdespa.de/blog . Nó hoạt động tốt, nhưng nếu github ngừng hoạt động ...
Valentin Despa

chỉ cần suy nghĩ về điều này thực sự. Tôi chỉ thấy một trình soạn thảo Markdown nhưng không có gì khác. Cá nhân tôi sẽ đề nghị tạo một plugin nhỏ với thư viện Markdown to HTML và được kích hoạt onContentPrepare. Không chắc đó có phải là sự kiện chính xác hay không nhưng bạn có ý chính :)
Tạm biệt

Tôi muốn tạo ra tuần này một bằng chứng về khái niệm. Tôi sẽ chia sẻ dự án github ở đây ngay khi có gì đó để xem. Tôi có một cái gì đó như onContentPreparelàm việc, nhưng nó cần kết nối với github mọi lúc. Tôi có một ý tưởng khác.
Valentin Despa

Câu trả lời:


2

Theo như tôi có thể thấy cách duy nhất để thực sự có được thông tin trong kho lưu trữ là thủ công, trừ khi bạn muốn xem qua các cam kết và tất cả, tìm ra những gì đi đâu. Mặc dù bằng cách nào đó, tốt nhất là có một bản sao của repo ở đâu đó (tự động kéo cập nhật và tất cả những thứ đó, vì vậy nó sẽ có các tệp cục bộ ở định dạng thô).

Vì vậy, cách tốt nhất là có một cronjob cố gắng cập nhật thường xuyên vào một thư mục được chỉ định và sử dụng cấu trúc thư mục cho menu của bạn và hiển thị các tệp. Để phân tích chúng cách tốt nhất là sử dụng thư viện của riêng bạn nhưng với Joomla bạn có lớp JGithub có thể được sử dụng như vậy.

$github = new JGithub;

$result = $github->markdown->render('text here most likely the contents of a file');

echo $result; //will be html

Một cảnh báo nhỏ mặc dù sử dụng API để kết xuất nó, do đó bạn có thể gặp phải các vấn đề khi chạy vào các giới hạn API. Bạn cũng có thể sử dụng oauth để giúp bỏ qua nó nhưng đối với một đơn giản như vậy cần tốt nhất để sử dụng một thư viện.

Việc các tệp cục bộ ở định dạng thô giúp giảm thiểu vấn đề về hiệu năng khi chỉ cần phân tích chúng một cách nhanh chóng, do đó, không cần phải lưu vào bộ đệm vì tất cả những gì đang thực sự xảy ra là dù sao bạn cũng đang đọc một tệp, nếu có nhu cầu để lưu trữ bộ đệm đó sau đó, bởi vì tại thời điểm này, nó sẽ là một phần mở rộng tùy chỉnh cho j Joomla dù sao bạn cũng có thể kết nối vào bộ nhớ đệm của Joomla.

$cache = JCache::getInstance();
//data = rendered output, file is the path (dot separated is best) and extensionName is the custom extension
$cache->store($data,$file,$extensionName);

//then it can be called/checked like this
$cache->get($file,$extensionName);

Tôi chỉ để JModeltự động lưu trữ mọi thứ cho tôi, vì vậy ví dụ của tôi ở trên có thể không hoàn toàn chính xác, nhưng nó phải đủ gần để đi đến đâu đó với nó.

Ví dụ của tôi ở đây rất mơ hồ, chỉ là một chút lưu ý về cách tôi sẽ xử lý việc này. Giữ nó đơn giản vì tôi không chắc chắn 100% tôi hoàn toàn hiểu câu hỏi, mặc dù điều này ít nhất sẽ giúp được ai đó :)


2

Tình trạng hiện tại: bằng chứng về khái niệm, không được phát hành công khai.

Lịch sử

Tôi bắt đầu làm việc với giải pháp của riêng mình, với tên tạm thời là gitcms . Đây là kiến ​​trúc một cách ngắn gọn:

kiến trúc gitcms

Đây là cách nó hoạt động:

Kho lưu trữ Github

Mỗi lần một cam kết được đẩy vào kho lưu trữ và sự kiện sẽ được kích hoạt. Có thể bắt sự kiện này bằng cách sử dụng một webhook về cơ bản cho phép gửi một số dữ liệu meta ở định dạng JSON đến một địa chỉ để xử lý thêm.

gitcms

Được triển khai như một giải pháp phần mềm trung gian, nó không phải là CMS cụ thể. Nó nhận được sự kiện đẩy từ github, tìm ra những tập tin đã thay đổi, tìm nạp các tập tin từ github ở định dạng thô và chuyển đổi chúng thành HTML. Sau khi chuyển đổi xong, nó sẽ gửi một tin nhắn đến (các) Bộ điều hợp đã đăng ký.

Bộ chuyển đổi

Đây là bản dựng CMS cụ thể và có thể diễn giải thông điệp từ phần mềm trung gian. Cuối cùng, nó cần tạo, cập nhật và xóa bài viết.

Vấn đề đang chờ giải quyết

  • Làm thế nào để đối phó với hình ảnh hoặc bất kỳ tập tin phương tiện khác.
  • Các cuộc gọi được đồng bộ hóa, xem xét tách rời bằng cách sử dụng hàng đợi tin nhắn.

1

Nếu là tôi, tôi sẽ truy xuất bằng bất kỳ phương thức nào phù hợp với bạn (có thể là file_get_contents, tôi thích curl, nhưng bất cứ điều gì) và sau đó sử dụng lớp Parsedown để biến nó thành HTML.

http://parsedown.org/

Joomla có lớp github riêng, nhưng tôi không muốn xem nó thực sự làm gì.

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.