buzzingpixel / filecontent
Add flat file content capability to your CraftCMS site
Installs: 11
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 1
Forks: 0
Open Issues: 0
Type:craft-plugin
pkg:composer/buzzingpixel/filecontent
Requires
- php: >=7.0.0
- craftcms/cms: ^3.0.0-beta.29
- mnapoli/front-yaml: ^1.5
- roave/security-advisories: dev-master
- symfony/filesystem: ^2.7 || ^3.0
This package is auto-updated.
Last update: 2025-10-16 21:45:41 UTC
README
Add flat file content capability to your CraftCMS site
A Craft 3 plugin that adds Twig variables for getting flat file content.
Installing
composer require buzzingpixel/filecontent
Configuration
There is one globally configurable option: basePath. This tells the plugin where to look for file content. By default, it looks in CRAFT_BASE_PATH . '/fileContent'.
Usage
load
Example:
{% set pageContent = craft.filecontent.load('my/custom/path') %}
If my/custom/path is a directory, the directory will be searched recursively for .md files, .json files, and .php files. Each of those files parsed contents will be added to an array with the filename as the key.
If my/custom/path.md exists, the contents of that file will be parsed and returned.
If my/custom/path.json exists, the contents of that file will be parsed and returned.
If my/custom/path.php exists, the contents of that file will be parsed and returned.
Markdown files are parsed through a Yaml front matter parser. The content portion of the markdown file is placed in a array key called 'content'.
JSON files are parsed as expected.
PHP files must return an array.
loadListings
Example:
{% set blogIndex = craft.filecontent.loadListings('my/custom/path', {
offset: 10,
limit: 10,
sort: 'asc'
}) %}
All files in the specified directory are loaded and returned. The file name format is as follows: 2015-10-26--04-00-pm--my-post-slug.md.
.json and .php are also accepted.
If index.md, index.json, and index.php is found in the directory, it's contents will be added on the key meta and does not factor in to count, limit, and offset.
loadListingBySlug
Example:
{% set blogPost = craft.filecontent.loadListingBySlug('my/custom/path', 'my-slug') %}
Get's a file post content by slug.
readFileContents
Example:
{% set criticalCss = craft.filecontent.readFileContents(cricitalCssPath)|raw %}
Reads any file's raw text content. As this is not related to the flat file content functionality, it does not look in the configured basepath, but instead defaults to $_SERVER['DOCUMENT_ROOT']. You can optionally specify a second parameter as the base path.
License
Copyright 2017 BuzzingPixel, LLC
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.