আমি কীভাবে কোনও টেমপ্লেট ফাইল থেকে একটি লিঙ্ক থিম করব?


10

একটি টুইগ টেম্পলেট ক্লাসের সাথে আসা লিঙ্কগুলির একটি তালিকা উপস্থাপন করছে। মৌলিক:

{{ mylink }}

টুইগ কোড এর মত কিছু আউটপুট হবে

<a href="#" class="someclass" >the text</a>

সমস্ত লিঙ্কের ক্লাস নেই। আমি একটি টুইগ টেম্পলেট লিখতে চাই যা পরিবর্তে এরকম কিছু আউটপুট দেবে:

<a href="#" class="someclass" >
  <span class="sprite someclass" ></span>
  the text</a>

আমি যা চেষ্টা করেছি:

  1. ওভাররাইডের জন্য আমি দ্বিগুণ টেমপ্লেটটি চেয়েছিলাম। দুর্ভাগ্যজনকভাবে মনে হয় যে লিঙ্কগুলি কোনও দ্বৈত টেম্পলেট দ্বারা রেন্ডার করা হয় না।

  2. আমি টুইগ ভেরিয়েবলের মতো আপডেট করার চেষ্টা করেছি

    set mylink['#title'] = "<span>...</span>" ~ mylink['#title']

    তবে এটি আমাকে তা করতে দেয় না।


এটি কি কেবল দ্বৈত টেমপ্লেটে থাকতে হবে? আমি মার্কআপ পরিবর্তন করতে এবং ইউআই (সামগ্রীর ধরণ> ডিসপ্লে ফর্ম পরিচালনা করুন) থেকে ক্লাস সেট করতে সক্ষম।
ভাগনার

উত্তর:


6

এই ক্ষেত্রের চিকিত্সা প্রয়োজন এমন একটি নির্দিষ্ট ক্ষেত্রের জন্য এখানে একটি দ্বিগুণ সমাধান রয়েছে; এটি সর্বত্র সমস্ত লিঙ্কের জেনেরিক সমাধান নয়।

কিছু-template.twig:

<ul class="field--name-field-links">
  {% for item in content.field_links %}
  {% if item['#title'] %}
    <li>
      <a href="{{ item['#url'] }}" class="{{ item['#options'].attributes.class|join(' ') }}" >
        {% if item['#options']['attributes']['class'] %}
          <span class="sprite {{ item['#options']['attributes']['class']|join(" ") }}"></span>
        {% endif %}
        {{ item['#title'] }}
      </a>
    </li>
  {% endif %}
  {% endfor %}
</ul>

1
ওএমজি অবশেষে, আমি এই সমস্যার সমাধানের জন্য 2 দিনের সন্ধান করছি। আমি এখনও বুঝতে পারি না যে টুইগটি এইচটিএমএলকে কীভাবে আউটপুট দিচ্ছে যখন আমরা এটিকে আইটেমটি লিঙ্ক করি তখন এটি কোন অ্যারে। কারও কাছে এর জন্য ডক আছে?
গিল্লুম বোইস

ওহ গুশ ... দুর্ভাগ্যজনকভাবে এই সমাধানটি কেবল আংশিকভাবে কাজ করে। আমি ভাষা পরিবর্তনকারী লিঙ্কগুলি পরিবর্তন করতে চাই এবং ব্যবহার করে item.link['#url']সমস্ত ভাষার জন্য একই ইউআরএল দিচ্ছি !
গিলাইম বোইস

@ গুইলাউমোবাইস আপনি কি 'ভাষা পরিবর্তনকারী' সমস্যার সমাধান করেন কিনা তা দেখতে drupal.stackexchange.com/a/199998/54619 পরীক্ষা করতে পারেন? ধন্যবাদ
ভ্যাগনার

5

আমি টুইগের মধ্যে '#মার্কআপ' লিঙ্কটি পরিবর্তন করার কোনও উপায় খুঁজে পাইনি, তবে এটি রেন্ডার পর্যায়ে পরিবর্তন করার উপায় রয়েছে।
আমি এই ছোট্ট মডিউলটি তৈরি করেছি যা লিঙ্ক কার্যকারিতা প্রসারিত করে এবং রেন্ডার লিঙ্কটিতে কিছু স্টাফ ইনজেকশনে সক্ষম করে তোলে। সুতরাং কিছু কোড করা যাক, আমি মন্তব্যগুলিতে ব্যাখ্যা করব ...

