Escolar Documentos
Profissional Documentos
Cultura Documentos
Daiane Alves
Jigsaw - Gerador de sites @daianealves
+ FOLLOW
Daiane Alves Dec 7 '19 Updated on Dec 10, 2019 ・5 min read
work
#php #laravel #blade #staticsite CFO at Lyseon Tech Soluções
Tecnológicas
location
Jigsaw é um framework baseado em Laravel que gera site estático em PHP. joined
Nov 9, 2019
Foi desenvolvido pela empresa Tighten em maio de 2015, possui uma boa
documentação e a comunidade é bem ativa.
Trata-se de uma aplicação que você pode utilizar em seu computador e que
tem como saída os arquivos estáticos como: HTML, CSS e JavaScript.
5 3 2 DISCUSS
Seu deploy pode ser feito em qualquer servidor web que provê conteúdo
estático e se não quiser ter custos, pode publicar no GitHub Pages.
Iniciando um projeto
Para iniciar um projeto com Jigsaw é bem simples! Primeiro você deve abrir
o terminal, criar uma pasta com o nome do seu projeto e em seguida acessar
sua pasta. Para isso digite os seguintes comandos:
Inicializando o projeto
./vendor/bin/jigsaw init
Sempre que fizer alguma alteração e quiser acompanhar terá que rodar o
build pois ele não carrega automaticamente as alterações.
./vendor/bin/jigsaw build
./vendor/bin/jigsaw serve
npm install
Tipos de conteúdo
Todo o conteúdo do seu site deve ser armazenado na pasta source. O Jigsaw
permite criar arquivos usando vários formatos, como:
Laravel's Blade
Markdown
Ou vários outros tipos de arquivo
Laravel's Blade
Markdown
Para este tutorial, optei por mostrar como criar os arquivos usando
Markdown.
Com ela é possível marcar títulos, listas, tabelas, etc., de forma muito mais
limpa, legível e precisa, do que se fosse fazer com HTML que é muito
verboso.
Configurações do site
Uma maneira de agilizar o trabalho é definindo variáveis de configuração do
site. Imaginem que, por exemplo, o e-mail esteja disponível em diversas
partes do site e que por algum motivo você tenha que alterar. Você até
poderia utilizar um find/replace, mas com o Jigsaw é muito simples. Basta
adicionar o email no array do arquivo config.php que será acessível em
todo projeto, como uma propriedade do objeto $page .
<?php
return [
'contact_email' => 'support@example.com',
];
@extends('_layouts.master')
@section('content')
<p>Entre em contato {{ $page->contact_email }}</p>
@stop
Helpers
Além de armazenar variáveis no arquivo config.php , podemos definir
helpers adicionando uma chave com o nome da função. Os helpers são
chamados referenciando o nome do método no objeto $page em qualquer
arquivo.
Veja o exemplo:
<?php
return [
'company' => 'Lyseon Tech',
'selected' => function ($page, $section) {
return str_contains($page->getPath(), $section) ? 'selected' : '';
},
];
Depois disso, dentro do diretório source , crie a pasta _partials (nela você
pode dividir o seu site em partes como menu e footer). Agora, podemos
criar um menu que destaque se uma página está selecionada, para isso crie o
arquivo: _menu.blade.php e nele coloque o seguinte código:
<style>
.selected{
font-weight: bold;
color: red;
}
</style>
Ps: Ignore o style junto com o html, usei apenas para exemplificar.
No arquivo _layouts/master.blade.php inclua o menu digitando
@include('_partials._menu')
E por último, para que você consiga ver seu menu funcionando, é preciso
criar um arquivo no diretório source , nesse exemplo criei o arquivo about
(Sobre nós).
Prontinho! Se estiver usando o Browsersync você já consegue ver o menu
funcionando no seu navegador.
Collections
O Jigsaw fornece recursos trabalhar com collections. As collections podem
ser usadas para gerar páginas como por exemplo de postagens de blog ou
artigos. Pode ser usada também para incorporar blocos de conteúdo de uma
página, como biografias da equipe, descrições de produtos ou um portfólio
de projetos.
Para criar uma collection é bem simples, crie uma chave chamada collections
no array de configuração do arquivo config.php . Cada collection deve ser
indicada pelo nome da collection (normalmente, no plural), seguido por um
array de configurações.
Veja o exemplo a seguir:
<?php
return [
'company' => 'Lyseon Tech',
'contact_email' => 'support@tighten.co',
'collections' => [
'posts' => [
'path' => 'blog/{date|Y-m-d}/{filename}',
'author' => 'Daiane',
],
],
];
@extends('_layouts.master')
@section('body')
<h1>{{ $page->title }}</h1>
<p>By {{ $page->author }} • {{ date('F j, Y', $page->date) }}</p>
@yield('content')
<p>Listagem:</p>
<ul>
@foreach ($posts as $post)
<li>
<a class="{{ $page->selected($post->_meta->url[0]) }}" href="{{$post->_meta->url[0]}}">{{ $
</li>
@endforeach
</ul>
@endsection
---
extends: _layouts.post
title: "Meu primeiro Post"
author: Daiane
date: 2017-03-23
section: content
---
@extends('_layouts.master')
@section('body')
<ul>
@foreach ($posts as $post)
<li><a href="{{$post->_meta->url[0]}}">{{ $post->title }}</a></li>
@endforeach
</ul>
<h1>Listagem de posts</h1>
@endsection
Veja também:
documentaçãção do Jigsaw
PREVIEW SUBMIT
Dec 8 '19
Mohd Samgan Khan
@daianealves I tried this, but facing the following issue, I tried to get to git repo but the
link is not working, else I would have raised an issue...
2 REPLY
Dec 8 '19
Mohd Samgan Khan
λ jigsaw init
0 C:\laragon\www\jigswa\vendor\tightenco\jigsaw\jigsaw(8):
require_once()
1 {main}
thrown in C:\laragon\www\jigswa\vendor\tightenco\jigsaw\jigsaw-core.php on line 55
2 REPLY
Dec 10 '19
Daiane Alves Author
You must first use jigsaw init to install jigsaw via composer
1 REPLY
Dec 10 '19
Mohd Samgan Khan
2 THREAD
Dec 10 '19
Daiane Alves Author
Try this:
1- Create a new folder
2- Enter your folder: cd my-site
3- Type: composer require tightenco/jigsaw
4- ./vendor/bin/jigsaw init
5- ./vendor/bin/jigsaw build
6- ./vendor/bin/jigsaw server
1 REPLY
159 8