Best Answer Станислав , 08 August 2013 - 14:22
Создаем новый файл media/zoo/applications/jbuniversal/framework/elements/category/layout_item_columns.php
<?php
/**
* JBZoo App is universal Joomla CCK, application for YooTheme Zoo component
*
* @package jbzoo
* @version 2.x Pro
* @author JBZoo App http://jbzoo.com
* @copyright Copyright (C) JBZoo.com, All rights reserved.
* @license http://jbzoo.com/license-pro.php JBZoo Licence
* @coder Denis Smetannikov <denis@jbzoo.com>
*/
// no direct access
defined('_JEXEC') or die('Restricted access');
/**
* Class JBCSVCategoryLayout_item_columns
*/
class JBCSVCategoryLayout_item_columns extends JBCSVCategory
{
/**
* @return string
*/
public function toCSV()
{
return $this->_category->params->get('config.layout_item_columns');
}
/**
* @param $value
* @return Category|null
*/
public function fromCSV($value)
{
$this->_category->params->set('config.layout_item_columns', $this->_getString($value));
return $this->_category;
}
}
Вносим изменения в файле media/zoo/applications/jbuniversal/framework/helpers/jbcsvmapper.php
public function getCategory(Category $category)
{
return array(
'id' => $this->_csvcell->createCategory('id', $category, 'category')->toCSV(),
'name' => $this->_csvcell->createCategory('name', $category, 'category')->toCSV(),
'alias' => $this->_csvcell->createCategory('alias', $category, 'category')->toCSV(),
'description' => $this->_csvcell->createCategory('description', $category, 'category')->toCSV(),
'parent' => $this->_csvcell->createCategory('parent', $category, 'category')->toCSV(),
'ordering' => $this->_csvcell->createCategory('ordering', $category, 'category')->toCSV(),
'published' => $this->_csvcell->createCategory('published', $category, 'category')->toCSV(),
'title' => $this->_csvcell->createCategory('title', $category, 'category')->toCSV(),
'subtitle' => $this->_csvcell->createCategory('subtitle', $category, 'category')->toCSV(),
'image' => $this->_csvcell->createCategory('image', $category, 'category')->toCSV(),
'teaser_text' => $this->_csvcell->createCategory('teaser_text', $category, 'category')->toCSV(),
'teaser_image' => $this->_csvcell->createCategory('teaser_image', $category, 'category')->toCSV(),
'metadata_title' => $this->_csvcell->createCategory('metadata_title', $category, 'category')->toCSV(),
'metadata_description' => $this->_csvcell->createCategory('metadata_description', $category, 'category')->toCSV(),
'metadata_keywords' => $this->_csvcell->createCategory('metadata_keywords', $category, 'category')->toCSV(),
'metadata_robots' => $this->_csvcell->createCategory('metadata_robots', $category, 'category')->toCSV(),
'metadata_author' => $this->_csvcell->createCategory('metadata_author', $category, 'category')->toCSV(),
// Добавлено
'layout_item_columns' => $this->_csvcell->createCategory('layout_item_columns', $category, 'category')->toCSV(),
);
}
public function getCategoryFields()
{
return array(
'core' => array(
'id' => JText::_('JBZOO_CATEGORY_ID'),
'name' => JText::_('JBZOO_CATEGORY_NAME'),
'alias' => JText::_('JBZOO_CATEGORY_ALIAS'),
'parent' => JText::_('JBZOO_CATEGORY_PARENT'),
'ordering' => JText::_('JBZOO_CATEGORY_ORDERING'),
'published' => JText::_('JBZOO_CATEGORY_PUBLISHED'),
),
'content' => array(
'title' => JText::_('JBZOO_CATEGORY_TITLE'),
'description' => JText::_('JBZOO_CATEGORY_DESCRIPTION'),
'subtitle' => JText::_('JBZOO_CATEGORY_SUBTITLE'),
'image' => JText::_('JBZOO_CATEGORY_IMAGE'),
'teaser_text' => JText::_('JBZOO_CATEGORY_TEASER_TEXT'),
'teaser_image' => JText::_('JBZOO_CATEGORY_TEASER_IMAGE'),
// Добавлено
'layout_item_columns' => JText::_('JBZOO_LAYOUT_ITEM_COLUMNS'),
),
'meta' => array(
'metadata_title' => JText::_('JBZOO_CATEGORY_METADATA_TITLE'),
'metadata_description' => JText::_('JBZOO_CATEGORY_METADATA_DESCRIPTION'),
'metadata_keywords' => JText::_('JBZOO_CATEGORY_METADATA_KEYWORDS'),
'metadata_robots' => JText::_('JBZOO_CATEGORY_METADATA_ROBOTS'),
'metadata_author' => JText::_('JBZOO_CATEGORY_METADATA_AUTHOR'),
)
);
}
public function categoryFieldToMeta($fieldName)
{
$fieldName = strtolower(trim($fieldName));
$assign = array(
'id' => array('group' => 'category', 'name' => 'id'),
'name' => array('group' => 'category', 'name' => 'name'),
'alias' => array('group' => 'category', 'name' => 'alias'),
'parent' => array('group' => 'category', 'name' => 'parent'),
'ordering' => array('group' => 'category', 'name' => 'ordering'),
'published' => array('group' => 'category', 'name' => 'published'),
'title' => array('group' => 'category', 'name' => 'title'),
'description' => array('group' => 'category', 'name' => 'description'),
'subtitle' => array('group' => 'category', 'name' => 'subtitle'),
'image' => array('group' => 'category', 'name' => 'image'),
'teaser_text' => array('group' => 'category', 'name' => 'teaser_text'),
'teaser_image' => array('group' => 'category', 'name' => 'teaser_image'),
'metadata_title' => array('group' => 'category', 'name' => 'metadata_title'),
'metadata_description' => array('group' => 'category', 'name' => 'metadata_description'),
'metadata_keywords' => array('group' => 'category', 'name' => 'metadata_keywords'),
'metadata_robots' => array('group' => 'category', 'name' => 'metadata_robots'),
'metadata_author' => array('group' => 'category', 'name' => 'metadata_author'),
// Добавлено
'layout_item_columns' => array('group' => 'category', 'name' => 'layout_item_columns'), // Добавлено
);
Ну и результат изменений - в группе "Контент" появляется новое поле "Колонка элементов". Но полагаю, что было бы лучше создать 2 отдельные группы для "расширенных" полей - "Настройки", "Шаблон" и поместить туда все тонкие настройки в соответствии с вкладками настроек категории.

Как я уже писал в предыдущем посте, изменять по сути надо совсем немного: надо создать дополнительные файлы классов для параметров из "Настройки" и "Шаблон", прописать в маппере 2 новые группы и там же дополнить поля импорта/экспорта категорий новыми полями.
Денис, по поводу большого количества полей и необходимости создавать их в CSV, то каждый может использовать то, что ему надо. Кому-то надо прописать размеры картинок, кому-то как мне - шаблон категорий. Использовать все поля же необязательно. Выпадающий список получится, конечно громоздкий, но мы ведь любим JBZoo именно за то, что он действительно Universal и позволяет делать множество настроек, которые недоступны в стандартном Zoo и других CCK.
Надеюсь на положительное решение и готов поучаствовать в рутинной работе, например по созданию файлов классов для каждой настройки, настроек шаблона и модификации маппера.
Go to the full post


This topic is locked