মডিউল ফাইল কাঠামো:

better_link
 | - src
   | - Element
     | BetterLink.php
   | - Plugin
     | - FieldFormatter
       | BetterLinkFormatter.php
 | better_link.info.yml
 | better_link.module

ফাইল সামগ্রী:

better_link.info.yml

name: 'Better link'
type: module
package: 'Field types'
description: 'A very nice better link'
core: '8.x'
dependencies:
  - field
  - link

better_link.module

<?php

use Drupal\Core\Routing\RouteMatchInterface;

/**
 * Implements hook_help().
 * Just some words about the module.
 */
function better_link_help($route_name, RouteMatchInterface $route_match) {
  switch ($route_name) {
    case 'help.page.better_link':
      $output = '';
      $output .= '<h3>' . t('About') . '</h3>';
      $output .= '<p>' . t('Provide a improved link formatter and renderer for a custom link markup.') . '</p>';
      $output .= '<p>' . t('Will be added a span html tag right before link content.') . '</p>';
      $output .= '<p>' . t(' - Link class can be added throught manage display.') . '</p>';
      $output .= '<p>' . t(' - Span class can be added throught manage display.') . '</p>';
      return $output;
  }
}

BetterLinkFormatter.php

<?php

/**
 * @file
 * Contains \Drupal\better_link\Plugin\Field\FieldFormatter\BetterLinkFormatter.
 */

namespace Drupal\better_link\Plugin\Field\FieldFormatter;

use Drupal\Core\Field\FieldItemListInterface;
use Drupal\Component\Utility\Html;
use Drupal\Component\Utility\Unicode;
use Drupal\Core\Form\FormStateInterface;
use Drupal\link\Plugin\Field\FieldFormatter\LinkFormatter;

/**
* Plugin implementation of the 'better_link' formatter.
*
* @FieldFormatter(
*   id = "better_link",
*   label = @Translation("Better Link"),
*   field_types = {
*     "link"
*   }
* )
*/
class BetterLinkFormatter extends LinkFormatter {
  /**
   * {@inheritdoc}
   */
  public static function defaultSettings() {
    $settings = parent::defaultSettings();
    //Keeping simple...
    $settings['span_class'] = '';
    $settings['link_class'] = '';
    //... but feel free to add, tag_name, buble_class, wraper_or_inside
    return $settings;
  }

  /**
   * {@inheritdoc}
   */
  public function settingsForm(array $form, FormStateInterface $form_state) {
    $form = parent::settingsForm($form, $form_state);
    //Make sure that you always store a name that can be used as class
    $settings['link_class'] = Html::cleanCssIdentifier(Unicode::strtolower($this->getSetting('link_class')));
    $settings['span_class'] = Html::cleanCssIdentifier(Unicode::strtolower($this->getSetting('span_class')));
    $this->setSettings($settings);

    $form['link_class'] = array(
      '#title' => $this->t('Inject this class to link'),
      '#type' => 'textfield',
      '#default_value' => $settings['link_class'],
    );
    $form['span_class'] = array(
      '#title' => $this->t('Inject this class to span'),
      '#type' => 'textfield',
      '#default_value' => $settings['span_class'],
    );
    return $form;
  }

  /**
   * {@inheritdoc}
   */
  public function settingsSummary() {
    $summary = parent::settingsSummary();
    //Same here. Somehow if you use setSettings here don't reflect in settingsForm
    $settings['link_class'] = Html::cleanCssIdentifier(Unicode::strtolower($this->getSetting('link_class')));
    $settings['span_class'] = Html::cleanCssIdentifier(Unicode::strtolower($this->getSetting('span_class')));
    $this->setSettings($settings);

    //Summary is located in the right side of your field (in manage display)
    if (!empty($settings['link_class'])) {
      $summary[] = t("Class '@class' will be used in link element.", array('@class' => $settings['link_class']));
    }
    else {
      $summary[] = t('No class is defined for link element.');
    }

    if (!empty($settings['span_class'])) {
      $summary[] = t("Class '@class' will be used in span element.", array('@class' => $settings['span_class']));
    }
    else {
      $summary[] = t('No class is defined for span element.');
    }

    return $summary;
  }

