{"id":27755,"date":"2021-05-14T12:31:00","date_gmt":"2021-05-14T09:31:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=27755"},"modified":"2021-10-18T03:47:16","modified_gmt":"2021-10-18T00:47:16","slug":"trix-edytor-wysiwyg-typu-open-source-dla-stron-internetowych","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/pl\/trix-edytor-wysiwyg-typu-open-source-dla-stron-internetowych\/","title":{"rendered":"Trix \u2014 edytor WYSIWYG typu open source dla stron internetowych"},"content":{"rendered":"<p>Edytor tekstu sformatowanego lub edytor WYSIWYG jest przydatny do pisania opisowej tre\u015bci zawieraj\u0105cej elementy i obrazy HTML. W znaczniku HTML textarea nie mo\u017cna pisa\u0107 tre\u015bci za pomoc\u0105 znacznik\u00f3w HTML. Dlatego wi\u0119kszo\u015b\u0107 stron korzysta z edytora HTML WYSIWYG.<\/p>\n<p><a href=\"https:\/\/trix-editor.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Trix<\/a> to edytor tekstu sformatowanego typu open source firmy Basecamp. Poniewa\u017c jest u\u017cywany w Basecampie, miliony ludzi ju\u017c u\u017cywaj\u0105 go do pisania swoich tre\u015bci. W tym artykule dowiemy si\u0119, jak doda\u0107 edytor Trix do swoich aplikacji internetowych.<\/p>\n<h3>Instalacja<\/h3>\n<p>Trix hostowa\u0142 sw\u00f3j pakiet na <a href=\"https:\/\/github.com\/basecamp\/trix\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">GitHub,<\/a> wi\u0119c u\u017cytkownicy mog\u0105 z \u0142atwo\u015bci\u0105 korzysta\u0107 z tego \u0142adnego edytora w swoich aplikacjach internetowych. Aby rozpocz\u0105\u0107, musisz najpierw do\u0142\u0105czy\u0107 pliki JS i CSS Trix. Mo\u017cesz pobra\u0107 te pliki bezpo\u015brednio do folderu dist z ich strony <a href=\"https:\/\/github.com\/basecamp\/trix\/tree\/master\/dist\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">GitHub<\/a>. Lub pobierz ich pakiet i kopi\u0119 <code>trix.js<\/code>i <code>trix.css<\/code>pliki.<\/p>\n<p>Musisz tak\u017ce utworzy\u0107 2 pliki PHP i jeszcze jeden plik JS. W dalszej cz\u0119\u015bci dowiemy si\u0119, dlaczego i jak korzysta\u0107 z tych plik\u00f3w. Twoja struktura folder\u00f3w powinna wygl\u0105da\u0107 nast\u0119puj\u0105co:<\/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 \u2014 edytor WYSIWYG typu open source dla stron internetowych\" ><\/a><\/p>\n<p>Aby doda\u0107 edytor Trix na swojej stronie internetowej, napisz poni\u017cszy kod.<\/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>W powy\u017cszym kodzie dodali\u015bmy bezpo\u015brednio pliki CSS i JS. Oczywi\u015bcie powiniene\u015b post\u0119powa\u0107 zgodnie z wytycznymi dotycz\u0105cymi frameworka\/CMS, aby do\u0142\u0105czy\u0107 te pliki.<\/p>\n<p>Edytor Trix do\u0142\u0105cza ca\u0142\u0105 napisan\u0105 tre\u015b\u0107 do ukrytego pola, kt\u00f3re dodali\u015bmy powy\u017cej. A kiedy przesy\u0142asz formularz, powiniene\u015b przej\u015b\u0107 do ukrytego pola, aby pobra\u0107 tre\u015b\u0107 z edytora. Zasadniczo otrzymasz zawarto\u015b\u0107 edytora Trix po stronie serwera za pomoc\u0105:<\/p>\n<pre><code>&lt;?php\necho $_POST['content']; \/\/here 'content' is the name given to hidden field<\/code><\/pre>\n<p>W ten sam spos\u00f3b chcesz wst\u0119pnie wype\u0142ni\u0107 edytor tre\u015bci\u0105, a nast\u0119pnie przekaza\u0107 tre\u015b\u0107 w atrybutach warto\u015bci ukrytego pola. Edytor Trix automatycznie wype\u0142nia zawarto\u015b\u0107 z ukrytego elementu.<\/p>\n<p>Nast\u0119pnie uruchom ten plik w przegl\u0105darce i powiniene\u015b zobaczy\u0107 na stronie edytor WYSIWYG.<\/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 \u2014 edytor WYSIWYG typu open source dla stron internetowych\" ><\/a><\/p>\n<h3>Prze\u015blij obraz w edytorze Trix WYSIWYG<\/h3>\n<p>W dokumentacji GitHub wspominali o przechowywaniu za\u0142\u0105czonych plik\u00f3w.<\/p>\n<p>Trix automatycznie akceptuje pliki przeci\u0105gane lub wklejane do edytora i wstawia je jako za\u0142\u0105czniki do dokumentu. Ka\u017cdy za\u0142\u0105cznik jest uwa\u017cany za oczekuj\u0105cy, dop\u00f3ki nie przechowujesz go zdalnie i nie udost\u0119pnisz Trix sta\u0142ego adresu URL.<\/p>\n<p>Oznacza to, \u017ce musisz pobra\u0107 obraz z edytora, wys\u0142a\u0107 go po stronie serwera, przes\u0142a\u0107 obrazy na serwer i zwr\u00f3ci\u0107 adres URL obrazu. Aby wykona\u0107 ten proces, w kolejnych krokach napiszemy kod JS i PHP.<\/p>\n<p>Najpierw zacznijmy od kodu JS. Utworzy\u0142e\u015b <code>attachments.js<\/code>plik w katalogu 'js&#8217;. Ten plik JS b\u0119dzie mia\u0142 nast\u0119puj\u0105cy kod.<\/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>Zast\u0105p symbol zast\u0119pczy \u201eYOUR_DOMAIN_URL&quot; swoim rzeczywistym adresem URL. To, co robi ten kod, to nas\u0142uchiwanie <code>trix-attachment-add<\/code>zdarze\u0144, wysy\u0142anie za\u0142\u0105cznika do <code>upload.php<\/code>pliku. Po zwr\u00f3ceniu odpowiedzi z serwera ustawia sta\u0142y adres URL obrazu w atrybutach edytora.<\/p>\n<p>Na koniec zapisz w pliku kod obrazu, kt\u00f3ry chcesz <code>upload.php<\/code>przes\u0142a\u0107.<\/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>Mamy nadziej\u0119, \u017ce rozumiesz, jak doda\u0107 edytor Trix WYSIWYG za pomoc\u0105 PHP do swojej witryny. Chcieliby\u015bmy pozna\u0107 Twoje przemy\u015blenia w sekcji komentarzy poni\u017cej.<\/p>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/pl\/jak-zainstalowac-i-uzywac-ckeditor-w-laravel\/\" title=\"Jak zainstalowa\u0107 i u\u017cywa\u0107 CKEditor w Laravel?\">Jak zainstalowa\u0107 i u\u017cywa\u0107 CKEditor w Laravel?<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/pl\/jak-zainstalowac-i-uzywac-edytora-tinymce-w-laravel\/\" title=\"Jak zainstalowa\u0107 i u\u017cywa\u0107 TinyMCE \u2013 edytora HTML WYSIWYG w Laravel\">Jak zainstalowa\u0107 i u\u017cywa\u0107 TinyMCE \u2013 edytora HTML WYSIWYG w Laravel<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">\u0179r\u00f3d\u0142o nagrywania:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Edytor Trix WYSIWYG to projekt open source stworzony przez Basecamp. Jest to powszechnie u\u017cywany edytor, a w tym artykule pokazujemy, jak doda\u0107 ten edytor w<\/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":[416],"tags":[847],"class_list":["post-27755","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-roznorodny","tag-affiai-pl"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/posts\/27755","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/comments?post=27755"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/posts\/27755\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/media\/20612"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/media?parent=27755"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/categories?post=27755"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/tags?post=27755"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}