با سلام به دوستان .
من سوالی پیرامون برنامه نویسی و طراحی ماژول در جوملا سه داشتم .
یک ماژول خیلی ساده ای بنده پیاده سازی کردم تحت عنوان نمایش مطالب ویژه .
در فایل xml که وجود داره من اومدم و در قسمت config سه پارامتر تعیین کردم به صورت زیر ::
در فایل اصلی که به نام mod_news.php هستش اومدم و با استفاده از دستورات زیر فایل helper و فایل default.php را نیز فراخوانی کردم .کد:<config> <fields name="params"> <fieldset name="basic"> <field name="limitnews" type="text" label="تعداد اخبار" description="" /> <field name="newscat" type="category" extension="com_content" label="مجموعه خبری" description="" /> <field name="ordernews" type="list" label="ترتیب نمایش" desciption="" > <option value="ASC" >صعودی</option> <option value="DESC" >نزولی</option> </field> </fieldset> </fields> </config>
در فایل helper هم برای اتصال به دیتابیس و انجام یک کوئری در دیتابیس از کدهای زیر استفاده کردم .کد:require_once dirname(__file__).'/helper.php'; require JModuleHelper::getLayoutPath('mod_p30news', $params->get('layout', 'default'));
و در آخر در صفحه مربوط به default.php با استفاده از دستورات زیر پارامتر های موجود در فایل xml فراخوانی کردم . و بعدش با استفاده از متغییر result و دستورات مربوط به foreach اون اخبار فراخوانی کردمکد:function newstemp ($category_id,$ordernews,$limitnews) { $db = JFactory::getDBO(); $sql = "SELECT * FROM #__content WHERE state=1 AND catid='$category_id' ORDER BY id $ordernews LIMIT 0,$limitnews "; $db->setQuery($sql); $result = $db->loadAssocList(); return $result; }
خوب تا اینجا همه چی اوکی هستش و مشکلی وجود نداره . پکد:$limitnews = $params->get('limitnews'); $category_id = $params->get('newscat'); $ordernews = $params->get('ordernews'); $result = modP30newsHelper::newstemp ($category_id,$ordernews,$limitnews); foreach ($result as $item) { echo '<h3>'.$item['title'].'</h3><br />'; echo mb_substr(strip_tags($item['introtext']),0,150); echo '<hr />'; }
سوال من از اینجا شروع می شود که با استفاده از پارامتر مربوط به xml که در بالا ذکر کردم شما فقط قادر هستید که یک مجموعه رو انتخاب کنید .
حالا اگر من کد بالا رو تغییر بدم و به صورت زیر قرار بدم که امکان انتخاب همزمان چند مجموعه باشه : { خاصیت multiple="true" فعال کنم }کد:<field name="newscat" type="category" extension="com_content" label="مجموعه خبری" description="" />
حالا در کوئری که من به دیتابیس می دم باید چطوری بنویسم این کوئری رو ؟کد:<field name="newscat" type="category" extension="com_content" multiple="true" label="مجموعه خبری" description="" />
کوئری که در حالت قبل من به دیتابیس می دادم به صورت زیر بود :
تو دیتابیسم و اون جدول مربوطه من یک ستون دارم با عنوان " featured " که مربوط به مطالب ویژه هستش و باید بهش بگم که اگر برابر با 1 بود بهم اون مطالب ویژه نمایش بده . به صورت زیر :کد:$sql = "SELECT * FROM #__content WHERE state=1 AND catid='$category_id' ORDER BY id $ordernews LIMIT 0,$limitnews ";
اما خروجی برای بنده درست عمل نمیکنه . اینکه مشکل کجاست دقیق نمی دونم .کد:$sql = "SELECT * FROM #__content WHERE state=1 AND featured=1 AND catid='$category_id' ORDER BY id $ordernews LIMIT 0,$limitnews ";
برای اینکه خوب متوجه مشکلم بشید براتون ماژولی که ساختم قرار دادم .
[مهمان/کاربر گرامی برای دیدن لینک ها ابتدا باید عضو سایت شوید و لاگین کنید برای ثبت نام اینجا کلیک کنید]


پاسخ با نقل قول

علاقه مندی ها (Bookmarks)