{"id":24230,"date":"2021-05-14T12:01:00","date_gmt":"2021-05-14T09:01:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=24230"},"modified":"2021-10-17T21:00:05","modified_gmt":"2021-10-17T18:00:05","slug":"trix-avoimen-lahdekoodin-wysiwyg-editori-verkkosivustoille","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/fi\/trix-avoimen-lahdekoodin-wysiwyg-editori-verkkosivustoille\/","title":{"rendered":"Trix &#8211; avoimen l\u00e4hdekoodin WYSIWYG-editori verkkosivustoille"},"content":{"rendered":"<p>Rich text -editori tai WYSIWYG-editori ovat hy\u00f6dyllisi\u00e4 HTML-elementtej\u00e4 ja kuvia sis\u00e4lt\u00e4v\u00e4n kuvaavan sis\u00e4ll\u00f6n kirjoittamiseen. HTML textarea -tunnisteessa ei voi kirjoittaa sis\u00e4lt\u00f6\u00e4 HTML-tunnisteilla. Siksi suurin osa verkkosivustoista k\u00e4ytt\u00e4\u00e4 WYSIWYG HTML -editoria.<\/p>\n<p><a href=\"https:\/\/trix-editor.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Trix<\/a> on avoimen l\u00e4hdekoodin rikas tekstieditori Basecampilta. Koska sit\u00e4 k\u00e4ytet\u00e4\u00e4n Basecampissa, miljoonat ihmiset jo k\u00e4ytt\u00e4v\u00e4t sit\u00e4 sis\u00e4ll\u00f6n kirjoittamiseen. T\u00e4ss\u00e4 artikkelissa tutkitaan, miten Trix-editori lis\u00e4t\u00e4\u00e4n verkkosovelluksiisi.<\/p>\n<h3>Asennus<\/h3>\n<p>Trix is\u00e4nn\u00f6i pakettiaan <a href=\"https:\/\/github.com\/basecamp\/trix\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">GitHubissa,<\/a> jotta k\u00e4ytt\u00e4j\u00e4t voivat helposti k\u00e4ytt\u00e4\u00e4 t\u00e4t\u00e4 mukavaa editoria verkkosovelluksissaan. Aloittamiseksi sinun on ensin sis\u00e4llytett\u00e4v\u00e4 Trixin JS- ja CSS-tiedostot. Voit saada n\u00e4m\u00e4 tiedostot suoraan dist-kansioon <a href=\"https:\/\/github.com\/basecamp\/trix\/tree\/master\/dist\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">GitHub-<\/a> sivulta. Tai muuten, lataavat paketti ja kopioi <code>trix.js<\/code>ja <code>trix.css<\/code>tiedostoja.<\/p>\n<p>Sinun on my\u00f6s luotava 2 PHP-tiedostoa ja yksi lis\u00e4\u00e4 JS-tiedostoja. N\u00e4emme miksi ja miten n\u00e4it\u00e4 tiedostoja k\u00e4ytet\u00e4\u00e4n my\u00f6hemm\u00e4ss\u00e4 osassa. Kansiorakenteen tulee olla seuraava:<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20611-60820e5688ed8.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20611-60820e5688ed8.png\" alt=\"Trix - avoimen l\u00e4hdekoodin WYSIWYG-editori verkkosivustoille\" ><\/a><\/p>\n<p>Kirjoita seuraava koodi lis\u00e4t\u00e4ksesi Trix-editorin verkkosivullesi.<\/p>\n<p><strong>index.php<\/strong><\/p>\n<pre><code>&lt;link rel=\"stylesheet\" href=\"css\/trix.css\"&gt;\n&lt;script src=\"js\/trix.js\"&gt;&lt;\/script&gt;\n&lt;script src=\"js\/attachments.js\"&gt;&lt;\/script&gt;\n&lt;form method=\"post\"&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;input id=\"x\" type=\"hidden\" name=\"content\" value=\"\" \/&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;trix-editor input=\"x\"&gt;&lt;\/trix-editor&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;input type=\"submit\" name=\"submit\" value=\"Submit\" \/&gt;\n&lt;\/form&gt;<\/code><\/pre>\n<p>Yll\u00e4 olevaan koodiin lis\u00e4simme CSS- ja JS-tiedostot suoraan. Tietenkin sinun on noudatettava kehys- \/ CMS-ohjeita sis\u00e4llytt\u00e4\u00e4ksesi n\u00e4m\u00e4 tiedostot.<\/p>\n<p>Trix-editori liitt\u00e4\u00e4 kaiken kirjoitetun sis\u00e4ll\u00f6n piilotettuun kentt\u00e4\u00e4n, jonka olemme lis\u00e4nneet yll\u00e4. Kun l\u00e4het\u00e4t lomakkeen, jatka piilotettua kentt\u00e4\u00e4 saadaksesi sis\u00e4ll\u00f6n editorista. Pohjimmiltaan saat Trix-editorin sis\u00e4ll\u00f6n palvelinpuolelle k\u00e4ytt\u00e4m\u00e4ll\u00e4:<\/p>\n<pre><code>&lt;?php\necho $_POST['content']; \/\/here 'content' is the name given to hidden field<\/code><\/pre>\n<p>Samalla tavalla haluat esit\u00e4ytt\u00e4\u00e4 editorin sis\u00e4ll\u00f6ll\u00e4 ja siirt\u00e4\u00e4 sitten sis\u00e4ll\u00f6n piilotetun kent\u00e4n arvoattribuutteihin. Trix-editori t\u00e4ytt\u00e4\u00e4 sis\u00e4ll\u00f6n automaattisesti piilotetusta elementist\u00e4.<\/p>\n<p>Suorita sitten t\u00e4m\u00e4 tiedosto selaimessasi ja sinun pit\u00e4isi n\u00e4hd\u00e4 WYSIWYG-editori sivulla.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20611-60820e56c5c4f.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20611-60820e56c5c4f.png\" alt=\"Trix - avoimen l\u00e4hdekoodin WYSIWYG-editori verkkosivustoille\" ><\/a><\/p>\n<h3>L\u00e4het\u00e4 kuva Trix WYSIWYG Editoriin<\/h3>\n<p>He mainitsivat liitteen\u00e4 olevien tiedostojen tallentamisesta GitHub-asiakirjoissa.<\/p>\n<p>Trix hyv\u00e4ksyy tiedostot, jotka on vedetty tai liitetty editoriin, ja lis\u00e4\u00e4 ne asiakirjan liittein\u00e4. Jokainen liite katsotaan odottavaksi, kunnes tallennat sen et\u00e4n\u00e4 ja annat Trixille pysyv\u00e4n URL-osoitteen.<\/p>\n<p>Se tarkoittaa, ett\u00e4 sinun on otettava kuva editorista, l\u00e4hetett\u00e4v\u00e4 se palvelinpuolelle, l\u00e4hetett\u00e4v\u00e4 kuvat palvelimelle ja palautettava kuvan URL-osoite. T\u00e4m\u00e4n prosessin suorittamiseksi kirjoitamme JS- ja PHP-koodin seuraaviin vaiheisiin.<\/p>\n<p>Aloitetaan ensin JS-koodilla. Olet luonut <code>attachments.js<\/code>tiedoston &#8217;js&#8217; -hakemistoon. T\u00e4ll\u00e4 JS-tiedostolla on seuraava koodi.<\/p>\n<pre><code>(function() {\n\u00a0\u00a0\u00a0\u00a0var HOST = \"YOUR_DOMAIN_URL\/upload.php\"\n\u00a0\n\u00a0\u00a0\u00a0\u00a0addEventListener(\"trix-attachment-add\", function(event) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (event.attachment.file) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0uploadFileAttachment(event.attachment)\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0})\n\u00a0\n\u00a0\u00a0\u00a0\u00a0function uploadFileAttachment(attachment) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0uploadFile(attachment.file, setProgress, setAttributes)\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0function setProgress(progress) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0attachment.setUploadProgress(progress)\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0function setAttributes(attributes) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0attachment.setAttributes(attributes)\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0function uploadFile(file, progressCallback, successCallback) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0var formData = createFormData(file)\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0var xhr = new XMLHttpRequest()\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0xhr.open(\"POST\", HOST, true)\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0xhr.upload.addEventListener(\"progress\", function(event) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0var progress = event.loaded \/ event.total * 100\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0progressCallback(progress)\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0})\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0xhr.addEventListener(\"load\", function(event) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0var attributes = {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0url: xhr.responseText,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0href: xhr.responseText + \"?content-disposition=attachment\"\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0successCallback(attributes)\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0})\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0xhr.send(formData)\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0function createFormData(file) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0var data = new FormData()\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0data.append(\"Content-Type\", file.type)\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0data.append(\"file\", file)\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return data\n\u00a0\u00a0\u00a0\u00a0}\n})();<\/code><\/pre>\n<p>Korvaa paikkamerkki &#8217;YOUR_DOMAIN_URL&#8217; todellisella URL-osoitteellasi. Mit\u00e4 t\u00e4m\u00e4 koodi tekee, se kuuntelee <code>trix-attachment-add<\/code>tapahtumia, l\u00e4hett\u00e4\u00e4 liitteen <code>upload.php<\/code>tiedostoon. Palatessaan vastauksen palvelimelta se asettaa pysyv\u00e4n kuvan URL-osoitteen editorin m\u00e4\u00e4ritteisiin.<\/p>\n<p>Kirjoita lopuksi ladattava kuvakoodi <code>upload.php<\/code>tiedostoon.<\/p>\n<pre><code>&lt;?php\nif (!file_exists('uploads')) {\n\u00a0\n\u00a0\u00a0\u00a0\u00a0mkdir('uploads', 0777);\n}\n\u00a0\nmove_uploaded_file($_FILES['file']['tmp_name'], 'uploads\/'.$_FILES['file']['name']);\n\u00a0\necho \"YOUR_DOMAIN_URL\/uploads\/\".$_FILES['file']['name'];<\/code><\/pre>\n<p>Toivomme, ett\u00e4 ymm\u00e4rr\u00e4t kuinka lis\u00e4t\u00e4 Trix WYSIWYG -editori PHP: n avulla verkkosivustollesi. Haluamme kuulla ajatuksesi alla olevassa kommenttiosassa.<\/p>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/fi\/kuinka-asentaa-ja-kayttaa-ckeditoria-laravelissa\/\" title=\"Kuinka asentaa ja k\u00e4ytt\u00e4\u00e4 CKEditoria Laravelissa\">Kuinka asentaa ja k\u00e4ytt\u00e4\u00e4 CKEditoria Laravelissa<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/fi\/kuinka-asentaa-ja-kayttaa-tinymce-editoria-laravelissa\/\" title=\"Kuinka asentaa ja k\u00e4ytt\u00e4\u00e4 TinyMCE - WYSIWYG HTML Editoria Laravelissa\">Kuinka asentaa ja k\u00e4ytt\u00e4\u00e4 TinyMCE &#8211; WYSIWYG HTML Editoria Laravelissa<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Trix WYSIWYG -editori on Basecampin luoma avoimen l\u00e4hdekoodin projekti. Se on laajalti k\u00e4ytetty editori, ja t\u00e4ss\u00e4 artikkelissa n\u00e4yt\u00e4mme, kuinka t\u00e4m\u00e4 editori lis\u00e4t\u00e4\u00e4n<\/p>\n","protected":false},"author":1,"featured_media":20612,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[414],"tags":[843],"class_list":["post-24230","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-sekalaisia","tag-affiai-fi"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/posts\/24230","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/comments?post=24230"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/posts\/24230\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/media\/20612"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/media?parent=24230"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/categories?post=24230"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/tags?post=24230"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}