protected function parseTaxonomy()
{
$taxonomies = $this->parseConfigYaml('taxonomy.yml');
foreach ($taxonomies as $key => $taxonomy) {
if (!isset($taxonomy['name'])) {
$taxonomy['name'] = ucwords($taxonomy['slug']);
}
if (!isset($taxonomy['singular_name'])) {
if (isset($taxonomy['singular_slug'])) {
$taxonomy['singular_name'] = ucwords($taxonomy['singular_slug']);
} else {
$taxonomy['singular_name'] = ucwords($taxonomy['slug']);
}
}
if (!isset($taxonomy['slug'])) {
$taxonomy['slug'] = strtolower(Str::makeSafe($taxonomy['name']));
}
if (!isset($taxonomy['singular_slug'])) {
$taxonomy['singular_slug'] = strtolower(Str::makeSafe($taxonomy['singular_name']));
}
if (!isset($taxonomy['has_sortorder'])) {
$taxonomy['has_sortorder'] = false;
}
if (!isset($taxonomy['allow_spaces'])) {
$taxonomy['allow_spaces'] = false;
}
// Make sure the options are $key => $value pairs, and not have implied integers for keys.
if (!empty($taxonomy['options']) && is_array($taxonomy['options'])) {
$options = [];
foreach ($taxonomy['options'] as $optionkey => $optionvalue) {
if (is_numeric($optionkey)) {
$optionkey = Slugify::create()->slugify($optionvalue);
}
$options[$optionkey] = $optionvalue;
}
$taxonomy['options'] = $options;
}
// If taxonomy is like tags, set 'tagcloud' to true by default.
if ($taxonomy['behaves_like'] == 'tags' && !isset($taxonomy['tagcloud'])) {
$taxonomy['tagcloud'] = true;
}
$taxonomies[$key] = $taxonomy;
}
return $taxonomies;
}