মার্কডাউনে শর্টকোড ব্যবহার
শর্টকোড হলো সহজ স্নিপেট যা আপনাকে HTML বা জটিল কোড না লিখে মার্কডাউন ডকুমেন্টে জটিল ফাংশনালিটি এম্বেড করতে দেয়। এগুলি সাধারণত স্ট্যাটিক সাইট জেনারেটরে ব্যবহৃত হয়।
শর্টকোড কী?
শর্টকোড হলো প্লেসহোল্ডার যা বিল্ড প্রক্রিয়ার সময় রেন্ডার্ড কন্টেন্ট দিয়ে প্রতিস্থাপিত হয়। এগুলি সাধারণত এইরকম দেখায়:
markdown
{{< shortcode-name param1="value1" >}}
অথবা
{{% shortcode-name %}}
এখানে কন্টেন্ট
{{% /shortcode-name %}}সাধারণ শর্টকোড সিনট্যাক্স ফরম্যাট
Hugo সিনট্যাক্স
markdown
<!-- সেলফ-ক্লোজিং -->
{{< youtube id="dQw4w9WgXcQ" >}}
<!-- কন্টেন্ট সহ -->
{{% note type="warning" %}}
এটি গুরুত্বপূর্ণ তথ্য!
{{% /note %}}Jekyll/Liquid সিনট্যাক্স
markdown
{% youtube "dQw4w9WgXcQ" %}
{% highlight javascript %}
console.log("Hello World");
{% endhighlight %}Gatsby/MDX কম্পোনেন্ট
markdown
<YouTube videoId="dQw4w9WgXcQ" />
<Note type="warning">
এটি গুরুত্বপূর্ণ তথ্য!
</Note>বিল্ট-ইন শর্টকোড
Hugo বিল্ট-ইন শর্টকোড
Figure/Image
markdown
{{< figure src="/images/sunset.jpg"
title="সুন্দর সূর্যাস্ত"
caption="ক্যালিফোর্নিয়ায় তোলা"
alt="মহাসাগরের উপর সূর্যাস্ত"
width="800" >}}YouTube
markdown
{{< youtube dQw4w9WgXcQ >}}
<!-- প্যারামিটার সহ -->
{{< youtube id="dQw4w9WgXcQ" autoplay="true" >}}Twitter
markdown
{{< twitter user="github" id="1234567890" >}}Instagram
markdown
{{< instagram BWNjjyYFxVx >}}Gist
markdown
{{< gist username 0123456789abcdef >}}Jekyll বিল্ট-ইন ট্যাগ
হাইলাইট কোড
markdown
{% highlight ruby linenos %}
def hello
puts "Hello World"
end
{% endhighlight %}ফাইল ইনক্লুড করুন
markdown
{% include header.html %}
{% include_relative ../shared/footer.html %}পোস্টে লিঙ্ক
markdown
{% post_url 2024-01-15-my-post %}
{% link _posts/2024-01-15-my-post.md %}কাস্টম শর্টকোড তৈরি
Hugo কাস্টম শর্টকোড
layouts/shortcodes/button.html এ একটি ফাইল তৈরি করুন:
html
<a href="{{ .Get "url" }}" class="button {{ .Get "style" }}">
{{ .Inner }}
</a>
ব্যবহার:
```markdown
{{< button url="/docs" style="primary" >}}
Read Documentation
{{< /button >}}আরও জটিল উদাহরণ
layouts/shortcodes/callout.html:
html
{{ $type := .Get "type" | default "info" }}
<div class="callout callout-{{ $type }}">
<div class="callout-title">
{{ with .Get "title" }}{{ . }}{{ end }}
</div>
<div class="callout-content">
{{ .Inner | markdownify }}
</div>
</div>
ব্যবহার:
```markdown
{{% callout type="warning" title="Important" %}}
This is a **warning** message with *Markdown* support.
{{% /callout %}}Jekyll কাস্টম ট্যাগ
_plugins/custom_tag.rb এ একটি প্লাগিন তৈরি করুন:
ruby
module Jekyll
class CustomTag < Liquid::Tag
def initialize(tag_name, params, tokens)
super
@params = params
end
def render(context)
"<div class='custom-tag'>#{@params}</div>"
end
end
end
Liquid::Template.register_tag('custom', Jekyll::CustomTag)ব্যবহার:
markdown
{% custom "আমার কাস্টম কন্টেন্ট" %}ব্যবহারিক শর্টকোড উদাহরণ
অ্যালার্ট/নোটিশ বক্স
markdown
{{% alert type="info" %}}
ℹ️ This is an informational message.
{{% /alert %}}
{{% alert type="warning" %}}
⚠️ This is a warning message.
{{% /alert %}}
{{% alert type="danger" %}}
🚨 This is a danger message.
{{% /alert %}}কোড ট্যাব
markdown
{{< tabs >}}
{{< tab "JavaScript" >}}
```javascript
console.log("Hello");{{< /tab >}}
{{< tab "Python" >}}
python
print("Hello"){{< /tab >}} {{< /tabs >}}
### এক্সপ্যান্ডেবল সেকশন
```markdown
{{< expand "Click to expand" >}}
This content is hidden by default and can be expanded.
It can contain **any Markdown** including:
- Lists
- Code blocks
- Images
{{< /expand >}}এক্সটার্নাল কন্টেন্ট এম্বেড করুন
markdown
<!-- CodePen -->
{{< codepen user="username" id="abcdefg" >}}
<!-- JSFiddle -->
{{< jsfiddle url="https://jsfiddle.net/username/abc123" >}}
<!-- CodeSandbox -->
{{< codesandbox id="abc123" >}}গ্যালারি/লাইটবক্স
markdown
{{< gallery >}}
{{< img src="image1.jpg" caption="First image" >}}
{{< img src="image2.jpg" caption="Second image" >}}
{{< img src="image3.jpg" caption="Third image" >}}
{{< /gallery >}}বিষয়বস্তু সূচি
markdown
{{< toc >}}
<!-- With options -->
{{< toc levels="2,3" >}}Mermaid ডায়াগ্রাম
markdown
{{< mermaid >}}
graph TD;
A-->B;
A-->C;
B-->D;
C-->D;
{{< /mermaid >}}উন্নত শর্টকোড প্যাটার্ন
প্যারামিটারাইজড শর্টকোড
markdown
<!-- Named parameters -->
{{< card title="My Title"
image="/images/card.jpg"
link="/read-more"
button="Learn More" >}}
<!-- Positional parameters -->
{{< youtube "dQw4w9WgXcQ" "16:9" >}}নেস্টেড শর্টকোড
markdown
{{< columns >}}
{{< column size="6" >}}
Left column content
{{< /column >}}
{{< column size="6" >}}
Right column content
{{< /column >}}
{{< /columns >}}কন্ডিশনাল রেন্ডারিং
Hugo উদাহরণ:
html
{{ if .Get "show" }}
<div class="optional-content">
{{ .Inner }}
</div>
{{ end }}পেজ ভেরিয়েবল অ্যাক্সেস
html
<!-- In shortcode template -->
<div class="page-info">
<h3>{{ .Page.Title }}</h3>
<p>Last modified: {{ .Page.Lastmod }}</p>
<p>Reading time: {{ .Page.ReadingTime }} minutes</p>
</div>শর্টকোড সেরা অনুশীলন
- সহজ রাখুন: শর্টকোড মনে রাখা এবং ব্যবহার করা সহজ হওয়া উচিত
- স্পষ্ট নামকরণ: কার্যকারিতা নির্দেশ করে এমন বর্ণনামূলক নাম ব্যবহার করুন
- ডকুমেন্টেশন: সমস্ত প্যারামিটার এবং ব্যবহারের উদাহরণ ডকুমেন্ট করুন
- এরর হ্যান্ডলিং: সংবেদনশীল ডিফল্ট প্রদান করুন এবং অনুপস্থিত প্যারামিটার হ্যান্ডেল করুন
- পারফরম্যান্স: ঘনঘন ব্যবহৃত শর্টকোডে জটিল গণনা এড়িয়ে চলুন
- অ্যাক্সেসিবিলিটি: তৈরি করা HTML অ্যাক্সেসিবল কিনা তা নিশ্চিত করুন
- মোবাইল ফ্রেন্ডলি: মোবাইল ডিভাইসে শর্টকোড পরীক্ষা করুন
সাধারণ ব্যবহারের ক্ষেত্র
ডকুমেন্টেশন
markdown
<!-- API endpoint documentation -->
{{< api method="GET" path="/api/users" >}}
Returns a list of all users.
{{< /api >}}
<!-- Parameter documentation -->
{{< param name="userId" type="string" required="true" >}}
The unique identifier for the user.
{{< /param >}}ই-লার্নিং
markdown
<!-- Quiz questions -->
{{< quiz >}}
{{< question "What is 2+2?" >}}
{{< answer correct="true" >}}4{{< /answer >}}
{{< answer >}}3{{< /answer >}}
{{< answer >}}5{{< /answer >}}
{{< /question >}}
{{< /quiz >}}প্রোডাক্ট শোকেস
markdown
{{< product-card
name="Premium Widget"
price="$99.99"
image="/products/widget.jpg"
rating="4.5"
reviews="245" >}}শর্টকোড বনাম কম্পোনেন্ট
| ফিচার | শর্টকোড | React কম্পোনেন্ট |
|---|---|---|
| বিল্ড টাইম | ✅ বিল্ডে রেন্ডার্ড | ❌ রানটাইম |
| ইন্টারঅ্যাক্টিভিটি | ❌ স্ট্যাটিক | ✅ ডাইনামিক |
| লার্নিং কার্ভ | ✅ সহজ | ⚠️ মাঝারি |
| ফ্লেক্সিবিলিটি | ⚠️ সীমিত | ✅ উচ্চ |
| পারফরম্যান্স | ✅ দ্রুত | ⚠️ বান্ডেলের উপর নির্ভরশীল |
HTML থেকে শর্টকোডে মাইগ্রেশন
আগে (Raw HTML)
markdown
<div class="alert alert-warning" role="alert">
<h4 class="alert-heading">Warning!</h4>
<p>This is a warning message.</p>
</div>
### পরে (শর্টকোড)
```markdown
{{% alert type="warning" title="Warning!" %}}
This is a warning message.
{{% /alert %}}শর্টকোড ডিবাগিং
Hugo ডিবাগ
html
<!-- In shortcode template -->
{{ printf "%#v" . }}
<!-- Print all params -->
{{ range $key, $value := .Params }}
{{ $key }}: {{ $value }}
{{ end }}Jekyll ডিবাগ
ruby
def render(context)
puts "Debug: #{@params.inspect}"
# ... rest of code
endপারফরম্যান্স বিবেচনা
- ক্যাশিং: ব্যয়বহুল গণনা ক্যাশ করুন
- লেজি লোডিং: নন-ক্রিটিক্যাল কন্টেন্ট স্থগিত করুন
- API কল কমান: সম্ভব হলে রিকোয়েস্ট ব্যাচ করুন
- ইমেজ অপ্টিমাইজ: উপযুক্ত সাইজ এবং ফরম্যাট ব্যবহার করুন
- কোড স্প্লিটিং: প্রয়োজন হলে JavaScript লোড করুন
উপসংহার
শর্টকোড কন্টেন্ট ফাইল পরিষ্কার এবং রক্ষণাবেক্ষণযোগ্য রাখার সময় কাস্টম ফাংশনালিটি দিয়ে মার্কডাউন এক্সটেন্ড করার একটি শক্তিশালী উপায় প্রদান করে। আধুনিক স্ট্যাটিক সাইট এবং ডকুমেন্টেশন সিস্টেম তৈরির জন্য এগুলি অপরিহার্য টুল।