Jump to content


Photo
- - - - -

Core Element - Name

name core element

  • This topic is locked This topic is locked
16 replies to this topic

#11 woodman

woodman
  • Topic Starter
  • JBZoo User (rus)
  • User rate: 38.4
  • posts: 648
  • topics: 59

Posted 02 June 2015 - 11:05

Насколько я понимаю, ее нужно использовать в renderSubmission, но, почему-то, спецсимвол \n не преобразуется в <br>, хотя идея отличная


  • 0

#12 SmetDenis

SmetDenis
  • Administrators
  • User rate: 139.4
  • posts: 16232
  • topics: 200

Posted 03 June 2015 - 07:43

почему-то, спецсимвол \n не преобразуется в
, хотя идея отличная

Тогда остается только заменять вручную
 
$text = str_replace(array("\r\n", "\r", "\n"), "<br/>", $text);

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



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


#13 woodman

woodman
  • Topic Starter
  • JBZoo User (rus)
  • User rate: 38.4
  • posts: 648
  • topics: 59

Posted 03 June 2015 - 08:51

Тогда остается только заменять вручную
 

$text = str_replace(array("\r\n", "\r", "\n"), "<br/>", $text);

и где это записать, в renderSubmission?


  • 0

#14 SmetDenis

SmetDenis
  • Administrators
  • User rate: 139.4
  • posts: 16232
  • topics: 200

Posted 04 June 2015 - 07:28

Метод renderSubmission отвечает за вывод поля в форме подачи материала.
edit - за вывод в панели управления (для имени материала его не изменить через элемент)
render - вывод на сайте

Соответственно, нам нужно изменить render и renderSubmission
Примерно так
public function renderSubmission($params = array()) {
    return '<textarea name="'.$this->getControlName('value').'">'.htmlspecialchars($this->_item->name).'</textarea>';
}
    public function render($params = array())
    {
        if (!empty($this->_item)) {

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

            if ($params->get('link_to_item', false) && $this->_item->getState()) {

                return '<a title="' . htmlspecialchars($this->_item->name) . '" href="' . $this->app->route->item($this->_item) . '">' . $this->_item->name . '</a>';

            } else {

                $name = $this->_item->name;
                $name = str_replace(array("\r\n", "\r", "\n"), "<br/>", $name);
                return $name;
            }
        }
    }

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



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


#15 woodman

woodman
  • Topic Starter
  • JBZoo User (rus)
  • User rate: 38.4
  • posts: 648
  • topics: 59

Posted 04 June 2015 - 09:02

К сожалению, не работает.

То ли условие не срабатывает, то ли функция просто не делает то, что должна.


  • 0

#16 SmetDenis

SmetDenis
  • Administrators
  • User rate: 139.4
  • posts: 16232
  • topics: 200

Posted 04 June 2015 - 09:37

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



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


#17 SmetDenis

SmetDenis
  • Administrators
  • User rate: 139.4
  • posts: 16232
  • topics: 200

Posted 06 June 2015 - 12:06   Best Answer

Я понял в чем дело.

Имя не сохранится в базу данных с переносом, потому что используется поле varchar(255) которое не поддерживает переносы.

Нужно изменить в самой таблице _zoo_item
vcbd_200x0.png


И вот другой вариант функции, чтобы перенос был и в ссылках тоже.
	public function render($params = array())
    {
        if (!empty($this->_item)) {
            
            $name = $this->_item->name;
            $name = str_replace("\n", "<br/>", $name);
            
            $params = $this->app->data->create($params);
 
            if ($params->get('link_to_item', true) && $this->_item->getState()) {
 
                return '<a title="' . htmlspecialchars($this->_item->name) . '" href="' . $this->app->route->item($this->_item) . '">' . $name . '</a>';
 
            } else {

                return $name;
            }
        }
    }

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



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






Also tagged with one or more of these keywords: name, core element

Click to return to top of page in style!