Gatsby: [1.0] Daftar keinginan plugin (dan situs contoh)

Dibuat pada 17 Jun 2017  ·  97Komentar  ·  Sumber: gatsbyjs/gatsby

Ada banyak plugin yang cukup mudah untuk ditulis yang akan bagus untuk masuk. Banyak plugin yang pada dasarnya hanya membungkus plugin webpack (misalnya menambahkan dukungan untuk preprocessor CSS) atau perpustakaan NPM (misalnya untuk plugin transformator) . Saat Anda membuat plugin baru, Anda juga harus membuat situs contoh pendamping sebagai cara untuk mendemonstrasikan cara kerja plugin serta sebagai uji integrasi untuk plugin.

Menambahkan plugin dan situs contoh itu mudah. Cukup checkout repo Gatsby dan jalankan npm install di root repo. Kemudian jalankan npm run plop dan pilih untuk membuat plugin atau situs contoh lalu ikuti petunjuk untuk melakukan penyiapan awal. Beberapa plugin di wishlist sudah memiliki stub di repositori.

Jika Anda ingin mencoba membuat salah satunya, tinggalkan komentar untuk mengklaimnya dan mulai membuat kode! Juga daftar ini tidak lengkap. Jangan ragu untuk menyarankan ide dan menerimanya juga!

Daftar keinginan plugin

