স্মার্ট অনুসন্ধান সূচীতে কম_সামান্য অতিরিক্ত ক্ষেত্রগুলি কীভাবে যুক্ত করা যায়


10

আমি "অনপ্রেফায়ারফাইন্ডার কনটেন্ট" পরিচালনা করে এমন একটি প্লাগইন তৈরির জন্য কোনও টিউটোরিয়াল বা নির্দেশাবলী কোথায় পেতে পারি?

আমি কম_সামান্য নিবন্ধগুলিতে কিছু অতিরিক্ত ক্ষেত্র যুক্ত করেছি এবং আমি সেগুলি অনুসন্ধানকারী ইঞ্জিন দ্বারা সূচিযুক্ত করাতে চাই।

আমি FinderIndexerResultঅবজেক্টটিতে নতুন উপাদান যুক্ত করার একটি উপায় অনুসন্ধান করছি index

আমি এই লাইনের কোডটি 311 লাইনে প্লাগইন / সন্ধানকারী / সামগ্রী / সামগ্রী.php এ দেখেছি:

// Get content extras.
FinderIndexerHelper::getContentExtras($item);

FinderIndexerHelper :: getContentExtras ফাংশনটি FinderIndexerResult অবজেক্টটি যা সূচী হতে চলেছে তা গ্রহণ করে এবং তারপরে একটি "onPrePareFinderContent" ইভেন্ট ট্রিগার করে, যা (আমি মনে করি) 3dparty প্লাগইনকে সূচিযুক্ত হতে যাওয়া সামগ্রীটি সংশোধন বা সংশোধন করার অনুমতি দেয়।

আপনার কারও কারও এ বিষয়ে কোনও অভিজ্ঞতা আছে বা কিছু ভাল টিউটোরিয়াল / ডকুমেন্টেশন সম্পর্কে আমাকে নির্দেশ করতে পারেন?

উত্তর:


4

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

আপনার কাছে আমার পরামর্শটি হ'ল অনুসন্ধানকারীর জন্য সামগ্রী সূচক প্লাগইনটি কাঁটাচামচ করা এবং তারপরে আপনার যুক্ত করা ক্ষেত্রগুলিতে কল করতে এটি সেট আপ করা।

আপনি যে প্রথম কাজটি করবেন তা হ'ল আপনার অতিরিক্ত ক্ষেত্র সারণিতে যোগদানের জন্য ফাইন্ডারে getListQuery সংশোধন করুন:

https://github.com/joomla/joomla-cms/blob/staging/plugins/finder/content/content.php#L341

তারপরে, কীভাবে আপনি আপনার অতিরিক্ত ক্ষেত্রগুলি (জেআরজিস্ট্রি অবজেক্ট?) সংরক্ষণ করবেন তার উপর নির্ভর করে আপনাকে কেবল অনুসন্ধানে কী কী অতিরিক্ত ক্ষেত্রগুলি পেয়েছেন তা দেখার জন্য আপনাকে বলতে হবে:

আমার মনে হচ্ছে আপনি এটিকে কিছু মেটা তথ্য হিসাবে যুক্ত করবেন: https://github.com/joomla/joomla-cms/blob/stasing/plugins/finder/content/content.php#L286

আশাকরি এটা সাহায্য করবে


3

একটি সোবিপ্রো-স্মার্ট অনুসন্ধান প্লাগইনটির জন্য কাজ করে আমরা গেটআইটেমগুলিতে অতিরিক্ত ক্ষেত্র যুক্ত করেছি , ফাইন্ডার ইন্ডেক্সার রেজাল্ট হিসাবে সূচীকরণের জন্য আইটেমগুলি প্রক্রিয়াকরণ এবং পরে প্রতিটি আইটেমের সূচীতে প্রতিটি অতিরিক্ত ক্ষেত্রের নির্দেশ যুক্ত করে :

protected function index(FinderIndexerResult $item, $format = 'html')
{
...

            $fields = $this->_fields[$item->section];

            foreach ($fields as $f)
            {
                $nid = $f->get('nid');

                if (isset($item->$nid))
                {
                    $item->addInstruction(FinderIndexer::TEXT_CONTEXT, $nid);
                }
            }
...

আপনাকে ধন্যবাদ, আপনার উত্তরটি আমাকে সঠিক দিকে পিন্ট করেছে;) অবশেষে আমি একটি ফাইন্ডার প্লাগইন লিখেছি (জেপ্লুগিন প্রসারিত করে) যা প্রিপেইফাইন্ডার কনটেন্ট ইভেন্টটি প্রয়োগ করে (FinderIndexerHelper :: getContentExtras দ্বারা বরখাস্ত)। আমি তারপরে আপনার নির্দেশাবলী এবং সংশ্লিষ্ট অতিরিক্ত ক্ষেত্রগুলির মতো নির্দেশাবলী যুক্ত করেছি: public function onPrepareFinderContent(FinderIndexerResult &$row) { .... $row->addInstruction(FinderIndexer::TEXT_CONTEXT, $field->id); $row->setElement($field->id, $field->value); .... }
ক্রিশ্চিয়ানো

অসাধারণ! আপনি কি প্রশ্নটিকে সমাধান হিসাবে চিহ্নিত করতে হবে?
অনিবল

@ ক্রিশ্চিয়ানো: আপনি কি কখনও এই সমাধান করেছেন? কোনও গ্রহণযোগ্য উত্তর নেই, এবং আমিও একই সমস্যার মুখোমুখি হয়েছি - আপনি কী কখনও এই রুটিনগুলি ব্যবহার করবেন তা ভেবে দেখেছেন?
জিডিপি

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