Здравствуйте уважаемые посетители сайта drupal.ru Делаю курсовую работу на drupal. Управление персоналом на предприятии. Создал тип материала Сотрудники - у них определенные анкетные поля. Далее нужно создать тип докуметна Трудовой договор, Заявление, Документ. В данных типах сожержимого нужно через Entity Reference выбрать сотрудника. А уже на основании анкетных данных сотрудника нужно сформировать текст трудового договора. Текст подготовлен, нужно только чтобы автоматически поля из анкеты добавлялись в определенные места в тексте. Как это можно решить? Заранее спасибо за ответ.
Комментарии
темизацией страницы. или через модули для работы с pdf. я как-то через них делал генерацию счетов для оплаты заказа.
Договор - отдельный тип материала, текст разбить на поля в соответствии со вставляемыми в него полями юзера
потом, если есть навыки php - собрать из имеющихся кусков полный текст договора, например в hook_node_view
если таковые отсутствуют - сделать это вьюсом
Так можно теперь поподробней. К сожалению друпал изучаю где то месяц от силы. Допустим вот такой кусок текста договора
1.1. Работник __________________принимается на должность ________________________ для выполнения следующих трудовых обязанностей............
Уже создал тип материала Сотрудник. Здесь допустим есть поле таксономии должность, и другие поля анкеты, такие как дата рождения, и т.д. ФИО сотрудника является заголовок.
Далее тим материала Трудовой договор. Первое поле Entity Reference где выбирается нужный сотрудник из типа материалов Сотрудники. Допустим полей больше нету. При кнопке сохранить как сделать чтобы формировалась статья или документ pdf или doc который прикрепляется к созданому материалу. С указанным выше текстом но вместо пустых мест __________ вставлялась информация из материала с выбранным сотрудником.
в типе содержимого "договор" добавляете поля:
text1: "1.1. Работник"
text2: "принимается на должность"
text3: "для выполнения следующих трудовых обязанностей............"
потом склеиваете значения полей договора со значениями полей сотрудника в необходимом порядке
можно упростить - не резать текст договора, а вместо "_________" вписать какой-нибудь текст, который потом явно не встретится в текст договора, что-то вроде "field_user_fio" и т.п.
потом в hook_node_view делаете замену: $body = str_replace('field_user_fio', $field_user_fio, $body);
названия переменных от балды, будут скорее всего другими
Т.е. при втором варианте, делаем одно текстовое поле. Где введен весь текст ну вместо пробелов стоит переменная, которая берет данные из анкеты выбранного сотрудника?
Да второй вариант более привлекательный.
Спасибо за ответ!
ВОПРОС. А где прописывать этот хук, в каком файле. А то че то никак не могу разобраться
в своем модуле
Ну своего модуля то нету. Чето я совсем запутался. Извиняюсь конечно за незнание. Просто только начинаю. Но у меня просто тип содержимого. В нем одно поле field_vstavka в ввожу сюда допустим 123
Второе поле body, В котором предустановленный текст - Заменить текст field_zamena
Нажимаю сохранить, и статья имеет вид
Заменить текст значение 123
Или так не реально сделать. Как то по другому.
Вам же уже во втором посте ответили:
на самом деле, написать свой модуль - как 2 байта обоссать
потребуется создать 2 файла - modulename.info и modulename.module
(кодировка: utf-8 без BOM)
сложить их в папку modulename и залить на хостинг в папку DRUPAL_ROOT/sites/all/modules
хорошим тоном считается складывать кастомные модули в папку custom там же, т.е. полный путь к файлам модуля получится DRUPAL_ROOT/sites/all/modules/custom/modulename
в modulename.module можно задействовать hook_node_view():
<?php
modulename_node_view($node, $view_mode, $langcode) {
// во-первых, надо определиться с тем, какая нода показывается ($node),
// в каком виде ($view_mode)
// и кому:
global $user;
if ( // тут надо проверить Snode->type или $node->nid, $view_mode и $user->uid
$user = user_load($user->uid); // вряд ли сразу $user будет содержать значения нужных полей
...
?>
Да похоже придется делать вьюхой. Вроде все и понятно, что нужно делать модуль. Но как этот модуль задействовать при создании трудового договора, как вообще чтобы он вообще создавал договор и сохранял их в ноду. В общем похоже знаний вообще не хватает. Просто вопросов еще больше появляется. Но вьюхой делать вообще не нравиться, слишком неудобно. Вариант с заменой переменных в тексте был бы оптимальным. Где то читал что можно заранее составить документ RTF где будут переменные, которые как то можно заменить.
заплатите денег вам всё сделают.
Шикарный ответ. Спасибо за помощь. Если может кто ответит можно ли использовать токены, в теле поля body?
Все спасибо. Решил проблему через токены.
ничто не сравниться с тем чувством когда сам находишь ответ на свой вопрос))
напишите "решено" в заголовке топика
Спасибо всем. Drupal мне нравиться всё больше и больше
И что в итоге вы получаете на выходе - RTF, PDF, DOC, etc? Хотелось бы подробней узнать как реализовали.
PDF и XLS. Можно и в DOC. В PDF делаю при помощи Printer, email and PDF
DOC и XLS вот так - Модуль Views Excel Export
Правда выводит не в идеале, но приемлемо.
Благодарен за ответ!