CSS

  • [x] Lebih sedikit
  • [x] Stylus
  • [x] Aphrodite (dilacak di https://github.com/gatsbyjs/gatsby/issues/8709)
  • [x] CXS (dilacak di https://github.com/gatsbyjs/gatsby/issues/8710)
  • [x] Glamor
  • [x] JSS
  • [x] styled-jsx ( @timsuchanek mengerjakan ini)

Plugin transformator

  • [x] CSV
  • [x] docx
  • [x] pdf (dilacak di https://github.com/gatsbyjs/gatsby/issues/8711)
  • [x] xml
  • [x] asciidoc (dilacak di https://github.com/gatsbyjs/gatsby/issues/8712)
  • [x] toml ( @ Vagr9K mengerjakan ini)
  • [x] URL jarak jauh (misalnya gambar yang direferensikan akan diunduh dan kemudian tersedia sebagai gambar lokal).

Plugin sumber

Dokumen tentang menulis plugin sumber https://www.gatsbyjs.org/docs/create-source-plugin/

  • [x] Trello
  • [x] Wordpress.com
  • [x] Drupal (sudah ada permulaannya di repo, tapi ada sejumlah tambahan yang bagus untuk dibuat)
  • [x] Prismik
  • [x] DatoCMS
  • [x] Github
  • [x] Database SQL (dilacak di https://github.com/gatsbyjs/gatsby/issues/8714)
  • [x] MongoDB
  • [x] DynamoDB
  • [x] S3 bucket: Lihat gatsby-source-s3
  • [x] Twitter
  • [x] Facebook
  • [] https://www.accedo.tv/appgrid/
  • [x] https://github.com/marak/Faker.js/ - berikan "skema" untuk node misalnya judul, tanggal, penulis dengan avatar / markdown body dan buat sekumpulan node Post. Akan lebih bagus untuk situs contoh!

Contoh situs

Selain situs contoh yang menunjukkan cara menggunakan plugin di atas, akan sangat bagus untuk memiliki situs contoh yang mendemonstrasikan cara yang mungkin untuk membangun:

  • [x] Situs multi-bahasa
  • [x] Pencarian
  • [x] Penomoran halaman
  • [x] Helm React
  • [x] Komentar (penurunan harga)
good first issue help wanted

Komentar yang paling membantu

Hai, alangkah baiknya memiliki plugin untuk Directus karena ini adalah alternatif open source untuk Contentful :)

Semua 97 komentar

  • Tweet dan Inti dalam Penurunan Harga (lihat jekyll-twitter-plugin )
  • automagical figure / figcaption untuk gambar penurunan harga yang membutuhkan keterangan dan / atau referensi ke sumber / lisensi
  • KaTeX , MathJax (dalam penurunan harga) - juga saat mencari di Google menemukan jekyll-scholar , yang "memformat bibliografi dan daftar bacaan Anda untuk web dan memberikan kekuatan super pada posting blog Anda",… jadi saya kira BibTeX;)
  • generator favicon - tidak super diperlukan (karena sudah ada http://realfavicongenerator.net/ dan saya juga dapat melihat banyak alasan untuk membuat masing-masing secara manual) tetapi cukup mudah untuk diterapkan (selain dari ikon SVG yang diinginkan macOS Safari untuk "tab yang disematkan")
  • Dribbble
  • Flickr
  • 500px

Ini adalah sumber bagus dari kumpulan data mandiri + API publik

Flickr akan berguna - sementara situs itu sendiri merana, itu robut API publik menjadikannya sumber yang berguna untuk menyimpan foto untuk dimasukkan ke dalam posting dan halaman blog.

Saya akan mengerjakan toml-transformer .

Mengerjakan styled-jsx dan seorang syncer algolia

@ Vagr9K @timuchanek keren! Menambahkan Anda ke daftar

Ada yang bekerja di DatoCMS? Akan sangat senang melihat itu terjadi.

Apakah sudah ada yang mengerjakan integrasi Medium? Akan keren untuk mengambil posting terbaru dari blog tertentu.

@mfeltscher Anda membaca pikiran saya! Saya memiliki kebutuhan yang sama, dan mulai mencari cara bagaimana kami dapat menulisnya. Karena Medium API terbatas dalam hal ini (afaik Anda tidak bisa mendapatkan posting terbaru dari blog), kami harus mengikis atau menggunakan umpan rss blog. Saya mulai menulis sumber rss tujuan umum di sini: https://github.com/jondubin/gatsby-source-rss Kontribusi / pemikiran selamat datang!

@jondubin hai apakah Anda tertarik untuk menambahkan plugin sumber ke repo Gatsby? Ini adalah sedikit eksperimen, tetapi saya pikir memiliki sebagian besar plugin komunitas dalam repo yang sama akan membantu menjaga kualitas kode plugin jauh lebih tinggi karena akan ada lebih banyak bola mata pada kode di sini ditambah kita dapat terus berinvestasi dengan lebih baik dan lebih baik menguji infrastruktur untuk memastikan semuanya bekerja dengan baik.

Pikiran?

@KAMews mengatakan tidak lebih! Saya akan bermigrasi segera setelah mendapat kesempatan.

Halo, saya mulai bermain dengan Gatsby akhir pekan ini. Terlihat keren! Saya ingin membangun situs web pribadi dan menggunakan gaya glamor. Cara saya melihat ini, tidak membutuhkan plugin sendiri. Karena menggunakan glamour di latar belakang, ini akan bekerja jika Anda menggunakan plugin glamour. Apakah saya melewatkan sesuatu?

@elixjung tak tahu! Ingin mencoba dan melaporkan kembali? Saya belum pernah menggunakan Glamorous atau meneliti metode SSR-nya jadi tidak tahu apakah plugin glamour yang ada akan berfungsi atau tidak

Berhasil 😆 Melihat dokumennya, saya tidak dapat menemukan apa pun tentang hal-hal SSR. Kent C. Dodds hanya menulis itu berhasil karena glamour dan bereaksi mendukungnya. Jadi saya mencoba dan berfungsi saat Anda mengaktifkan plugin glamour. 🎉

Oh, baiklah kalau begitu :-) Anda ingin menambahkannya ke readme plugin glamour dan kita bisa mengeceknya nanti 👍

Tentu, bisa.

@jondubin +1 tentang batasan API Medium. Saya juga mencoba cara RSS, hanya untuk mengetahui pakan juga berisi komentar pengguna , yang Anda dapat bekerja di sekitar , tapi ... 🙄

Saya pikir saya akan mengerjakan plugin emosi

Hai, alangkah baiknya memiliki plugin untuk Directus karena ini adalah alternatif open source untuk Contentful :)

@fk @jondubin Saat melihat masalah ini saya menemukan solusi lain untuk mengambil posting dari Medium seperti yang dijelaskan dalam posting blog ini : https://medium.com/@{username}/latest?format=json .

👋 Saya dapat mengerjakan plugin gatsby-transformer-xml

inilah PR untuk gatsby-transformer-xml

Plugin sumber @KAMews Word.com selesai.

@fk @erutan wrt Flickr / 500px, Unsplash juga bagus.

Saya yakin # 1496 memecahkan "CSV" di bawah "Plugin Transformer".

Saya juga merekomendasikan menambahkan XLSX ke daftar itu.

Saya sudah mulai mengerjakan plugin sumber prismic.io di sini: https://github.com/angeloashmore/gatsby-source-prismic

Ini sangat mendasar: menarik semua dokumen dan membuat semua data tersedia di node PrismicDocument.

Perbaikan yang diperlukan akan mencakup menautkan dokumen sesuai kebutuhan (bahasa alternatif, bidang tautan relasional,…).

Hei yang disana

Kami telah menulis plugin sumber Medium yang menarik JSON dari titik akhir yang disebutkan oleh @mfeltscher. Saya telah membuka Permintaan Tarik di sini: # 1907

Semoga bermanfaat juga untuk orang lain.

@deniaz Terima kasih! Saya benar-benar lupa tentang menindaklanjuti komentar oleh @mfeltscher 😕, dan sekarang saya agak bingung mengapa saya sendiri tidak pernah mencoba titik akhir itu. Sepertinya saya dengan patuh mengabaikan hal-hal saat membaca " Halaman JSON tidak dimaksudkan untuk digunakan sebagai API baca. "… 🤓 😅

Hei,
Saya telah menulis plugin sumber untuk Github API v4 , atau menginstalnya menggunakan npm install gatsby-source-github-api

Jangan ragu untuk memberi tahu saya apa yang perlu saya ubah atau fitur apa yang ingin Anda terapkan.

-
sunting: Saya juga menyelesaikan situs web sederhana yang menunjukkan kegunaan plugin ini: Anda dapat menemukannya di sini

LaTeX dan terutama MathJax akan sangat bagus!

@thomaskuntzz terserah sekarang! https://using-remark.gatsbyjs.org/katex/

Hebat! Sepertinya sangat cocok untuk apa yang saya butuhkan!

Hanya bertanya-tanya mengapa KaTeX dipilih daripada MathJax ... Ada ide?

Tidak yakin, periksa PR asli untuk alasannya. Anda juga menambahkan plugin lain untuk MathJax. Lebih banyak plugin semakin meriah :-)

Hai, saya telah mengumpulkan solusi cepat untuk penomoran halaman daftar posting dan memperhatikan bahwa tidak ada contoh penomoran halaman.

https://github.com/pixelstew/pixelstew-gatsby/blob/master/gatsby-node.js

Jika itu sesuai dengan tagihan, saya dapat menulis posting singkat yang menjelaskannya?

@pixelew tampak hebat! Anda ingin mengekstrak pustaka yang dapat digunakan orang juga? Sesuatu seperti createPagninatedPages({ edges, pageLength=10, templatePath, createPage }) atau sesuatu seperti itu.

Itu memecahkan masalah yang sangat umum!

Ingin posting blog tentang menggunakan solusi juga.

@KAMews - anggap saja sudah selesai

Halo semuanya!

Bisakah saya bekerja dengan contoh situs multi bahasa?

Apakah plugin saya gatsby-plugin-18n merupakan solusi yang baik? Perbaikan apa yang dibutuhkan?

Saya ingin membantu dan mendapatkan umpan balik tentang cara yang benar dalam melakukan sesuatu.

Terima kasih!

@Bayu_joo

https://www.npmjs.com/package/gatsby-paginate

Baru saja melihat beberapa kesalahan mengerikan di readme. Beri tahu saya jika API cukup mudah.

Hai @pixelew

Bisakah Anda menambahkan tautan github ke package.json Anda?
Di halaman npm saya harus pergi ke profil npm Anda, lalu ke profil github, lalu ke repositori untuk menemukan kode sumber.

Saya akan menguji paket Anda dengan gatsby-plugin-i18n
Saya harap ini berhasil = D

@angeloocana - yep np

@pixelew tampak hebat! Sangat mudah digunakan. Satu-satunya hal yang saya lihat hilang adalah cara untuk mengubah jalur default untuk halaman. Misalnya untuk i18n atau untuk sub-bagian dari situs misalnya / blog / 1, / blog / 2 dll. Juga mungkin cara untuk mengatakan garis miring atau tidak.

Hai, @KyleAMews Saya menulis plugin Sumber untuk Trello berfungsi berdasarkan id tim. yang lebih baik daripada memasukkan boardId satu per satu.

Saya juga membangun 2 situs web openSource dengannya. dan posting blog / tutorial tentang semua proses.
Bersulang
🍻

@Necttn woah ! Saya menginginkan plugin sumber Trello selamanya! Tidak sabar untuk membacanya! Bisakah Anda melompat dari papan ke daftar ke kartu? Misalnya meminta papan dan kemudian mengambil semua informasi kartu dari salah satu daftarnya?

ya tentu saja! :) itu akan menjadi seperti,