  /**
   * {@inheritdoc}
   */
  public function viewElements(FieldItemListInterface $items, $langcode) {
    $elements = parent::viewElements($items, $langcode);
    //Yeah, here too, same 'problem'.
    $settings['link_class'] = Html::cleanCssIdentifier(Unicode::strtolower($this->getSetting('link_class')));
    $settings['span_class'] = Html::cleanCssIdentifier(Unicode::strtolower($this->getSetting('span_class')));

    foreach ($items as $delta => $item) {
      //Lets change the render element type and inject some options that will
      //be used in render phase
      if (isset($elements[$delta]['#type'])) {
        $elements[$delta]['#type'] = 'better_link';
        $elements[$delta]['#options']['#link_class'] = $settings['link_class'];
        $elements[$delta]['#options']['#span_class'] = $settings['span_class'];
      }
    }
    //Next step, render phase, see ya...
    return $elements;
  }
}

BetterLink.php

<?php

/**
 * @file
 * Contains \Drupal\better_link\Element\BetterLink.
 */

namespace Drupal\better_link\Element;

use Drupal\Core\Render\Element\Link;

/**
 * Provides a better_link render element. Almost the same as link.
 *
 * @RenderElement("better_link")
 */
class BetterLink extends Link {
  /**
   * {@inheritdoc}
   */
  public function getInfo() {
    $class = get_class($this);
    return array(
      '#pre_render' => array(
        array($class, 'preRenderLink'),
      ),
    );
  }

  /**
   * {@inheritdoc}
   */
  public static function preRenderLink($element) {
    //Hello again. Lets work.
    //Before Drupal create the rendered link element lets inject our stuff...
    //...Our class to link
    $element['#options']['attributes']['class'][] = $element['#options']['#link_class'];
    //...Build span classes
    $span_classes = $element['#options']['#span_class'] . ' ' . $element['#options']['#link_class'];
    //...And get rid them.
    unset($element['#options']['#link_class']);
    unset($element['#options']['#span_class']);
    //Lets Drupal do the hard work
    $element = parent::preRenderLink($element);
    //Here is where the magic happens ;)
    if (!empty($element['#markup'])) {
      //Inject our span right before link content.
      $element['#markup'] = str_replace('">', "\"><span class='$span_classes'></span>", $element['#markup']);
      //Side comment - Thank you spaceless, str_replace can be used here
    }
    //Now, whatever you change in your url or another object will not maintain,
    //the only thing that will be returned in the end is
    //$element['#markup'], so this is the only thing you can change.
    return $element;
  }
}

গুরুত্বপূর্ণ:

এটি আপনার সমস্ত লিঙ্ক ক্ষেত্রের জন্য কাজ করবে , নিশ্চিতভাবেই, আপনি যদি এটির প্রদর্শনের ব্যবস্থাপনায় এর বিন্যাস পরিবর্তন করেন (আপনার নোডের ধরণটি সম্পাদনা করছেন)।

আমি আশা করি এটি কার্যকর হতে পারে।

@Artfulrobot- কে অনুরোধ: আপনি কি এই মডিউলটি পরীক্ষা করতে পারেন? আমি মনে করি যে অনুবাদ সমস্যার সমাধান এইভাবে করা যেতে পারে।


হ্যাঁ, এত দীর্ঘ এবং বিস্তারিত উত্তরের জন্য আপনাকে ধন্যবাদ। আমি মনে করি যে ডি 8 এর দ্বিগুণ স্তরে একটি বিশাল ব্যর্থতা রয়েছে যা একটি সহজ থেরিং ইস্যু হওয়া উচিত তার বিশাল পিএইচপি-ভিত্তিক সমাধান রয়েছে। তবে পোস্ট করার জন্য ধন্যবাদ, সহায়ক
আর্টফুলবোট

@artfulrobot আপনি আমার চেয়ে উত্তর দেওয়ার জন্য সম্ভবত আরও ভাল অবস্থানে আছেন - আপনি কি মনে করেন যে অনুগ্রহটি এখানে যেতে হবে?
ক্লাইভ

@ ক্লাইভ ধন্যবাদ, তবে আপনার অনুগ্রহ, আপনার কল। আমি যে প্রশ্নটি জিজ্ঞাসা করেছি তা টিগ সম্পর্কে ছিল। এই উত্তরগুলির বেশিরভাগের মধ্যে পিএইচপিটিকে আরও কঠোরভাবে রক্ষণাবেক্ষণের সাথে মূল প্রতিস্থাপন বা প্রসারিত করা জড়িত, সুতরাং আমি ইনপুটটির জন্য কৃতজ্ঞ থাকি এবং তারা এই কাজটি করার উপায় সরবরাহ করে, তারা আইএমও প্রশ্নের উত্তর দেয় না। এই "সরল" তাদের সমস্যাটি হ'ল খড় যা আমার প্রবচনীয় উটের ডি 8 পিছনে ভেঙে গেছে, আমি ভীত এবং আমি d মাসের মধ্যে স্ক্র্যাচ থেকে শুরু করতে 3 মাসের মধ্যে একটি ডি 8 প্রকল্পটি শেষ করেছি - হতাশার মতো তবে 1 সপ্তাহের মধ্যে আমি ' d সম্পূর্ণ ধরা পড়ে: - |
আর্টফুলবোট

