মেনু আইটেম হিসাবে মডিউল


11

আমাকে একটি মেনু আইটেম (ডিফল্ট মেনু মডিউল) হিসাবে সন্ধানের মডিউলটি প্রবেশ করানো দরকার।

আমার এই আউটপুটটি দরকার:

<ul>
    <li>menu item</li>
    <li>menu item</li>
    <li>SEARCH MODULE</li>
    <li>menu item</li>
    ...
</ul>

আমার প্রথম চিন্তাগুলি হবে ডিফল্ট মেনু মডিউলটিকে দুবার নকল করা:

  1. ক্লোজিং </ul>ট্যাগ ব্যতীত অনুসন্ধান মডিউলের আগে মেনু আইটেমগুলি প্রদর্শন করা এক
  2. খোলার <ul>ট্যাগ ছাড়াই অনুসন্ধান মডিউলটির পরে মেনু আইটেমগুলি প্রদর্শনের জন্য অন্য একজন

এবং তাদের মধ্যে অনুসন্ধান মডিউল inোকান। এটি আমার লক্ষ্য অর্জনের সবচেয়ে সহজ এবং সর্বাধিক রক্ষণাবেক্ষণযোগ্য উপায় বলে মনে হয় না যেমন এটি প্রয়োজন:

  • মেনু জন্য 3 মডিউল অবস্থান
  • মেনু ম্যানেজারে 2 ডাইফেরেন্ট মেনু

আমি জানি আমি এটি করতে কিছু মেগা মেনু মডিউল ব্যবহার করতে পারি তবে আমি তৃতীয় পক্ষের এক্সটেনশনগুলি এড়াতে এবং কাস্টম কোডটি ব্যবহার করতে পারি যা আমি নিয়ন্ত্রণ করতে পারি।

আমি কীভাবে ডিফল্ট মেনুতে মেনু আইটেম হিসাবে মডিউল যুক্ত করতে পারি?


আপনি কিছু সিএসএস ঠাট সঙ্গে দুটি ভিন্ন মেনু + + এক সার্চ ব্যবহার করতে পারেন কিন্তু আপনি যদি ঠিক উপরে গঠন চান, আপনি বিবেচনা করতে পারে jQueryমতো কাজগুলির append()বা prepend()যা JavaScript-অক্ষমিত ব্রাউজারে কাজ করবে না।
ফারহমান্দ

আমি পরিবর্তে উপাদানগুলি সরানোর জন্য jQuery ব্যবহার করব না এবং আরও ভাল উপায় না থাকলে প্রশ্নে বর্ণিত কৌশলটি ব্যবহার করব ...
ওয়েব-টিকি

1
আমার সন্দেহ হয় আপনাকে হয় একটি মেগা মেনু এক্সটেনশন, বা একটি স্নিপেট টাইপ সিস্টেম ব্যবহার করতে হবে যা একটি স্নিপেট কোড সহ টেনে এনে মডিউলটিকে ড্রপ ডাউনে লোড করবে। ননবার স্নিপেটগুলি কোথাও ননবার মডিউলগুলির সাথে মিলিত হতে পারে work স্টক মেনু সিস্টেমটি কেবল এর জন্য নির্মিত হয়নি। আমার অর্থ, আমি অনুমান করি যে কেবল মেনু আউটপুটকে ওভাররাইড করা সম্ভব তবে ত্রুটিটি হ'ল কেবলমাত্র শেল্ফ আপগ্রেডেবল প্লাগইনগুলি ব্যবহার না করে আপনার সম্পূর্ণ কাস্টম মেনু রয়েছে।
ব্রায়ান পিট

খুব নিশ্চিত ব্রায়ানের ঠিক আছে। হয় আপনাকে মেনুটিকে ওভাররাইড করতে হবে এবং এর ফাংশনগুলি আবার লিখতে হবে, বা আপনার কোনও তৃতীয় পক্ষ ব্যবহার করতে হবে। NoNumber আপনার সর্বনিম্ন স্ফীত তৃতীয় পক্ষের বিকল্প হবে।
ফাই

আপনি এখনই মডিউলটিতে একটি লিঙ্ক জেনারেট করছেন কীভাবে? আপনার কি মেনুতে একটি কাজের লিঙ্ক আছে?
ডেভিড ফ্রিশচ

উত্তর:


4