query getBoardById($id: String!) {
  allTrelloBoard (
    filter: {
      id: {eq: $id}
    }
  ){
    edges {
      node {
        id
        name 
        lists {
          id
          name
        }
        cards {
          id
          parent
          name
          desc
        }
      }
    }
  }
}

jadi ada hubungan antara node s berdasarkan nilai parent .
card.parent nilai = list.id
list.parent nilai = board.id
lalu pada dasarnya .. Anda dapat menyegmentasikan kartu secara relatif list , bila Anda list.map ;

    const cards = data.cards.filter(card => {
      return card.parent === list.Id
    }).map(card => {
      return (
        <div key={card.id}>
          <h2>{card.name}</h2>
          <p>{card.desc}</p>
        </div>
      )
    })

hari ini saya akan mencoba menambahkan trafo sebesar card.desc yang merupakan parse penurunan harga mentah dengan gatsby-transformer-remark.

dan menambahkan hubungan children akan menjadi PR yang bagus. jika seseorang punya waktu, saya akan menghargai itu.

baiklah, saya juga menambahkan hubungan anak-anak & komentar transformator. versi baru berfungsi seperti pesona. inilah contoh kueri.

query getWeeklyById($id: String!) {
  allTrelloBoard (
    filter: {
      id: {eq: $id}
    }
  ){
    edges {
      node {
        id
        name lists {
          id
          name
          cards {
            id
            name
            childMarkdownRemark {
              id
              html
            }
          }
        }
      }
    }
  }
}

