Перейти к содержимому


Фотография
- - - - -

Как убрать пустые поля при экспорте?

экспорт пустые поля

Лучший Ответ SmetDenis , 25 August 2013 - 04:40

Попробуйте создать новый файл по адресу
media\zoo\applications\jbuniversal\elements\text\text.php

со следующим содержанием

<?php
/**
* @package   com_zoo
* @author    YOOtheme http://www.yootheme.com
* @copyright Copyright (C) YOOtheme GmbH
* @license   http://www.gnu.org/licenses/gpl.html GNU/GPL
*/

// no direct access
defined('_JEXEC') or die('Restricted access');

// register ElementRepeatable class
App::getInstance('zoo')->loader->register('ElementRepeatable', 'elements:repeatable/repeatable.php');

/*
   Class: ElementText
       The text element class
*/
class ElementText extends ElementRepeatable implements iRepeatSubmittable {

	/*
		Function: _hasValue
			Checks if the repeatables element's value is set.

	   Parameters:
			$params - render parameter

		Returns:
			Boolean - true, on success
	*/
	protected function _hasValue($params = array()) {
		$value = $this->get('value', $this->config->get('default'));
		return !empty($value) || $value === '0';
	}

	/*
		Function: _getSearchData
			Get repeatable elements search data.

		Returns:
			String - Search data
	*/
	protected function _getSearchData() {
		return $this->get('value', $this->config->get('default'));
	}

	/*
	   Function: _edit
	       Renders the repeatable edit form field.

	   Returns:
	       String - html
	*/
	protected function _edit() {
		return $this->app->html->_('control.text', $this->getControlName('value'), $this->get('value', $this->config->get('default')), 'size="60" maxlength="255"');
	}


	/*
		Function: _renderSubmission
			Renders the element in submission.

	   Parameters:
            $params - AppData submission parameters

		Returns:
			String - html
	*/
	public function _renderSubmission($params = array()) {
        return $this->_edit();
	}

    public function render($params = array()) {

   		$params = $this->app->data->create($params);
   		$result = array();

   		foreach ($this as $self) {

            $html = $this->_render($params);
            if (JString::trim($html)) {
                $result[] = $this->_render($params);
            }
   		}

   		return $this->app->element->applySeparators($params->get('separated_by'), $result);
   	}

}
проверка добавлена в последнем методе.

новый файл безопасно переопределит код стандартного элемента, т.е без изменений ядра. Перейти к сообщению


  • Закрытая тема Тема закрыта
Сообщений в теме: 8

#1 Василий

Василий

Отправлено 23 August 2013 - 11:48

Здравствуйте!

 

При экспорте товаров на сайт заметил, что пустые поля не убираются. Как этого можно избежать? 

 

Пустые поля образуются по той причине, что у одного товара три поля с описанием, у второго одно. Вот для второго и образуются пустые поля. Пример вот: смотрите поле "Габариты (мм)" (там в конце стоят "|||"). 

 

Василий. 


  • 0

#2 SmetDenis

SmetDenis

Отправлено 23 August 2013 - 17:15

А как выводится позиция габаритов в шаблоне?
Это обычное текстовое поле?
  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#3 Василий

Василий

Отправлено 23 August 2013 - 17:25

Да, это текстовое поле. 


  • 0

#4 Василий

Василий

Отправлено 23 August 2013 - 20:28

Мне правда нужно решить данную проблему ... пожалуйста. 


  • 0

#5 SmetDenis

SmetDenis

Отправлено 24 August 2013 - 04:26

Сегодня посмотрю, какой-нибудь хак в элементе и напишу быстрое решение.
  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#6 Василий

Василий

Отправлено 24 August 2013 - 08:51

Хорошо, спасибо, буду ждать.


  • 0

#7 SmetDenis

SmetDenis

Отправлено 25 August 2013 - 04:40   Лучший Ответ

Попробуйте создать новый файл по адресу
media\zoo\applications\jbuniversal\elements\text\text.php

со следующим содержанием
<?php
/**
* @package   com_zoo
* @author    YOOtheme http://www.yootheme.com
* @copyright Copyright (C) YOOtheme GmbH
* @license   http://www.gnu.org/licenses/gpl.html GNU/GPL
*/

// no direct access
defined('_JEXEC') or die('Restricted access');

// register ElementRepeatable class
App::getInstance('zoo')->loader->register('ElementRepeatable', 'elements:repeatable/repeatable.php');

/*
   Class: ElementText
       The text element class
*/
class ElementText extends ElementRepeatable implements iRepeatSubmittable {

	/*
		Function: _hasValue
			Checks if the repeatables element's value is set.

	   Parameters:
			$params - render parameter

		Returns:
			Boolean - true, on success
	*/
	protected function _hasValue($params = array()) {
		$value = $this->get('value', $this->config->get('default'));
		return !empty($value) || $value === '0';
	}

	/*
		Function: _getSearchData
			Get repeatable elements search data.

		Returns:
			String - Search data
	*/
	protected function _getSearchData() {
		return $this->get('value', $this->config->get('default'));
	}

	/*
	   Function: _edit
	       Renders the repeatable edit form field.

	   Returns:
	       String - html
	*/
	protected function _edit() {
		return $this->app->html->_('control.text', $this->getControlName('value'), $this->get('value', $this->config->get('default')), 'size="60" maxlength="255"');
	}


	/*
		Function: _renderSubmission
			Renders the element in submission.

	   Parameters:
            $params - AppData submission parameters

		Returns:
			String - html
	*/
	public function _renderSubmission($params = array()) {
        return $this->_edit();
	}

    public function render($params = array()) {

   		$params = $this->app->data->create($params);
   		$result = array();

   		foreach ($this as $self) {

            $html = $this->_render($params);
            if (JString::trim($html)) {
                $result[] = $this->_render($params);
            }
   		}

   		return $this->app->element->applySeparators($params->get('separated_by'), $result);
   	}

}
проверка добавлена в последнем методе.

новый файл безопасно переопределит код стандартного элемента, т.е без изменений ядра.
  • 1
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#8 Василий

Василий

Отправлено 25 August 2013 - 07:59

Спасибо. Протестирую и отвечу.


  • 0

#9 Василий

Василий

Отправлено 27 August 2013 - 20:32

Благодарю. Всё работает. 


  • 0





Темы с аналогичным тегами экспорт, пустые поля

Click to return to top of page in style!