Some Like it Neat is a Minimal Starter theme that is Responsive out of the box. It uses Sass along with Bourbon Neat for help with Responsive grids. It's based on _s and is pretty rad.
Bourbon provides a lightweight Sass library (similar to Compass).
Neat extends bourbon and provides a nice and lightweight grid framework as a base for this project. This theme now uses CSS Grid to manage layouts. I recommend that you use CSS Grid to build your layouts going forward. Support is pretty darn good for CSS Grid. Neat has been left here and it's used primarily for breakpoint variables. If you still wish to use Neat (and it is a great framework) you may do so. But we'll be looking to remove Neat here eventually (now I have to come up with a new name for this theme).
Bitters is baked-in, too! You get some basic nifty styles out of the gate.
Underscores (_s) based theme. There's smarter folks than me building great sh*t (http://underscores.me)
Sass. We're using it and to update this theme you should be cozy with it or get ready to learn how to use. If you don't know Sass, you should definitely jump in. The water's fine and you'll thank me later. I accept thanks in burritos, doritos, fritos and cheetos only.
Theme Hook Alliance — One of the things I learned to love about working with Frameworks were their hooks. Thematic and Genesis introduced me to the notion. Since them I've been using them like they're going out of style. When I set out to make my own starter theme I wanted to make something that had "just the right amount" of features for me. I knew I needed hooks. The THA project was intro'd to me by Brandon Dove, at the OCWP (http://ocwp.org) developer's day meetup. Thought it was super neat. So I bundled that hot mess right into this thing.
Gulpjs Task Automation — This has been a biggy! Lots of work done and yet to-do. Your gulpjs file will help automate nifty tasks such as autoprefixing, compiling and minifying Sass files; cleaning up your theme directory and even packaging/zipping your theme! Cool. Right?
Built for Accessibility
Flexnav Menu System and Hover Intent
TGM PLugin Activation
NPM for managing packages and dependencies
Infinite Scroll Support for Jetpack
Pull requests welcome...
There's a lot to this theme, but don't be intimidated, even if you're not an "advanced-level" developer, you got this! I'll be honest with you, I don't know how half the stuff here works, it just sorta does. =)
Bourbon and Neat are used for providing simple Sass mixins and leverages a simple grid system that let's you markup your theme how you want, while you use their math, unlike Bootstrap and Foundation, presently.
There are things you need to install before you hack away at things. There are three package managers to install: Node (which installs the NPM package manager). Each of these have dependencies that also need to be installed. Fortunately, this is all "fairly easy".
Once you have Node, Sass and the theme installed, the next step is simple enough.
(note - you may have to run the following commands as admin or sudo)
Open a command prompt/terminal and navigate to your theme's root directory. Run the following two commands:
composer install
- Installs Composer and the dependencies needed for custom post meta management.
npm install
- Installs all the necessary Gulp plugins to help with task automation such as Sass compiling and browser-sync! You'll need to run this step on each of your projects, going forward.
Be sure to go into gulpfile.js and setup the project configuration variables.
This is important for using Browser-Sync with your project. Make sure in gulpfile.js that you set the project
variable to the appropriate name for your project URL. Default is "yourlocal.dev"
In pre 1.1.11 builds of Some Like it Neat, Style.scss would process/compile all of your changes to the various Sass files. This has changed in 1.1.11. We have added rtl support using a set of mixins from the Bi-App-Sass view project which helps us generate styles for RTL configurations. All LTR styles are output to style.css and RTL styles are output to rtl.css.
There are a couple of tasks built into Some Like it Neat to help get you going.
gulp
This command simply starts up Gulp and watches your scss, js and php filder for changes, writes them out and refreshes the browser for you.gulp build
This command removes unneccessary files and packs up the required files into a nice and neat, installable, zip package. Honestly, this is here because I was uploading my theme to the WP.org uploader so many times... Epitome of the laze.Each task such as 'js', 'images' or 'browser-sync' may be started individually. Although, the only one of them you'd do that with is the 'images' task since that's not auto-optimizing at the moment.
When developing your theme note that the output style.css file and production.js file are in expanded (readable) format if WP_DEBUG is set to true in wp-config.php. If WP_DEBUG is NOT set to true, then style.css and production.js are minified for you. While developing your theme, I recommend that WP_DEBUG is set to true. Just a good practice anyway.
A Note About Javascript Files - If you have JS files that are not managed by NPM, you can place those files inside the assets/js/app folder. Why? Gulp runs a task that concatenates js files in that directory and checks them for errors, which is pretty nifty. You can modify Gulp task behavior to suit your tastes, of course. However, note that those scripts will load on all pages.
Extra Note! If you've set WP Debug true, the concatenated file is unminified and if set to false, then the concatenated file is minified. If you don't intend to use this functionality, you should comment-out or remove the lines referring to development.js and production-min.js.
What is Theme Hook Alliance? It's a pretty rad project - https://github.com/zamoose/themehookalliance. I'm a big fan of hooks, personally. They provide a means to keep things within the theme cleaner and easier to maintain.
"The Theme Hook Alliance is a community-driven effort to agree on a set of third-party action hooks that THA themes pledge to implement in order to give that desired consistency."
Infinite Scroll is now supported. Requires that you have Jetpack installed and have configured the plugin to use Infinite Scroll. Additionally, you'll need to go into the Customizer to add theme support. Why? While redundant, didn't really want code running that wasn't in use... Aaand seemed like a nice use of the Customizer. If you hate it, open an issue. =)
Why use these in this project? It's a philosophical thing. I've used Foundation and Bootstrap before. I like them; they're both great, great projects run by smarter people than myself. So what's the philosophical bit? To achieve the responsiveness required of various projects, I would have to tear up my HTML, input my own selector classes and what have you, in addition to changing my css. I didn't like it. I heard about Neat (http://neat.bourbon.io) and really liked their approach to a grid framework. You keep your HTML structure the way you like and all of the styling in your Sass files
I don't see why not. I haven't done it yet. ( I'm using a child theme on http://alexhasnicehair.com ) But with the addition of Theme Hook Alliance, I'd say 'Some Like it Neat' would make for a good Parent Theme for your project and certainly more ideal if you're going to make significant edits (and why wouldn't you? By default it looks like pooh!).
What I recommend is that you generate your child theme, setup your child theme folder, style.css file. Additionally, I think it's just easier to copy the 'library' folder from the parent and place it into the child theme.
I'm gonna recommend you [have a look at this issue here] (https://github.com/digisavvy/some-like-it-neat/issues/58) for details on how to go about this.
I haven't listed out every single file here; but I have listed out the files that you'll most likely work with during a project.
Theme Root
│ ├── assets
│ │ ├── css
│ │ | ├── layouts
| | | | ├── navigation-offcanvas.css
│ │ | └── vendor
| | | | ├── flexnav.css
| | | ├── style-min.css
| | | └── style.css
│ | └── js
│ │ | ├── app
│ │ | └── vendor
│ | | | ├── flexnav
│ | | | ├── hoverintent
│ | | | ├── modernizr
│ | | | └── selectivizr
│ │ | ├── custom-offcanvas.js
│ │ | ├── production-min.js
│ │ | └── development.js
│ | └── maps
│ │ ├── sass
│ │ | └── abstracts
│ | | | ├── __abstracts.scss
│ | | | ├── _accessibility.scss
│ | | | ├── _typography.scss
│ | | | ├── _variables.scss
│ │ | └── base
│ | | | ├── __base_dir.scss
│ | | | ├── _normalize.scss
│ │ | └── components
│ | | | ├── __components-dir.scss
│ | | | ├── _buttons.scss
│ | | | ├── _infinite-scroll.scss
│ | | | ├── _media.scss
│ │ | └── layouts
│ | | | ├── __layouts-dir.scss
│ | | | ├── _content.scss
│ | | | ├── _footer.scss
│ | | | ├── _header.scss
│ | | | ├── _navigation.scss
│ | | | ├── _sidebar.scss
│ | | | ├── _structure.scss
│ | | | └── navigation-offcanvas.scss
│ │ | └── templates
│ | | | ├── __templates-dir.scss
│ | | | ├── _template-2col-l-sidebar.scss
│ | | | ├── _template-2col-r-sidebar.scss
│ | | | ├── _template-full-width.scss
│ | | | ├── _template-landing-page.scss
│ │ | └── vendor
│ | | | ├── __vendor-dir.scss
│ | | | ├── _base.scss
│ | | | ├── _buttons.scss
│ | | | ├── _dashicons.scss
│ | | | ├── _grid-settings.scss
│ | | | ├── _layout.scss
│ | | | ├── _lists.scss
│ | | | └── _media.scss
│ | | | └── _tables.scss
│ | | | └── _typography.scss
│ | | | └── _variables.scss
│ | | | └── flexnav.scss
│ | ├── _app.scss
│ | ├── _grid-settings.scss
│ | └── style.scss
├── library
│ └── languages
│ │ ├── some_like_it_neat.pot
│ └── vendors
│ │ ├── cmb2
│ │ ├── customizer
│ │ ├── tgm-plugin-activation
│ │ ├── theme-hook-alliance
│ │ └── custom-header.php
│ │ └── extras.php
│ │ └── jetpack.php
│ │ └── meta.php
│ │ └── template-tags.php
│ ├── assets.php
│ ├── customizer-frontend-settings.php
│ ├── extras.php
│ ├── theme-setup.php
│ ├── vendor.php
│ ├── widgets.php
├── page-templates
│ └── template-parts
| | ├── content-aside.php
| | ├── content-audio.php
| | ├── content-chat.php
| | ├── content-gallery.php
| | ├── content-image.php
| | ├── content-link.php
| | ├── content-none.php
| | ├── content-page.php
| | ├── content-quote.php
| | ├── content-single.php
| | ├── content-status.php
| | ├── content-video.php
| | └── content.php
| ├── template-full-width.php
| ├── template-left-col.php
| └── template-right-col.php
| └── template-landing-page.php
├── 404.php
├── archive.php
├── comments.php
├── footer.php
├── functions.php
├── gulpfile.js
├── header.php
├── index.php
├── license.txt
├── package.json
├── page.php
├── README.md
├── rtl.css
├── search.png
├── searchform.php
├── sidebar.php
├── single.php
└── style.css
Your generous pull requests are welcome! Have a look at our contribution guide for details: Contribution Guide
A special thanks to all the folks who inspire me on a daily basis to "do more" with what I know and what I can contribute.
This theme is based on Underscores, (C) 2012-2013 Automattic, Inc.
CMB2
Flexnav, Copyright 2014 Jason Weaver.
TGM Plugin Activation, Copyright 2014 Thomas Griffin Media, Inc.
Theme Hook Alliance
Bourbon
Neat
Gulpjs
Hover Intent