Baru saja mendapat ide untuk plugin sumber berbasis faker.js - akan luar biasa untuk membuat situs contoh!

@KyleAMews - Saya akan mengupdate lib agar bisa digunakan untuk membuat halaman postingan.

Dapatkah Anda atau orang lain mendeskripsikan cara struktur postingan paginasi?
Dalam penurunan harga misalnya - apakah itu index.md dan kemudian beberapa file md berikutnya untuk 'halaman' lainnya?

Atau menggunakan sumber data lain?

Saya rasa saya perlu tahu bagaimana respons API mungkin terlihat jika saya ingin ini menjadi hal yang otomatis.

@pixelstew seharusnya berfungsi dengan sumber data apa pun. Ini hanya membutuhkan opsi Saya pikir untuk menambahkan "awalan" ke halaman yang dibuatnya misalnya "posting" atau "gambar" atau apa pun.

@KAMAMews - Ya saya rasa begitu - saya mungkin terlalu rumit. Saya berpikir untuk melewatkan sebuah array dari semua posting, mendeteksi apakah ada posting 'multi halaman' dalam array tersebut, kemudian secara kondisional menampilkannya dengan url yang diawali seperti yang Anda katakan.

Jika saya meninggalkan input sebagai array yang ditentukan pengguna maka solusinya sederhana.

Saya cukup tertarik untuk membuat situs contoh penelusuran atau penomoran halaman, karena saat ini saya sedang mengerjakan fitur ini untuk situs saya sendiri.

Jika belum ada yang mengerjakan ini, tentu saja.

@Tallestthomas itu bagus! @pixelstew sudahkah Anda atau orang lain membuat situs contoh untuk gatsby-paginate? Akan lebih baik jika memiliki satu host di sini karena itu kasus penggunaan umum.

Di penelusuran - @bvaughn telah sedikit bermain-main dengan ide penelusuran. Brian - apakah Anda memasukkan kode sampel ke mana pun?

Saya mendorong beberapa pekerjaan yang sedang dalam proses hack di sini tetapi sama sekali belum siap untuk dibagikan atau apa pun. Hanya mengerjakannya di sana-sini, ketika saya punya waktu.

Adakah yang kebetulan melakukan pekerjaan dengan Zendesk atau Greenhouse?

Hai semuanya,

Saya membuat perpustakaan pembantu untuk penulis plugin sumber. Ini akan membantu mengurangi beberapa boilerplate yang dibutuhkan untuk plugin sumber.

