Template Variables
Template Variables can be created or updated with a migration.
If you have not done so, generate a migration class. See the Local or Package development docs for more info.
Example:
<?php
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
/////////////
// Text example:
/** @var \LCI\Blend\Blendable\TemplateVariable $myTextTV */
$myTextTV = $this->blender->getBlendableLoader()->getBlendableTemplateVariable('buttonText');
$myTextTV->setSeedsDir($this->getSeedsDir());
$myTextTV
->setSeedsDir($this->getSeedsDir())
->setFieldCategory('My Project=>Large Box')
->setFieldCaption('Button text')
->setFieldType('text')
->setFieldRank(2);
if ($myTextTV->blend(true)) {
$this->blender->out($myTextTV->getFieldName() . ' was saved correctly');
} else {
//error
$this->blender->outError($myTextTV->getFieldName() . ' did not save correctly ');
$this->blender->outError(print_r($myTextTV->getErrorMessages(), true), \LCI\Blend\Blender::VERBOSITY_DEBUG);
}
/////////////
// Listbox example:
/** @var \LCI\Blend\Blendable\TemplateVariable $myListBox */
$myListBox = $this->blender->getBlendableLoader()->getBlendableTemplateVariable('sectionLayout');
$myListBox->setSeedsDir($this->getSeedsDir());
$myListBox
->setSeedsDir($this->getSeedsDir())
->setFieldCategory('My Project=>Large Box')
->setFieldCaption('Content alignment')
->setFieldDefaultText('default')
->setFieldType('listbox')
->setFieldRank(1);
/** @var \LCI\Blend\Helpers\TVInput\OptionValues $inputOptionValues */
$inputOptionValues = $myListBox->makeInputOptionValues();
$inputOptionValues
->setOption('Default', 'default')
->setOption('Left', 'left')
->setOption('Right', 'right');
if ($myListBox->blend(true)) {
$this->blender->out($myListBox->getFieldName() . ' was saved correctly');
} else {
//error
$this->blender->outError($myListBox->getFieldName() . ' did not save correctly ');
$this->blender->outError(print_r($myListBox->getErrorMessages(), true), \LCI\Blend\Blender::VERBOSITY_DEBUG);
}
/////////////
// MIGX example, note this requires MIGX to be installed to actually work
/** @var \LCI\Blend\Blendable\TemplateVariable $migxTV */
$migxTV = $this->blender->getBlendableLoader()->getBlendableTemplateVariable('videoBlockCarousel');
$migxTV->setSeedsDir($this->getSeedsDir());
$migxTV->setSeedsDir($this->getSeedsDir())
->setFieldCategory('My Project=>Video Block Carousel')
->setFieldCaption('Video Block Carousel')
->setFieldDescription('Create multiple video block sections that live inside of a carousel/slider.')
->setMediaSource('Backgrounds')
->setFieldRank(1);
$migxHelper = $migxTV->getMIGXInputPropertyHelper();
/** @var \LCI\Blend\Helpers\MIGX\Tab $tab */
$tab = $migxHelper->addFormTab('Info');
$tab->makeField('title')
->setCaption('Title')
->setShowInGrid(true)
->setGridSortable(true)
->setGridHeader('Title')
->setGridWidth(1);
$tab->makeField('backgroundImage')
->setCaption('Background Image')
//Note this must be an existing TV or create it via the migration:
->setInputTemplateVariableName('backgroundImage')
;
$tab->makeField('videoURL')
->setCaption('Video URL')
//Note this must be an existing TV or create it via the migration:
->setInputTemplateVariableName('videoBlockVideoURL')
;
$migxTV->setFieldInputProperties($migxHelper->getInputProperties());
if ($migxTV->blend(true)) {
$this->blender->out($migxTV->getFieldName() . ' was saved correctly');
} else {
//error
$this->blender->outError($migxTV->getFieldName() . ' did not save correctly ');
$this->blender->outError(print_r($migxTV->getErrorMessages(), true), \LCI\Blend\Blender::VERBOSITY_DEBUG);
}
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
/** @var \LCI\Blend\Blendable\TemplateVariable $myTextTV */
$myTextTV = $this->blender->getBlendableLoader()->getBlendableTemplateVariable('buttonText');
$myTextTV->setSeedsDir($this->getSeedsDir());
if ($myTextTV->revertBlend()) {
$this->blender->out($myTextTV->getFieldName() . ' was reverted correctly');
} else {
//error
$this->blender->outError($myTextTV->getFieldName() . ' did not revert correctly ');
$this->blender->outError(print_r($myTextTV->getErrorMessages(), true), \LCI\Blend\Blender::VERBOSITY_DEBUG);
}
/** @var \LCI\Blend\Blendable\TemplateVariable $myListBox */
$myListBox = $this->blender->getBlendableLoader()->getBlendableTemplateVariable('sectionLayout');
$myListBox->setSeedsDir($this->getSeedsDir());
if ($myListBox->revertBlend()) {
$this->blender->out($myListBox->getFieldName() . ' was reverted correctly');
} else {
//error
$this->blender->outError($myListBox->getFieldName() . ' did not revert correctly ');
$this->blender->outError(print_r($myListBox->getErrorMessages(), true), \LCI\Blend\Blender::VERBOSITY_DEBUG);
}
/** @var \LCI\Blend\Blendable\TemplateVariable $migxTV */
$migxTV = $this->blender->getBlendableLoader()->getBlendableTemplateVariable('videoBlockCarousel');
$migxTV->setSeedsDir($this->getSeedsDir());
if ($migxTV->revertBlend()) {
$this->blender->out($migxTV->getFieldName() . ' was reverted correctly');
} else {
//error
$this->blender->outError($migxTV->getFieldName() . ' did not revert correctly ');
$this->blender->outError(print_r($migxTV->getErrorMessages(), true), \LCI\Blend\Blender::VERBOSITY_DEBUG);
}
}
Resource seeds
Create resource seeds for work that you have completed within the MODX Manager and you wish to export one more resources to another instance.
Simple example
Run:
cd /www/core/
php vendor/bin/orchestrator blend:seed
You will then be prompted for enter in a comma separated list of resource IDs to include.
A migration file with a timestamp will be created and then a new directory for all of the seed data:
core/components/blend/database/migrations/m2019_08_16_180000_Resource.php
core/components/blend/database/seeds/m2019_08_16_180000_Resource/resources
Select Resources
Pass resource IDs as an option for the command as a comma separated list of IDs. Example seed resources with the IDs 2 and 3.
cd /www/core/
php vendor/bin/orchestrator blend:seed --id 2,3
Only do resources that have been created or modified since 2019-01-01
cd /www/core/
php vendor/bin/orchestrator blend:seed --date 2019-01-01
Give your migration a custom name, maybe for a version or bug number:
cd /www/core/
php vendor/bin/orchestrator blend:seed --date 2018-01-01 --name Issue1234
Customize Resources
If you want to customize the content on export you can write a plugin using the following events:
- OnBlendBeforeSave
- OnBlendAfterSave
- OnBlendSeed
- OnBlendLoadRelatedData