Получить тест из блока на другой странице.

Любая помощь по установке/настройке/модификации concrete5

Получить тест из блока на другой странице.

Сообщение guyasyou » 05 фев 2013, 21:57 ,  »  Сообщение:#1

Переделываю шаблон page list. Появилась задача высосать текст из блока на подстранице и сократить.

Следующий вариант не подходит:
Код: Выделить всё
$a = new Area('Preview');
      $a->disableControls();
      $descr = $a->display($cobj);

Так как мне нужно сократить текст через
Код: Выделить всё
echo $textHelper->wordSafeShortText($text,$controller->truncateChars);


как получить текст из блока в пременную $text?
Ну или другие способы сокращение текста до N символов.
www.pure-web.ru - fullstack разработка сайтов и веб-приложений
Аватара пользователя
guyasyou
Администратор
 
Сообщения: 559
Зарегистрирован: 05 янв 2012, 12:29
Откуда: Новосибирск

Re: Получить тест из блока на другой странице.

Сообщение cmsservice » 06 фев 2013, 10:04 ,  »  Сообщение:#2

Только вчера делали нечто подобное. :)

Если известен cID страницы и имя позиции на которой лежит блок, то можно сделать так.

Код: Выделить всё
$page = Page::getByID($cID); // id подстраницы
$blocks = $page->getBlocks('Preview'); // получим все блоки в заданной позиции
foreach($blocks as $b) { // перебором блоков, найдем нужный
  if($b->btHandle==$sLocateHandle) break;  // здесь можно проверять по разным полям, какое для Вас удобнее
}
//...
// дальше уже работаете с моделью блока так как Вам нужно
С уважением, Константин
http://Переделка-сайтов.РФ
Индивидуальные решения на платформе Concrete5 для театров и производственно-торговых компаний.
Аватара пользователя
cmsservice
 
Сообщения: 763
Зарегистрирован: 10 окт 2010, 00:10
Откуда: Москва

Re: Получить тест из блока на другой странице.

Сообщение guyasyou » 06 фев 2013, 13:01 ,  »  Сообщение:#3

Я до объекта Block докапывался. Когда выводил его через var_dump, в глубинах объекта был и мой искомый текст. Тока вот как до него докопаться?
www.pure-web.ru - fullstack разработка сайтов и веб-приложений
Аватара пользователя
guyasyou
Администратор
 
Сообщения: 559
Зарегистрирован: 05 янв 2012, 12:29
Откуда: Новосибирск

Re: Получить тест из блока на другой странице.

Сообщение cmsservice » 06 фев 2013, 13:56 ,  »  Сообщение:#4

Правильно я понимаю, что искомый текст хранится в таблице блока в базе?

Тогда есть два выхода:
1. получаете через модель блока контроллер, он когда создается, то подгружает из базы данные, которые доступны через метод get контроллера.
2. тупо выбираете данные из базы, ведь у Вас есть bID (в модели). :)

Первый способ более правильный по философии программирования, а второй, боюсь, может оказаться более быстрым при правильном подходе :)
С уважением, Константин
http://Переделка-сайтов.РФ
Индивидуальные решения на платформе Concrete5 для театров и производственно-торговых компаний.
Аватара пользователя
cmsservice
 
Сообщения: 763
Зарегистрирован: 10 окт 2010, 00:10
Откуда: Москва

Re: Получить тест из блока на другой странице.

Сообщение Count_Raven » 08 фев 2013, 22:38 ,  »  Сообщение:#5

cmsservice писал(а):Правильно я понимаю, что искомый текст хранится в таблице блока в базе?

Тогда есть два выхода:
1. получаете через модель блока контроллер, он когда создается, то подгружает из базы данные, которые доступны через метод get контроллера.
2. тупо выбираете данные из базы, ведь у Вас есть bID (в модели). :)

Первый способ более правильный по философии программирования, а второй, боюсь, может оказаться более быстрым при правильном подходе :)


Он дамп объекта делает, нахрен ему база, если данные уже получены.
Контроллер уже доступен и объект уже инициализирован.

Работай уже с объектом или с его потомками. Loader::model - поехали!
Country Amiant - Regno All Rianto
Аватара пользователя
Count_Raven
Супермодератор
 
Сообщения: 1156
Зарегистрирован: 06 окт 2010, 15:00
Откуда: Country Amiant

Re: Получить тест из блока на другой странице.

Сообщение Count_Raven » 08 фев 2013, 22:50 ,  »  Сообщение:#6

Или я чего не понимаю, но загружай тогда контроллер блока, ему давай ID блока и получай его данные через контроллер. Что не так?
Country Amiant - Regno All Rianto
Аватара пользователя
Count_Raven
Супермодератор
 
Сообщения: 1156
Зарегистрирован: 06 окт 2010, 15:00
Откуда: Country Amiant

Re: Получить тест из блока на другой странице.

Сообщение cmsservice » 09 фев 2013, 00:21 ,  »  Сообщение:#7

Ему даже этого делать не надо, у модели блока контроллер запрашиваешь и вот он весь уже инициализированный.

Мы тут на днях делали для одного сайта, форма заказа на одной странице, а ее интерфейс еще может вызываться во всплывающем окне с двух других станиц, так вот мы из того, что установлен на странице заказа получаем параметры различные, заданные в дизайн-тайме. Все великолепно работает. ИМХО похожая задача.
С уважением, Константин
http://Переделка-сайтов.РФ
Индивидуальные решения на платформе Concrete5 для театров и производственно-торговых компаний.
Аватара пользователя
cmsservice
 
Сообщения: 763
Зарегистрирован: 10 окт 2010, 00:10
Откуда: Москва

Re: Получить тест из блока на другой странице.

Сообщение Count_Raven » 09 фев 2013, 00:42 ,  »  Сообщение:#8

cmsservice писал(а):Мы тут на днях делали для одного сайта, форма заказа на одной странице, а ее интерфейс еще может вызываться во всплывающем окне с двух других станиц, так вот мы из того, что установлен на странице заказа получаем параметры различные, заданные в дизайн-тайме. Все великолепно работает. ИМХО похожая задача.

Может офтопик, но в Concrete5 для повторяющихся элементов (прямо на странице или в окнах или вообще отдельно) используются elements. А уже внутри elements можно определить поведение. Это в Concrete5 повсюду. В поиске файлов, страниц, в менеджере файлов и т.д. и т.п. Сам зачастую игнорирую этот метод, так как иногда он как-то не очень мне подходит из-за моей собственной архитектуры. Но вообще - удобно, иногда использую.
Код: Выделить всё
Loader::element.............или
Loader::packageElement('path_to_element', 'package_handler', array(пары key => value - параметры для передачи - будут переменными в итоге));
Country Amiant - Regno All Rianto
Аватара пользователя
Count_Raven
Супермодератор
 
Сообщения: 1156
Зарегистрирован: 06 окт 2010, 15:00
Откуда: Country Amiant

Re: Получить тест из блока на другой странице.

Сообщение cmsservice » 09 фев 2013, 15:28 ,  »  Сообщение:#9

Про элементы знаем, но здесь не тот случай :)
С уважением, Константин
http://Переделка-сайтов.РФ
Индивидуальные решения на платформе Concrete5 для театров и производственно-торговых компаний.
Аватара пользователя
cmsservice
 
Сообщения: 763
Зарегистрирован: 10 окт 2010, 00:10
Откуда: Москва


Вернуться в Помощь по concrete5

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1