gatsby-node-helpers : https://github.com/angeloashmore/gatsby-node-helpers

Saya sudah mulai menggunakannya untuk plugin sumber Shopify yang saya tulis dan menemukan nilai di dalamnya, jadi saya pikir saya akan membagikannya. Tolong beri tahu saya apa yang Anda pikirkan jika Anda mencobanya. Terima kasih :)

@KyleAMews Saya telah menggunakan plugin di blog saya sendiri yang dengan senang hati saya kloning dan host di sini.

@angeloashmore ini luar biasa !!! Bisakah Anda menautkannya dari halaman dokumen plugin sumber? https://www.gatsbyjs.org/docs/create-source-plugin/

@pixelew gatsby -paginate?

@pixelstew alasan apa lisensinya adalah GPL pada plugin gatsby-paginate?

Ingin sekali melihat plugin sumber untuk Craft CMS. Craft memiliki plugin asli yang membuat JSON API. https://github.com/craftcms/element-api/tree/v1 .

Untuk kerajinan 3 juga ada plugin server GraphQL. https://github.com/markhuot/craftql

Perpustakaan NPM ini cukup manis. Ini menganalisis halaman dan membuat file font yang diperlukan hanya untuk karakter sebenarnya yang digunakan pada halaman itu untuk kecepatan pemuatan optimal https://www.npmjs.com/package/subfont

Akan lebih baik jika memiliki plugin yang melakukan itu untuk semua atau halaman yang ditunjuk di situs!

@KAMAMews Saya akan mendapatkan keuntungan dari integrasi Launchly . Idealnya, ini akan mendukung tanda fitur SSR dan runtime.

@ mickeyreiss-visor itu pasti keren!

apakah ada plugin Dribbble ?

@smakosh Bukannya aku tahu (mencari npm dan GitHub)… ingin membuatnya ?!

Saya akan mencobanya!

API mereka sangat buruk lol, alih-alih memberi tahu saya parameter apa yang hilang, respons mereka seperti

{
    "error": "invalid_request",
    "error_description": "The request is missing a required parameter, includes an unsupported parameter value, or is otherwise malformed."
}

Oke, saya berhasil mendapat respons, akan mengerjakan plugin malam ini!

@sukasuka Ingin menambahkannya ke daftar plugin komunitas? https://www.gatsbyjs.org/docs/plugins/#community -plugins

Hai, ada rencana untuk menambahkan dukungan untuk asciidoc? :)

@vojtechruz Saya belum pernah menulis satu pun! Jangan ragu untuk mengambilnya dan berkontribusi kembali ke komunitas!

Oke, saya akan dengan senang hati :)

Ada yang mengerjakan plugin subfont? Akan sangat senang melihatnya beraksi.

@alexparish Senang melihatnya!

@alexparish itu akan luar biasa! Baru saja memikirkan satu untuk itu malam itu! Pikiran saya adalah secara default orang harus menentukan halaman mana yang mereka inginkan karena saya berasumsi prosesnya cukup mahal? Ini akan keren untuk menghubungkan ke Google Analytics dan secara otomatis menerapkan alat ke 10 halaman arahan teratas.

@KyleAMews Saya khawatir saya hanya tahu sedikit tentang proses subfont tetapi terkesan dengan kredensial Anda. Jika Anda berencana untuk mencoba plugin ini, tolong jangan biarkan saya menghentikan Anda - Saya memiliki sedikit waktu yang tersedia sehingga akan lambat dari sisi saya.

Oke, tidak yakin kapan saya akan punya waktu juga, tetapi ya, ini memiliki banyak potensi untuk meningkatkan kinerja di situs dengan font khusus.

TBH sebuah plugin untuk subfont mungkin sedikit berlebihan, kecuali jika memiliki beberapa keajaiban seperti gagasan untuk hanya berjalan di 10 halaman teratas dari analytics (yang merupakan ide _awesome_). Untuk menambahkan subfont ke proyek, Anda cukup menempelkannya ke akhir langkah pembuatan Anda

gatsby build && subfont public -i

Beberapa ide lainnya:

Ide plugin:
Parse file sketsa untuk menghasilkan dokumentasi komponen atau dokumentasi sistem desain secara otomatis berdasarkan deskripsi komponen di dalam file sketsa.

