it-swarm.com.de

Wie füge ich benutzerdefinierte Designeinstellungen hinzu?

In meinem Thema habe ich einen Link zum sozialen Netzwerk. Daher hätte ich gerne ein Feld in den Themeneinstellungen, in dem der Administrator einen Link einfügen kann, der an allen Stellen verwendet wird, an denen {{link-social-network}}.

<a href="{{link-social-network}}" class="btn-social btn-outline"><i class="fa fa-fw fa-facebook"></i></a>

Ich habe auch gelesen, dass die Standardwerte für die Themeneinstellungen nicht in den info.yml-Dateien eines Themas festgelegt werden können.

Die Datei config/install/THEME.settings.yml des Themas sollte diese Informationen enthalten.

7
SakaSerbia

Sie können eine neue Datei erstellen und als theme-settings.php Aufrufen und Folgendes hinzufügen oder diese sogar zur Datei THEME_NAME.theme hinzufügen.

use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Theme\ThemeSettings;
use Drupal\system\Form\ThemeSettingsForm;
use Drupal\Core\Form;

function THEME_NAME_form_system_theme_settings_alter(&$form, Drupal\Core\Form\FormStateInterface $form_state) {
  $form['THEME_NAME_settings']['social_icon']['social_url'] = array(
    '#type' => 'textfield',
    '#title' => t('Social Link'),
    '#default_value' => theme_get_setting('social_url', 'THEME_NAME'),
  );
}

Dann müssen Sie der Datei THEME_NAME.theme Folgendes hinzufügen.

function THEME_NAME_preprocess_page(&$variables) {
  $variables['social_url'] = theme_get_setting('social_url','THEME_NAME');
}

Dann können Sie es in der Datei twig verwenden.

<a href="{{ social_url }}" class="btn-social btn-outline"><i class="fa fa-fw fa-facebook"></i></a>

Um einen Standardwert für die soziale URL zu erhalten, können Sie ihn in Ihren config/install/THEME.settings.yml Einfügen.

Ich hoffe es hilft!

12
Suresh R

Zusätzlich zu Sureshs Antwort: Wenn Sie alle Themeneinstellungen in Ihrer twig - Vorlage verfügbar haben möchten, verwenden Sie die folgende Funktion:

use Drupal\Core\Cache\CacheableMetadata;
function _THEME_extend_variables(&$variables){
  // Add cachability metadata.
  $theme_name = \Drupal::theme()->getActiveTheme()->getName();
  $theme_settings = \Drupal::config($theme_name . '.settings');
  CacheableMetadata::createFromRenderArray($variables)
    ->addCacheableDependency($theme_settings)
    ->applyTo($variables);
  // Union all theme setting variables to the twig template variables.
  $variables += $theme_settings->getOriginal();
}

und nennen Sie es, wann immer Sie $variables erweitern müssen:

function THEME_preprocess_page(&$variables) {
  // extend twig variables with theme settings
  _THEME_extend_variables($variables);
  // do fancy stuff
}

Dies ist mehr oder weniger eine Kopie, die aus Grundthema eingefügt wurde.

4
Philipp Michael