მთავარ შინაარსზე გადასვლა
DIVI DEVELOPERS

შექმენი DIVI-სთან ერთად

გაზიარება, HTML5 თამაშები და მოდულების შექმნის გზამკვლევი

DIVI-ზე გაზიარების ღილაკი

იმუშავებს ჩვეულებრივი ბმულითაც — გარე SDK და მომხმარებლის გასაღები საჭირო არ არის. მომხმარებელი თავად ადასტურებს გამოქვეყნებას.

<a data-divi-share href="https://divi.ge/?action=share&amp;url=https%3A%2F%2Fexample.com%2Farticle&amp;title=Hello" target="_blank" rel="noopener noreferrer">Share on DIVI</a>

JavaScript

document.querySelector('[data-divi-share]').addEventListener('click', function (event) {
  event.preventDefault();
  var share = new URL("https://divi.ge/");
  share.search = new URLSearchParams({action:'share', url:location.href, title:document.title});
  window.open(share.href, '_blank', 'noopener,noreferrer');
});

url: HTTP/HTTPS · max 2000 bytes. title: max 300 characters. პარამეტრები URL-კოდირებით გადაეცით. შესვლის შემდეგ გაზიარება გაგრძელდება იმავე ბრაუზერში 15 წუთის განმავლობაში.

მაგალითის გახსნა

HTML5 Games

გარე თამაშის სერვერმა უნდა დაუშვას iframe-ში ჩასმა. პროვაიდერის დომენის შეზღუდვებს DIVI ვერ აუქმებს.

ადმინისტრაცია ამატებს გარე HTTPS თამაშს ან ამოწმებს და ატვირთავს თქვენს HTML5 ZIP-ს. დეველოპერს ადმინისტრატორის უფლება არ სჭირდება.

game.zip
  index.html
  assets/
    game.js
    style.css
    sprites.png
  • შესასვლელი ფაილი: index.html; გამოიყენეთ ფარდობითი ბმულები და ეკრანზე მორგებული დიზაინი.
  • ZIP ≤100 MB · extracted ≤300 MB · ≤3000 entries · asset ≤150 MB.
  • მხოლოდ სტატიკური ფაილები: PHP, სერვერის კოდი, საიდუმლო გასაღებები, node_modules და შეკუმშული სერვერული ექსპორტები არ მოათავსოთ.
  • თამაშები მუშაობს sandbox-ში: DIVI-ს მომხმარებლის მონაცემებზე, მშობელ გვერდზე და საერთო localStorage-ზე წვდომა არ აქვთ. ანგარიშთან ქულების სინქრონიზაციის API ამ ვერსიაში არ არის.
const lang = new URLSearchParams(location.search).get('lang') || 'ka';
// Support touch controls, portrait/landscape and muted startup.
// Start sound after a user tap.
სანიმუშო თამაშის ZIP
მოდულის საწყისი ZIP

მოდულების შექმნა

მოდულის კოდი სერვერზე უშვებს დეველოპერის PHP-ს: მას მხოლოდ საიტის ნდობით აღჭურვილი ადმინისტრაცია ათავსებს. მომხმარებლის მიერ მოდულის ZIP-ის თვითნებური გაშვება არ არის დაშვებული.

app/modules/example/
  module.json
  backend.php
  assets/example.js
  database/install.sql
{
    "key": "example",
    "name": "Example",
    "family": "example",
    "version": "1.0.0",
    "core": false,
    "toggleable": true,
    "default_enabled": false,
    "api": {
        "backend": "backend.php"
    },
    "frontend": {
        "authenticated_only": true,
        "defer": true,
        "assets": [
            "assets/example.js"
        ]
    }
}

app/core/api_router.php?module=example&action=status

  • backend.php-მ თავად უნდა შეამოწმოს სესია, უფლებები და POST-ის CSRF. JSON პასუხის Content-Type აუცილებლად მიუთითეთ.
  • გამოიყენეთ PDO პარამეტრები, HTML escaping და ატვირთვების არსებული მოდული. მიგრაციები გაუშვით ცალკე, სარეზერვო ასლის შემდეგ.
  • თარგმანები დაამატეთ საერთო catalog.json-ში უნიკალური პრეფიქსით და ka/en/ru მნიშვნელობებით. მენიუს გვერდსა და SEO მისამართს სჭირდება ცალკე მარშრუტისა და ხილვადობის შემოწმება — მხოლოდ manifest ყველა ინტეგრაციას არ ქმნის.
  • სამიზნეა iOS 10.3+ JavaScript; ახალი სინტაქსი წინასწარ გარდაქმენით. გადაამოწმეთ თანამედროვე ბრაუზერებიც.