$index = \Drupal\search_api\Entity\Index::load('solr_index');
$query = $index->query();
$parse_mode = \Drupal::service('plugin.manager.search_api.parse_mode')->createInstance('direct');
$query->setParseMode($parse_mode);
$query->keys('keywords to search');
$results = $query->execute();
$items = $results->getResultItems();If you do, or want to, use AWS to deploy your apps, you will end up using AWS SES via SMTP when you're launching an app that sends out emails of any kind (user registrations, email notifications, etc). For example, I have used this configuration on various Ruby on Rails apps, however, it is just basic SMTP configurations and crosses over to any framework that supports SMTP sendmail.
There are two ways to go about this:
- EASY WAY: Create an SMTP user via AWS SES [http://docs.aws.amazon.com/ses/latest/DeveloperGuide/smtp-credentials.html#smtp-credentials-console]
- NOT SO EASY WAY: Create an SMTP password for an existing IAM user [^^ Same link scroll down]
Luckily, you found this MD file and the NOT SO EASY WAY is suddenly copy-pasta... sudo yum....
$database = \Drupal::database();
$charset = $database->getConnectionOptions()['charset'] ?? 'utf8mb4';
$collation = $database->getConnectionOptions()['collation'] ?? 'utf8mb4_general_ci';
echo PHP_EOL;
$tables = $database->query('SHOW TABLE STATUS where Collation <> :collation', [':collation' => $collation ])->fetchAllAssoc('Name');
if (count($tables)) {
echo 'Converting collation of ', count($tables), ' tables to ', $collation, PHP_EOL;$entity_type_manager = \Drupal::entityTypeManager();
$storage = $entity_type_manager->getStorage('migration');
$migration_plugin_manager = \Drupal::service('plugin.manager.migration');
$migration_id = '...';
$migration = $storage->load($migration_id);
$migration_plugin = $migration_plugin_manager->createInstance($migration_id, $migration->toArray());
$source_plugin = $migration_plugin->getSourcePlugin();curl -sXGET "http://${SEARCH_AUTH_USERNAME}:${SEARCH_AUTH_PASSWORD}@${SEARCH_HASH}.${SEARCH_URL}/_cat/indices?format=json&pretty=true"
curl -sXGET "http://${SEARCH_AUTH_USERNAME}:${SEARCH_AUTH_PASSWORD}@${SEARCH_HASH}.${SEARCH_URL}/_cat/indices/${SEARCH_HASH}--${SEARCH_INDEX}node?format=json&pretty=true"
curl -s "http://${SEARCH_AUTH_USERNAME}:${SEARCH_AUTH_PASSWORD}@${SEARCH_HASH}.${SEARCH_URL}/_ingest/pipeline?pretty=true"
use \Drupal\node\Entity\NodeType;
$panelizer = [];
$repo = \Drupal::service('entity_display.repository');
$types = NodeType::loadMultiple();
foreach (array_keys($types) as $node_type) {
$viewmode_options = $repo->getViewModeOptionsByBundle('node', $node_type);
foreach (array_keys($viewmode_options) as $viewmode_option) {use Drupal\search_api\Entity\Index;
$index = Index::load('node')
$server = $index->getServerInstance()
$backend = $server->getBackend()
$backend->getCluster()
$cluster_manager = \Drupal::service('elasticsearch_connector.cluster_manager')use Drupal\Component\Utility\UrlHelper;
$include = 'eJx...';
explode(',',UrlHelper::uncompressQueryParameter($include));In 7.x, themes were allowed to participate in any alter hook because the code that invoked theme alters lived in drupal_alter().
In 8.x, there has been a clear and distinct separation between ModuleHandler::alter and ThemeManager::alter. So now, in 8.x, themes can only participate in an alter hook if it is explicitly invoked for themes as well. An example of this can be seen in ElementInfoManager::buildInfo:
$this->moduleHandler->alter('element_info', $info);
$this->themeManager->alter('element_info', $info);As far as a "list" of what alter hooks themes are allowed to participate in... I really don't know of any. This base theme implements the majority/common alters hooks found in themes and you can see what it implements in bootstrap.theme. The only other suggestion I would have towards this subject is to see what code implements the module alter and see if there's a theme alter along with it.