|
0 Всего найдено: 3
works2site
Сообщение
18/09/2008 12:53
Копия темы
Как вывести автора новости в UMI.CMS . Все просто. Берем Free версию. Там нет модуля "шаблониы данных". Дальше под катом. Небеда. Открываем PHPMyADMIN там ищим таблицу cms3_object_fields создаем в ней еще одну запись INSERT INTO `cms3_object_fields` (`id` ,`name` ,`title` ,`is_locked` ,`field_type_id` ,`is_inheritable` ,`is_visible` ,`guide_id` ,`in_search` ,`in_filter` ,`tip`) VALUES ( NULL , //автоматом само поставит 'author',// имя поля 'i18n::field-author', //заголовок в админке '1', '3', //тип поля смотрим в таблице cms3_object_field_types 3 это строка '0', '1', '0', '0', '0', NULL); PS: остальные данные выставлены по аналогии с полями из нужной группы(см ниже) Получаем id вставленной строки. например: 9013 Осталось связать поле с группой полей для объекта в таблице cms3_fields_controller INSERT INTO `cms3_fields_controller` (`ord` ,`field_id` ,`group_id`) VALUES ('33', '9013', '78'); где 33 сортировка 78 id из таблицы из cms3_object_field_groups в которой type_id это ссылка на cms3_object_types (типы объектов) в котором id это тип объекта из таблицы cms3_object_types в которой есть поле hierarchy_type_id которое ведет на поле type_id из таблицы cms3_hierarchy в котой прописан id и Псевдостатический адрес (alt_name). Поясню на пальцах Нужно добавить поле в новость. 1 нашли любой экземпляр новости в таблице cms3_hierarchy (по id или Псевдостатический адрес (alt_name)) 2 взяли type_id из cms3_hierarchy 3 в таблице cms3_object_types по полю hierarchy_type_id определяем id типа объекта 4 в таблице cms3_object_field_groups по полю type_id нашли все группы полей для типа (см п3) во втором запросе у меня получился id 78 5 соеденяем в таблице cms3_fields_controller наше поле и группу полей В админке поле должно появиться в нужном месте. Теперь как выводить данные на страницу пользователю. в шаблоне новости \tpls\news\default.tpl и дапишем вызов макроса (кому нужен XSLT смотрим справку) %news copirate()% в обработчике модуля допишем макрос /classes/modules/news/__custom.php public function copirate($element_id = null, $template = "copirate") { if(!$template) $template = "copirate"; //Получаем блоки шаблона "copirate" и "source" из файла шаблона $template, из папки "tpls/news". list($template_copirate, $template_source) = $this->loadTemplates("./tpls/news/{$template}.tpl", "copirate", "source"); $block_arr = Array(); //Получим id текущей страницы: if (is_null($element_id)){ $element_id = cmsController::getInstance()->getCurrentElementId(); } //Получим объект этой страницы: $element = umiHierarchy::getInstance()->getElement($element_id); //Если не получилось, то выбрасываем исключение: if(!is_object($element)) { throw new privateException("Не могу получить элемент #{$element_id}"); } $result = ''; $val = $element->getValue("source"); if(strlen($val) > 0){ $block_arr['node:source'] = $val; $block_arr['node:source_url'] = $element->getValue("source_url"); $result .= $this->parseTemplate($template_source, $block_arr, $element_id); } $val = $element->getValue("author"); if(strlen($val) > 0){ $block_arr['node:author'] = $val; $result .= $this->parseTemplate($template_copirate, $block_arr, $element_id); } unset($val, $template_copirate, $template_source, $block_arr, $element_id, $element); return $result; } И в папку с шаблонами модуля (/tpls/news) положим соответственный шаблон для макроса. Файл назовем соответственно copirate.tpl <?php $FORMS = Array(); $FORMS['copirate'] = <<<END Автор: %author%<br /> END; $FORMS['source'] = <<<END Источник: <a h ref="%source_u rl%">%source 37;</a><br /> END; ?> Все. В качестве бонуса: Обработка сюжетов DELETE FROM `cms3_objects` WHERE `cms3_objects`.`field_id` = 34; INSERT INTO `cms3_objects` (`id` ,`name` ,`is_locked` ,`type_id` ,`owner_id`) VALUES (NULL , 'Сюжет', '0', '34', '14'); Обработка тегов DELETE FROM `cms3_object_content` WHERE `cms3_object_content`.`field_id` = 8837;
petkevich
Сообщение
18/09/2008 13:59
Копия темы
0
. сможешь в free версии расшарить ограничение на 10 страниц? |
Выразить восторг, поругаться или предложить что-нибудь можно на форуме |
Для обсуждения этого сервиса так же есть темы на фрилансе по поиску , флудотопу ,и по удалённым сообщениям ,и по Актуальным/популярным темам , и по топу "кто кому больше наотвечал" |