ধন্যবাদ @artfulrobot, বোঝা। এটি এর চেয়ে বেশি সন্তোষজনক উপসংহার না পেয়ে লজ্জাজনক। সম্প্রদায় যা কিছু ভোট দিয়েছে তার উপর আমি নিজেই অনুগ্রহপূর্বক অটো-পুরস্কার দেব
ক্লাইভ

পলক আশ্চর্যজনক। সমস্ত সমস্যা ড্রুপাল থেসিং সিস্টেম থেকে আসে, যা আমি মনে করি একটি ভুল পদ্ধতির। আপনি যদি কোনও সাধারণ লিঙ্কটি কাস্টমাইজ করতে চান তবে আপনাকে অতিরিক্ত কত কাজ করতে হবে তা পরীক্ষা করুন। এটি হতাশাব্যঞ্জক।
জোল্টন সেল

4

আপনি কেবল # শিরোনামে একটি রেন্ডার অ্যারে যুক্ত করতে পারেন, যেমন:

['#title'] = array('#markup' => '<i class="my-icons">yummy</i>' . $item['content']['#title']);

পুরানো দীর্ঘ উত্তর:

আপনি লিঙ্ক জেনারেটর পরিষেবা ওভাররাইড করতে পারেন

বিকল্প ফাইল_লিংক জেনারেটর.ইনফো.আইএমএল সহ একটি মডিউল (বিকল্প_লিংক জেনারেটর) তৈরি করুন

name: Alternative LinkGenerator
type: module
description: Adds alternative link generation.
core: 8.x

বিকল্প_ লিঙ্কজেনেরেটর.সার্ভেস.আইএমএল নামে একটি ফাইল তৈরি করুন

services:
  alternative_linkgenerator.link_generator:
    class: Drupal\alternative_linkgenerator\AlternativeLinkGenerator

এরপরে ক্লাস তৈরি করা, "এসসিআর" নামে একটি ফোল্ডার যুক্ত করুন (পিএসআর -4 স্বতঃআপনার মান অনুসরণ করে) এবং এর মধ্যে একটি বিকল্প বিকল্প লিঙ্কজিনেটর.এফপি নামে একটি ফাইল যুক্ত করুন। (এটি একটি 1: 1 অনুলিপি, আপনার জন্য জিনিসগুলি অভিযোজন করা দরকার)

class AlternativeLinkGenerator extends LinkGeneratorInterface {

  /**
   * The url generator.
   *
   * @var \Drupal\Core\Routing\UrlGeneratorInterface
   */
  protected $urlGenerator;

  /**
   * The module handler firing the route_link alter hook.
   *
   * @var \Drupal\Core\Extension\ModuleHandlerInterface
   */
  protected $moduleHandler;

  /**
   * The renderer service.
   *
   * @var \Drupal\Core\Render\RendererInterface
   */
  protected $renderer;

  /**
   * Constructs a LinkGenerator instance.
   *
   * @param \Drupal\Core\Routing\UrlGeneratorInterface $url_generator
   *   The url generator.
   * @param \Drupal\Core\Extension\ModuleHandlerInterface $module_handler
   *   The module handler.
   * @param \Drupal\Core\Render\RendererInterface $renderer
   *   The renderer service.
   */
  public function __construct(UrlGeneratorInterface $url_generator, ModuleHandlerInterface $module_handler, RendererInterface $renderer) {
    $this->urlGenerator = $url_generator;
    $this->moduleHandler = $module_handler;
    $this->renderer = $renderer;
  }

  /**
   * {@inheritdoc}
   */
  public function generateFromLink(Link $link) {
    return $this->generate($link->getText(), $link->getUrl());
  }

