У меня есть PHP-программа, которая использует TinyButStrong вместе с плагином OpenTBS. Я перепробовал много примеров и редактировал xml напрямую. тем не менее, я не понимаю, и все эксперименты начинают расстраивать меня, так что вот моя проблема:
Шаблон — это просто стандартное письмо клиентам с адресной информацией сверху, например:
[a;block=w:body]
[a.company_name; magnet=w:p]
[a.first_name][a.last_name]
[a.street]
[a.postalcode] [a.city]
[a.country]
Как XML это выглядит так:
<w:p w:rsidR="001A4536" w:rsidRDefault="007D3CAF">
<w:r w:rsidRPr="007D3CAF">
<w:t>[a;block=w:body]</w:t>
</w:r>
</w:p>
<w:p w:rsidR="007D3CAF" w:rsidRDefault="007D3CAF">
<w:r w:rsidRPr="007D3CAF">
<w:t xml:space="preserve">[a.company_name; magnet=w:p] </w:t>
</w:r>
</w:p>
<w:p w:rsidR="007D3CAF" w:rsidRDefault="007D3CAF">
<w:r w:rsidRPr="007D3CAF">
<w:t>[a.first_name] [a.last_name]</w:t>
</w:r>
</w:p>
<w:p w:rsidR="007D3CAF" w:rsidRDefault="007D3CAF" w:rsidP="007D3CAF">
<w:r>
<w:t>[a.street]</w:t>
</w:r>
</w:p>
<w:p w:rsidR="007D3CAF" w:rsidRDefault="007D3CAF" w:rsidP="007D3CAF">
<w:r>
<w:t>[a.postalcode] [a.city]</w:t>
</w:r>
</w:p>
В случае отсутствия названия компании или имени и фамилии строка не должна быть пропущена. Как мне этого добиться?
Если бы был лучший способ создать документацию по словам, чем с openTBS, я бы тоже об этом подумал?
Во-первых, это определение вашего блока block=w:body
не подходит, потому что может быть только один <w:body>
элемент в содержании XML. Но TBS будет дублировать этот элемент для каждой записи в ваших данных.
Вы должны изменить block=w:body
с block=tbs:p+tbs:p+tbs:p+tbs:p+tbs:p
который определяет блок на 5 пунктов.
В случае, если там нет названия компании или нет имени и фамилии
не должно быть потраченной линии. Как мне этого добиться?
Поле TBS [a.company_name; magnet=w:p]
правильно используется.
Вы можете использовать то же самое для имени и фамилии, но в этом случае вы должны определить столбец данных, который является объединением обоих, чтобы использовать magnet
параметр на это. Если вы не можете определить столбец данных, вы можете использовать параметр Ondata с пользовательской функцией PHP для добавления виртуального столбца.
Других решений пока нет …