Markdown to świetne narzędzie mające bardzo duże zastosowanie. Dzięki niemu w bardzo prosty sposób możemy formatować tekst, co więcej nie musimy znać składni języka HTML a jedynie kilka prostych oznaczeń. Dobrym zastosowaniem tego narzędzia jest system komentarzy. Z jednej strony blokujemy jawnie korzystanie z tagów html ze względów bezpieczeństwa, a z drugiej strony pozwalamy użytkownikom na bezpieczne formatowanie swojego tekstu.
Jak to zrobić w Kohana?
Implementacja jest bardzo prosta wystarczy znaleźć odpowiedni moduł na GitHub a następnie zacząć z niego korzystać. Ja znalazłem taki https://github.com/aptgraph/kohana-markdown moduł i na podstawie niego będzie ten artykuł.
Instalacja
Klonujemy repozytorium do folderu /modules korzystam pod Windowsem z Git Bash
git clone git://github.com/stroppytux/kohana-markdown.git modules/markdown
Możesz również zrobić to ręcznie. Pobrać pliki z repozytorium. W katalogu /modules utworzyć folder /modules/markdown i wrzucić tam pobrane pliki. Należy jednak pamiętać aby w w folderze markdown znalazły się pliki
classes config README.md
Konfiguracja
Kolejnym krokiem jest konfiguracja, czyli klasycznie przenosimy plik markdown.php z folderu /modules/markdown/config do /application/config
Możemy zrobić to dużo szybciej wykonując komendę w Git Bash
cp modules/markdown/config/markdown.php application/config/
W ustawieniach najbardziej nas interesuje opcja type, która może przyjmować wartość xhtml oraz html . W tym miejscu mówimy programowi czy ma generować kod zgodny z html czy xhtml, który wybrać oczywiście zależy od tego jak napisana jest nasza strona.
W /application/bootrstrap.php inicjalizujemy nasz nowy moduł po przez dodanie nowej linii kodu
'markdown' => MODPATH.'markdown', // Markdown module
Markdown w akcji
Przykładowy controller
<?php defined('SYSPATH') or die('No direct script access.'); class Controller_Post extends Controller_Default { public function action_index() { $this->template->content = View::factory('front/post')->bind('comments', $comm); $comm = View::factory('front/comments')->bind('comments', $commsData); $commsData = ORM::factory('comment')->find_all(); if (isset($_POST['save-comm'])) { $comData = ORM::factory('comment'); $comData->post_id = $this->request->param('id'); $comData->poster = Arr::get($_POST, 'poster'); $comData->content = Markdown::instance()->transform(Security::encode_php_tags(Arr::get($_POST, 'content'))); //Security::encode_php_tags($str) spowoduje, że tagi html będą wyświetlane jak zwykły tekst. //Markdown::instance()->transform zamieni znaczniki Markdown na kod html. $comData->save(); } } } ?>

Software Developer | .NET and Angular enthusiast | 3D Printing fanatic