/** * Sets options for a display, inheriting from the defaults when possible. * * This function can be used to set options for a display when it is desired * that the options inherit from the default display whenever possible. This * avoids setting too many options as overrides, which will be harder for the * user to modify later. For example, if $this->setDefaultOptions() was * previously called on a page display and then this function is called on a * block display, and if the user entered the same title for both displays in * the views wizard, then the view will wind up with the title stored as the * default (with the page and block both inheriting from it). * * @param array $options * An array whose keys are the name of each option and whose values are the * desired values to set. * @param \Drupal\views\View\plugin\display\DisplayPluginBase $display * The display handler which the options will be applied to. The default * display will actually be assigned the options (and this display will * inherit them) when possible. * @param \Drupal\views\View\plugin\display\DisplayPluginBase $default_display * The default display handler, which will store the options when possible. */ protected function setOverrideOptions(array $options, DisplayPluginBase $display, DisplayPluginBase $default_display) { foreach ($options as $option => $value) { // Only override the default value if it is different from the value that // was provided. $default_value = $default_display->getOption($option); if (!isset($default_value)) { $display->setOption($option, $value); } elseif ($default_value !== $value) { $display->overrideOption($option, $value); } } }