পরবর্তী সময়ে নতুন ট্যাব যুক্ত করার ক্ষেত্রে এবং এই ট্যাবগুলির অগ্রাধিকার / ক্রম পরিবর্তন করার ক্ষেত্রে আমার পদ্ধতির বিষয়টি একটু আলাদা তবে সম্ভবত আরও ভবিষ্যতের প্রমাণ।
আমি আমার থিমস এক্সএমএল ফাইলগুলিতে এক্সএমএল ফাইলের মাধ্যমে প্রতিটি ট্যাবের জন্য একটি আর্গুমেন্ট পাস করেছি
...
<arguments>
<argument name="priority" xsi:type="string">REPLACE WITH SOME NUMBER</argument>
</arguments>
...
সুতরাং আমার থিমস এক্সএমএল ফাইলটি দেখতে এরকম কিছু দেখাচ্ছে:
<referenceBlock name="product.info.details">
<referenceBlock name="product.info.description">
<arguments>
<argument name="priority" xsi:type="string">1</argument>
</arguments>
</referenceBlock>
<referenceBlock name="product.attributes">
<arguments>
<argument name="priority" xsi:type="string">3</argument>
</arguments>
</referenceBlock>
<referenceBlock name="reviews.tab">
<arguments>
<argument name="priority" xsi:type="string">4</argument>
</arguments>
</referenceBlock>
<!-- MY OWN CUSTOM BLOCK ON THE SECOND POSITION -->
<block class="Magento\Catalog\Block\Product\View\Description" name="product.features" as="features" template="product/view/features.phtml" group="detailed_info">
<arguments>
<argument translate="true" name="title" xsi:type="string">Features</argument>
<argument name="priority" xsi:type="string">2</argument>
</arguments>
</block>
<!-- MY OWN CUSTOM BLOCK ENDS HERE -->
</referenceBlock>
আরও আমাদের এডজাস্ট করতে হবে details.phtml
, তাই এটি থেকে অনুলিপি করুন
<magento_root>/vendor/magento-catalog-view/frontend/templates/product/view/details.phtml
প্রতি
<magento_root>/app/design/frontend/<Vendor>/<theme>/Magento_Catalog/templates/product/view/details.phtml
দয়া করে মনে রাখবেন যে details.phtml
ভবিষ্যতে ম্যাজেন্টো সংস্করণ বা প্যাচগুলিতে ম্যাজেন্টোর নিজস্ব পরিবর্তন করা যেতে পারে। এই পরিবর্তনগুলি আপনার থিমের ক্ষেত্রেও প্রয়োগ করা উচিতdetails.phtml
এক্সএমএল ফাইলের মাধ্যমে আমরা যে অগ্রাধিকারটি দিয়েছি সেগুলি এখন আমাদের পাওয়া দরকার।
<?php
/**
* Copyright © 2016 Magento. All rights reserved.
* See COPYING.txt for license details.
*/
// @codingStandardsIgnoreFile
?>
<?php if ($detailedInfoGroup = $block->getGroupChildNames('detailed_info', 'getChildHtml')):?>
<div class="product info detailed">
<?php $layout = $block->getLayout(); ?>
<?php
# We create a new array;
$newPriority = array();
# forEach the original $detailedInfoGroup Array;
foreach ($detailedInfoGroup as $name){
$alias = $layout->getElementAlias($name);
# Get the priority which we applied via xml file
# If no priority is applied via xml file then just set it to 10
$priority = $block->getChildData($alias,'priority') ? $block->getChildData($alias,'priority') : '10';
# variables pushed into new two-dimensional array
array_push($newPriority, array($name, $priority));
}
# Sort array by priority
usort($newPriority, function($a, $b) {
return $a['1'] <=> $b['1'];
});
?>
<div class="product data items" data-mage-init='{"tabs":{"openedState":"active"}}'>
<?php
# Delete the original forEach statement
#foreach ($detailedInfoGroup as $name)
foreach ($newPriority as $name):?>
<?php
# rename $name[0] to $name because it's a two-dimensional array
# No further changes to this file, it works as explained
$name = $name[0];
$html = $layout->renderElement($name);
if (!trim($html)) {
continue;
}
$alias = $layout->getElementAlias($name);
$label = $block->getChildData($alias, 'title');
?>
<div class="data item title"
aria-labeledby="tab-label-<?php /* @escapeNotVerified */ echo $alias;?>-title"
data-role="collapsible" id="tab-label-<?php /* @escapeNotVerified */ echo $alias;?>">
<a class="data switch"
tabindex="-1"
data-toggle="switch"
href="#<?php /* @escapeNotVerified */ echo $alias; ?>"
id="tab-label-<?php /* @escapeNotVerified */ echo $alias;?>-title">
<?php /* @escapeNotVerified */ echo $label; ?>
</a>
</div>
<div class="data item content" id="<?php /* @escapeNotVerified */ echo $alias; ?>" data-role="content">
<?php /* @escapeNotVerified */ echo $html; ?>
</div>
<?php endforeach;?>
</div>
</div>
<?php endif; ?>
সুতরাং আপনি দেখুন: আপনাকে কেবল কয়েকটি লাইন যুক্ত করতে হবে এবং সর্বদা এক্সএমএল ফাইলের মাধ্যমে ট্যাবগুলির অগ্রাধিকার / ক্রম পরিবর্তন করতে পারেন, আপনাকে details.phtml
ভবিষ্যতে আর পরিবর্তন করতে হবে না।