Bagaimana cara kerjanya:
Untuk mengurai dan membaca file sketsa kita membutuhkan lapisan yang jelas dan struktur artboard dengan beberapa properti tertentu. Per grup komponen yang ingin Anda dokumentasikan, perlu ada artboard terpisah dengan lapisan deskripsi atau simbol informasi. Lapisan ini harus memiliki nama khusus. Kita dapat membaca konten dari lapisan itu dan membangun halaman dengan penurunan harga dengan konten itu.

Beberapa alat yang bisa kita gunakan:
https://github.com/xaviervia/sketch2json
http://oscarotero.design/node-sketch/
https://gist.github.com/JoelBesada/fc20060741342e8a5f15208401e4308d

Ide plugin cloudinary:
info lebih

Saya akan mengerjakan pdf-transformer.

Saya akan mengerjakan plugin sumber dynamodb.

@KyleAMews Saya akan membagi ini menjadi beberapa masalah sehingga sedikit lebih mudah didekati. Saya akan menutup ini setelah dibuat!

ringkasan masalah memiliki

Drupal (sudah ada yang pertama di repo tapi ada sejumlah tambahan yang bagus untuk dibuat)

Apakah ada daftar tambahan yang Anda kejar?

Apakah wishlist sumber masih valid pada apa yang bisa kita tambahkan?

@KyleAMathews Saya memiliki utilitas node kecil yang saya gunakan untuk fixer-io dan saya ingin menambahkan ini sebagai plugin yang dapat saya gunakan di gatsby, jadi pada dasarnya saya akan membuat plugin gatsby-fixer-io . Apakah saya tetap bisa mengirimkan PR untuk ini karena saya telah memetakannya saat ini

@kenigbolo kami mencoba untuk hanya menambahkan plugin yang benar-benar inti ke repo ini. Kami ingin Anda menerbitkan sendiri plugin Anda ke npm sehingga dapat muncul di pustaka plugin! https://www.gatsbyjs.org/docs/submit-to-plugin-library/

@aroduribe tidak juga. Banyak dari hal-hal ini telah dilakukan. Jika ada yang terlihat menarik, periksa kembali perpustakaan plugin untuk melihat apakah itu sudah selesai atau belum. https://www.gatsbyjs.org/plugins/

Anda juga dapat memeriksa https://github.com/gatsbyjs/gatsby/labels/status%3A%20help%20diinginkan kerja untuk membantu.

Cara lain untuk berkontribusi juga dapat ditemukan di https://www.gatsbyjs.org/docs/how-to-contribute/

Sejak diakuisisi oleh Smugmug pada bulan April, Flickr tampaknya akan mengalami kebangkitan kecil. Sebagai pengguna lama Flickr, saya benar-benar tergoda untuk mencoba menulis plugin sumber ...

Flickr akan berguna - sementara situs itu sendiri merana, itu robut API publik menjadikannya sumber yang berguna untuk menyimpan foto untuk dimasukkan ke dalam posting dan halaman blog.

Penasaran apakah ada yang melihat plugin sumber Notion

@dustinhorton Saya melihatnya kemarin. tetapi mereka tidak memiliki API publik jadi perlu menggunakan papan publik, dll.

ada API SDK tidak resmi yang ditulis dalam GO.
https://github.com/kjk/notionapi

beri tahu saya jika Anda bersedia menulisnya. Saya mungkin berkontribusi juga.

Saya telah menulis gatsby-source-trello untuk alasan yang sama.

@Necmttn Ya saya tersandung pada itu setelah mencari plugin sumber Gatsby. Publik akan menyesuaikan kebutuhan saya dengan baik, tetapi saya hanya punya satu kasus penggunaan kecil sehingga saya takut saya tidak mampu menyediakan waktu yang dibutuhkan. Saya akan memeriksa plugin Trello Anda untuk mulai mendapatkan ide tentang apa yang mungkin diperlukan — terima kasih atau tautan.

Meninjau dokumen dan plugin saat ini sepertinya semuanya telah dibahas. Menutup ini, setiap permintaan plugin sumber baru dapat mengalami masalah terbuka. (FYI: ini adalah masalah terbuka tertua, jadi tim yay untuk menyelesaikan semua ini.)

Apakah halaman ini membantu?
0 / 5 - 0 peringkat