  /**
   * {@inheritdoc}
   *
   * For anonymous users, the "active" class will be calculated on the server,
   * because most sites serve each anonymous user the same cached page anyway.
   * For authenticated users, the "active" class will be calculated on the
   * client (through JavaScript), only data- attributes are added to links to
   * prevent breaking the render cache. The JavaScript is added in
   * system_page_attachments().
   *
   * @see system_page_attachments()
   */
  public function generate($text, Url $url) {
    // Performance: avoid Url::toString() needing to retrieve the URL generator
    // service from the container.
    $url->setUrlGenerator($this->urlGenerator);

    if (is_array($text)) {
      $text = $this->renderer->render($text);
    }

    // Start building a structured representation of our link to be altered later.
    $variables = array(
      'text' => $text,
      'url' => $url,
      'options' => $url->getOptions(),
    );

    // Merge in default options.
    $variables['options'] += array(
      'attributes' => array(),
      'query' => array(),
      'language' => NULL,
      'set_active_class' => FALSE,
      'absolute' => FALSE,
    );

    // Add a hreflang attribute if we know the language of this link's url and
    // hreflang has not already been set.
    if (!empty($variables['options']['language']) && !isset($variables['options']['attributes']['hreflang'])) {
      $variables['options']['attributes']['hreflang'] = $variables['options']['language']->getId();
    }

    // Ensure that query values are strings.
    array_walk($variables['options']['query'], function(&$value) {
      if ($value instanceof MarkupInterface) {
        $value = (string) $value;
      }
    });

    // Set the "active" class if the 'set_active_class' option is not empty.
    if (!empty($variables['options']['set_active_class']) && !$url->isExternal()) {
      // Add a "data-drupal-link-query" attribute to let the
      // drupal.active-link library know the query in a standardized manner.
      if (!empty($variables['options']['query'])) {
        $query = $variables['options']['query'];
        ksort($query);
        $variables['options']['attributes']['data-drupal-link-query'] = Json::encode($query);
      }

      // Add a "data-drupal-link-system-path" attribute to let the
      // drupal.active-link library know the path in a standardized manner.
      if ($url->isRouted() && !isset($variables['options']['attributes']['data-drupal-link-system-path'])) {
        // @todo System path is deprecated - use the route name and parameters.
        $system_path = $url->getInternalPath();
        // Special case for the front page.
        $variables['options']['attributes']['data-drupal-link-system-path'] = $system_path == '' ? '<front>' : $system_path;
      }
    }

    // Remove all HTML and PHP tags from a tooltip, calling expensive strip_tags()
    // only when a quick strpos() gives suspicion tags are present.
    if (isset($variables['options']['attributes']['title']) && strpos($variables['options']['attributes']['title'], '<') !== FALSE) {
      $variables['options']['attributes']['title'] = strip_tags($variables['options']['attributes']['title']);
    }

    // Allow other modules to modify the structure of the link.
    $this->moduleHandler->alter('link', $variables);

    // Move attributes out of options since generateFromRoute() doesn't need
    // them. Include a placeholder for the href.
    $attributes = array('href' => '') + $variables['options']['attributes'];
    unset($variables['options']['attributes']);
    $url->setOptions($variables['options']);

    // External URLs can not have cacheable metadata.
    if ($url->isExternal()) {
      $generated_link = new GeneratedLink();
      $attributes['href'] = $url->toString(FALSE);
    }
    else {
      $generated_url = $url->toString(TRUE);
      $generated_link = GeneratedLink::createFromObject($generated_url);
      // The result of the URL generator is a plain-text URL to use as the href
      // attribute, and it is escaped by \Drupal\Core\Template\Attribute.
      $attributes['href'] = $generated_url->getGeneratedUrl();
    }

    if (!SafeMarkup::isSafe($variables['text'])) {
      $variables['text'] = Html::escape($variables['text']);
    }
    $attributes = new Attribute($attributes);
    // This is safe because Attribute does escaping and $variables['text'] is
    // either rendered or escaped.
    return $generated_link->setGeneratedLink('<a' . $attributes . '>' . $variables['text'] . '</a>');
  }

}

পরিষেবাদি.ইএমএল সম্পাদনা করুন (সাধারণত আপনার ড্রুপাল 8 কোডবাসে সাইট / ডিফল্ট / পরিষেবাদি.আইএমএল) এবং নিম্নলিখিতগুলি যুক্ত করুন:

  services:
    link_generator:
      alias: alternative_linkgenerator.link_generator

প্রপস এখানে যায়


