Forum


Replies: 3   Views: 971
How can i scope template replacements within a block?
Topic closed:
Please note this is an old forum thread. Information in this post may be out-to-date and/or erroneous.
Every phpdocx version includes new features and improvements. Previously unsupported features may have been added to newer releases, or past issues may have been corrected.
We encourage you to download the current phpdocx version and check the Documentation available.

Posted by admin  · 09-07-2021 - 06:37

Hello,

The replaceVariableByText method (and other template methods) does replacements in the whole target  and as you say you can use the firstMatch option to replace only the first occurrence and iterate placeholders with the same name by their specific new values. Using the firstMatch option is the best approach to do replacements when cloning blocks: https://www.phpdocx.com/documentation/snippets/clone-blocks-replacing-placeholders.

There's no specific method to do replacements within a specific block, and as you also say you have nested blocks and the block names and their contents could be repeated more than once as well.

The easiest approach would be using specific placeholder names for each variable type instead of using the same placeholder name for more than one variable (for example, you are using $NAME$ for three different placeholders: user, pic and stats). Using specific placeholder names you could use the firstMatch option to iterate the placeholders in order after cloning the blocks.

As alternative approach you could also use replaceWordContent available in DOCXPath to do complex replacements. Using this method you can do almost any kind of replacements, for example: the second occurrence of a paragraph that contains $VAR$, or the placeholder that its paragraph also contains other text content, or more advanced replacements such as the third occurrence of a placeholder that is inside the second occurrence of a specific block. DOCXPath allows working with the internal options and also custom XPath queries. We recommend you to read the available documentation and the samples included in the package.

For further support, please send to contact[at]phpdocx.com a DOCX template sample and the DOCX output you'd like to get, the dev team will check them. Maybe a specific development could be done to ease your specific task.

Regards.