আপনার মেনুতে অনুসন্ধান মডিউলটি লোড করার জন্য এখানে একটি বিকল্প রয়েছে। এর জন্য কয়েকটি সহজ পদক্ষেপের প্রয়োজন:

1. আপনার mod_menuমডিউল ওভাররাইড করুন

  • আপনার টেম্পলেট ফোল্ডারে একটি ওভাররাইড তৈরি করুন \templates\YOURTEMPLATE\html\mod_menu\default_url.php
  • নিম্নলিখিত বিষয়বস্তু ফাইলটি অনুলিপি করুন:

default_url.php

 <?php
 /**
 * @package     Joomla.Site
 * @subpackage  mod_menu
 *
 * @copyright   Copyright (C) 2005 - 2014 Open Source Matters, Inc. All rights   reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

// Note. It is important to remove spaces between elements.
$class = $item->anchor_css ? 'class="' . $item->anchor_css . '" ' : '';
$title = $item->anchor_title ? 'title="' . $item->anchor_title . '" ' : '';

if ($item->menu_image)
    {
        $item->params->get('menu_text', 1) ?
        $linktype = '<img src="' . $item->menu_image . '" alt="' . $item->title . '"   /><span class="image-title">' . $item->title . '</span> ' :
        $linktype = '<img src="' . $item->menu_image . '" alt="' . $item->title . '"  />';
 }
 else
 {
    $linktype = $item->title;
 }

 $flink = $item->flink;
$flink = JFilterOutput::ampReplace(htmlspecialchars($flink));
if ($linktype == "CustomSearchBox"){
    $document   = &JFactory::getDocument();
    $renderer   = $document->loadRenderer('modules');
    $options    = array('style' => 'xhtml');
    $position   = 'CustomSearchBox';
    echo $renderer->render($position, $options, null);
}
else {

switch ($item->browserNav) :
    default:
    case 0:
?><a <?php echo $class; ?>href="<?php echo $flink; ?>" <?php echo $title; ?>><?php echo $linktype; ?></a><?php
        break;
    case 1:
        // _blank
?><a <?php echo $class; ?>href="<?php echo $flink; ?>" target="_blank" <?php echo $title; ?>><?php echo $linktype; ?></a><?php
        break;
    case 2:
        // window.open
        $options = 'toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,'.$params->get('window_open');
            ?><a <?php echo $class; ?>href="<?php echo $flink; ?>" onclick="window.open(this.href,'targetWindow','<?php echo $options;?>');return false;" <?php echo $title; ?>><?php echo $linktype; ?></a><?php
        break;
endswitch;
}

আমি if-else# 29 লাইনে শুরু করে একটি বিবৃতি যুক্ত করেছি , যা মেনু আইটেমের শিরোনামটি "কাস্টমসন্ধানবক্স" কিনা তা পরীক্ষা করে। যদি এটি হয় তবে মডিউল অবস্থান "কাস্টমসন্ধানবক্স" লোড করা হবে। যদি তা না হয় তবে সাধারণ মেনু আইটেমটি ফেরত দেওয়া হয়। আপনি নিজের পছন্দমতো যেকোন কিছুতে "কাস্টমসন্ধানবক্স" পরিবর্তন করতে পারেন তবে নীচের পদক্ষেপগুলিতে যদি আপনি একই মানটি ব্যবহার করতে ভুলবেন না তবে।

২. একটি নতুন অনুসন্ধান মডিউল তৈরি করুন

অনুসন্ধান মডিউল তৈরি করুন এবং প্রয়োজনীয় হিসাবে প্যারামিটার সেট করুন (আমি মডিউল শিরোনামটি আড়াল করার পরামর্শ দিই)।

কাস্টম অবস্থান "কাস্টমসন্ধানবক্স" এ মডিউলটি প্রকাশ করুন

3. একটি নতুন মেনু আইটেম তৈরি করুন

মেনু আইটেমটি যে কোনও প্রকারের হতে পারে, আমি "বাহ্যিক ইউআরএল" পরামর্শ দিই এবং নামটি "কাস্টমসন্ধানবক্স" হওয়া আবশ্যক।

আপনার মেনু আইটেমটি সংরক্ষণ করুন, এবং পুরো মেনু আইটেমটি অনুসন্ধান বাক্সের সাথে প্রতিস্থাপন করা হবে!

কিছু অস্পষ্ট হলে আমাকে জানান know


উত্তরের জন্য Thx। আমি ইতিমধ্যে আমার টেমপ্লেটে (লোগো) মডিউল পজিশনে আপনার কৌশলটি ব্যবহার করার চেষ্টা করেছি তবে এটি কাজ করে বলে মনে হচ্ছে না। আমার টেম্পলেটটিতে "কাস্টমসন্ধানবক্স" অবস্থান তৈরি করার চেষ্টা করা উচিত এবং সেটিকে ব্যবহার করা উচিত?
ওয়েব-টিকি

হ্যাঁ আপনার পছন্দসই অবস্থান "কাস্টমসন্ধানবক্স" তৈরি করা উচিত এবং এটি ব্যবহার করা উচিত। অথবা আপনি এখানে উপরের $linktype == "CustomSearchBox"$position = 'CustomSearchBox';
কোডটিতে

আপনাকে আসলে অবস্থানটি তৈরি করতে হবে না (আপনার index.php বা টেম্পলেট.এক্সএমএল ফাইলগুলিতে)। CustomSearchBoxমডিউল পজিশন ফিল্ডে কেবল লিখুন এবং এন্টার টিপুন।
johanpw

ঠিক আছে, আমার কাছে ফিনালির কাছে এই সময়টি আসার সময় ছিল, এটির কাজটি করার জন্য আমাকে আপনার কোডটি টুইঙ্ক করতে হয়েছিল। 1 / কোনও কারণে এটি জোটেনি কারণ আমি মেনু আইটেমটিতে এবং চিত্রটি ব্যবহার করছিলাম। 2 / আমি আপনার কোডের 30 লাইনে পরিবর্তন করেছি $document = JFactory::getDocument();। এখন এটি কাজ করে তবে আমাকে আবার আমার ইমেজ যুক্ত করার উপায় খুঁজে বের করতে হবে।
ওয়েব-টিকি 18

আরও কিছু টুইট করলাম: আমি মেনু আইটেমের শিরোনামের চেয়ে সিএসএস মেনু আইটেম ক্লাসে আইপি স্টেটমেন্টটি ভিত্তিক করেছি এবং প্রতিধ্বনি ফাংশনটিতে যুক্ত করেছি $linktype। কোডটি এখানে দৃশ্যমান: phpad.org/1645824385 । আমাকে সঠিক দিকে নির্দেশ করার জন্য ধন্যবাদ এটি এমন কিছু যা আমি কিছু সময়ের জন্য অর্জন করতে চাইছিলাম এটি এখন দুর্দান্ত! :)
ওয়েব-টিকি 18 ই

1

যদিও আপনি বলছেন যে আপনি তৃতীয় পক্ষের এক্সটেনশনগুলি ব্যবহার করতে চান না, আমার কাছে একটি সমাধান রয়েছে যা রকেট থেম থেকে রকক্যান্ডি ব্যবহার করে । এটি একটি ছোট স্নিপেট উপাদান যা মেনুতে অনুসন্ধান ক্ষেত্রটি যুক্ত করা খুব সহজ করে তোলে। কেবল প্লাগইনটি ইনস্টল করুন এবং এর মতো একটি নতুন ম্যাক্রো তৈরি করুন:

ম্যাক্রো

 [searchfield][/searchfield]

এইচটিএমএল

<form action="index.php" method="post" class="form-inline" _lpchecked="1">
 <input name="searchword" id="mod-search-searchword" maxlength="20" class="inputbox search-query" type="text" size="20" value="Search..." onblur="if (this.value=='') this.value='Search...';" onfocus="if (this.value=='Search...') this.value='';">       
 <input type="hidden" name="task" value="search">
 <input type="hidden" name="option" value="com_search">
 <input type="hidden" name="Itemid" value="101">

সংরক্ষণ করেন এবং বন্ধ করেন.

এখন অনুসন্ধান বাক্সের জন্য একটি মেনু আইটেম তৈরি করুন (আমি External URLটাইপ হিসাবে প্রস্তাব দিচ্ছি , তবে যে কোনও মেনু আইটেমের ধরণটি করবে), এবং শিরোনাম ক্ষেত্রে, যুক্ত করুন [searchfield][/searchfield]:

মেনুতে সার্চফিল্ড

রোকক্যান্ডি শিরোনামটি ম্যাক্রোর কোডের সাথে প্রতিস্থাপন করবে এবং আপনি মেনুতে একটি অনুসন্ধান ক্ষেত্র পাবেন:

ফলাফল

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.