ধন্যবাদ, আমি একবার যেতে পারি যদিও আমি কেবল এটিই চাই কিছু নির্দিষ্ট প্রসঙ্গে, যদিও। গ্র্যান্ড ট্যুইগ ঘোষণার পরে পিএইচপি-তে খাঁটি থিসিং কাজটি করতে পেরে বিরক্তিকর। আপনার পরামর্শের জন্য ধন্যবাদ.
আর্টফুলবোট

এই ফাংশনটি ডাকা হবে বলে মনে হয় না। আমি মনে করি এটি "পৃথক শিরোনাম এবং URL টির সাথে লিঙ্ক" এর জন্য। না হয় template_preprocess_linksজিনিসটি কল হয় না (এটি সাধারণ কিছু না হলেও এটি নির্দিষ্ট কিছু)।
আর্টফুলবোট

টেমপ্লেট প্রিপ্রোসেস লিংকগুলি লিংক তালিকার জন্য যতদূর আমি দেখছি, আপনি সর্বদা আউটপুটটির জন্য টেমপ্লেট / প্রিপ্রোসেস ফাংশনটি কীভাবে ব্যবহৃত হয়েছিল তা দেখার জন্য ডাবল ডিবাগকে সক্ষম করতে পারেন
রমী

হ্যাঁ, এগুলির কোনওটিই লিঙ্ক ফর্ম্যাট করার জন্য ব্যবহৃত হয় না। আসলে core/lib/Drupal/Core/Utility/LinkGenerator.phpএর generate()ব্যবহার করা হয় এবং এই বাহিনীর টেক্সট মাধ্যমে গৃহীত হবে Html::escape()তাই সম্পূর্ণরূপে Drupal এর লিঙ্ক ফরম্যাটার বাইপাস ছাড়াই এটি করার কোন উপায় নেই।
আর্টফুলবট

আপনি অন্য কোনো মত এই সার্ভিসটি ওভাররাইড করতে পারে, এখানে দেখুন tim.millwoodonline.co.uk/post/125163259445/...
Rémy

0

এই কোড চেষ্টা করুন:

{% if links -%}
  {%- if heading -%}
    {%- if heading.level -%}
  <{{ heading.level }}{{ heading.attributes }}>{{ heading.text }}</{{ heading.level }}>
{%- else -%}
  <h2{{ heading.attributes }}>{{ heading.text }}</h2>
   {%- endif -%}
  {%- endif -%}
  <ul{{ attributes }}>
{%- for item in links -%}
  <li{{ item.attributes }}>
        {%- if item.link -%}

    <!--{{ item.link }} this line must stay -->

    <a href="{{ item.link['#url'] }}"
      {{ item.attributes.addClass(classes) }}
      {{ item.attributes.setAttribute('title', item.text ) }}
      {{ item.attributes.setAttribute('lang', item.link['#options'].language.id ) }}
      {{ item.attributes.setAttribute('aria-label', item.text ) }}>
        <img alt="{{ item.link['#title'] }}" src="/themes/subtheme/img/flag_{{ item.link['#options'].language.id }}.jpg" class="align-center">
    </a>


    {%- elseif item.text_attributes -%}
      <span{{ item.text_attributes }}>{{ item.text }}</span>
    {%- else -%}
      {{ item.text }}
    {%- endif -%}
  </li>
{%- endfor -%}

{%- শেষ যদি %}

বা এটি (এটি থেকে আসে: https://github.com/liip/bund_drupal_starterkit_theme/blob/master/templates/navication/links--language- block.html.twig ):

{% if links and links|length > 1 -%}
  <ul>
    {%- for item in links -%}
      <li>
        {%- if item.link -%}

      <!--{{ item.link }} to do: remove this line without breaking the urls -->

      {% if item.link['#options'].language.id == current_language %}
        {% set classes = ['active'] %}
      {% else %}
        {% set classes = [''] %}
      {% endif %}
      {% set url = path(item.link['#url'].routeName, item.link['#url'].routeParameters, item.link['#url'].options) %}

    {%- else -%}
      {% set classes = ['disabled'] %}
      {% set url = '#' %}
    {%- endif -%}

    <a href="{{ url }}"
      {{ item.attributes.addClass(classes) }}
      {{ item.attributes.setAttribute('title', item.text ) }}
      {{ item.attributes.setAttribute('lang', item.link['#options'].language.id ) }}
      {{ item.attributes.setAttribute('aria-label', item.text ) }}>
        {{ item.link['#options'].language.id | upper }}
    </a>
  </li>
{%- endfor -%}
  </ul>
{%- endif %}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.