m3hdi

آموزش قرار دادن ماژول ها فقط در صفحه اصلی

10 پست در این موضوع

ارسال شده در (ویرایش شده)

موضوع آموزش یه کم گیج کننده هستش شاید برای دوستان . قصه و موضوع از کجا شروع شدش ... امروز میخوام برای سایت گروهمون یه قالب جدید طراحی کنم که این قالب در صفحه اصلی نزدیک به 15 تا ماژول داشتش که فقط میخواستم در صفحه اصلی نمایش بده ... برای همین یه کم فکر کردم دیدم من باید برم تو قسمت ماژول ها برای هر کدوم از ماژول ها بیام از طریق اختصاص منو بیام فقط بگم در صفحه اصلی نمایش بده .

کار بالا یه چند تا مشکل داشتش { البته از نظر من } ::

1- قالبی دارید که از طریق داخل کدهای اچ.تی.ام.ال آن کدهایی قرار دادید که فقط میخواهید در صفحه اصلی نشون بده بدون اینکه ماژولی برای اختصاص داده باشید ....

2- برای مشتری قالبی طراحی می کنید که در اون قالب باید یه باکس خاصی فقط در صفحه اول نشون بده ، اینکه این رو بیایی هزاری هم به مشتری توضیح بدی آخر مشتری مطمئنن یادش میره اشتباه میکنه اون ماژول یه کاری میکنه در همه صفحات نشون بده و ظاهر سایت بهم می ریزه ...

3- دلیل شخصیم هم یه کم من تنبل هستم تو این مورد زیاد دوست ندارم دونه دونه ماژول ها رو باز کنم و بگم کدوم کجا نشون بده :65d6a5d6s::21:

خلاصه امیدوارم دلایلم قانع کننده باشه ....

برای همین تصمیم گرفتم یه خورده سرچ زیاد کنم تو اینترنت و انجمن های مختلف تا ببینم کدی وجود داره که باعث بشه فقط اون ماژول یا کامپوننت در صفحه اول نشان بده ... با کلی سرچ و سعی و خطا رفع باگ و مشکلات و Syntax Error ها به نتیجه ای که میخواستم رسیدم ....:4d564ad6:smile22

برای این کار شما کافی هستش که از اون قسمت که میخواهید ماژول ها در صفحه اصلی نمایش بدهد فقط کافی کد زیر را وارد کنید ::

<?php $menu = JSite::getMenu(); if ($menu->getActive() == $menu->getDefault()) : ?>

و در انتهای اون ماژول ها هم این کد وارد کنید ::

<?php endif; ?>

دوستان دقت کنید بنده ، حالت های مختلف تست کردم و این بهترین و سبک ترین حالت ممکنه هستش .... به مثال زیر توجه کنید :::

<?php $menu = JSite::getMenu(); if ($menu->getActive() == $menu->getDefault()) : ?>
<div class="col-md-3">
			<jdoc:include type="modules" name="webdesign-module"  />
		</div>
<?php endif; ?>

دقیقا ساختارش مثل بالا باید باشه ... حالا دوست داشتید به جا یک ماژول صد تا ماژول بزارید بین دستور شرطی ...

موضوع دیگه هم اینکه حتی برعکس این موضوع را هم میتوانید استفاده کنید .... و اون اینکه می توانید کاری کنید که جز صفحه اصلی در همه صفحات نمایش بدهد ...

فقط کافی به جای علامت == این علامت بزارید : =!

به کد زیر دقت کنید بازم ... :5:

<?php $menu = JSite::getMenu(); if ($menu->getActive() != $menu->getDefault()) : ?>
<?php endif; ?>

از همه جالبتر اینکه حتی بروی دستور component هم می توانید این ساختار را رعایت کنید ... یادم هستش یکی از دوستان عزیز زحمت کشیدن و پلاگین نوشتن که کامپوننت فقط در صفحه اصلی نمیاش ندهد ... دیگه با این کد نیازی به استفاده از اون پلاگین هم نیستش ...

<?php $menu = JSite::getMenu(); if ($menu->getActive() != $menu->getDefault()) : ?>
			<div class="component">
				<jdoc:include type="component" />
			</div>
		<?php endif; ?>

این بود آموزش بنده ... امیدوارم که خوشتون اومده باشد . لازم هستش که بگم این آموزش مختص طراحان و برنامه نویسان قالب جوملا هستش ....افراد مبتدی از همون راه اختصاص منو به ماژول استفاده کنند ...

موفق و پیروز باشید ....

اینم لینک کوتاه این آموزش که خواستید برای دوستانتون هم ارسال کنید :: http://goo.gl/qNkU8D

راستی به زودی { دو روز دیگه } قالب جدید وب سایت آکاوب رو نمایی می شود .... :j58r36j3gcr4suxymup[sibil]

خوشحال میشم دوستان بیان و نظراتشون بدن ...

[sibil]:auizz3ffy9vla57584x

مهدی

ویرایش شده در توسط m3hdi
قرار دادن لینک کوتاه

Share this post


Link to post
Share on other sites


یه سوال ؟

اگه بخواهیم ماژول فقط تو صفحه خودش نشون داده بشه و در هیچ صفحه ی دیگه . چه کدی رو باید قرار داد؟

ممنون دوست عزیز

Share this post


Link to post
Share on other sites

hamoon1007 من دقیق متوجه منظورتون نشدم ...

اما از طریق تخصیص هر ماژول به صفحه مورد نظر به راحتی فکر کنم اون چیزی که میخواهید میشه انجام دادش ... به مدیریت ماژول ها رفته ماژول مورد نظر خودتون انتخاب کنید و در صفحه ماژول مربوطه پایین صفحه هر صفحه که میخواهید میتوانید انتخاب کنید که تنها در اون صفحه نمایش بدهد ....

Share this post


Link to post
Share on other sites

بله متوجه هستم چی میفرمایید .

من این کارو انجام میدم ولی مشکل در موقعی هست که در طراحی قالب وقتی یک بلاک یا ماژولی را از طریق مدیریت جوملا به صفحات مورد نظر تخصیص میدم تا اینجا درست عمل میکنه ولی اگه به همون ماژول استایلی بدم مثلا border یا ارتفاع مشخص ماژول در صفحاتی تخصیص نیافته باز هم هستش البته بدون محتوا و فقط استیالی که بهش دادم باقی می مونه.

امیدوارم منظورم و خوب رسونده باشم.

اون کد های php که در بالا گفتین دقیقان مشکل منو حل کرد برای خیلی از ماژول ها، الان ماژولی هست که فقط میخوام تو همون صفحه خودش باشه نه در هیچ صفحه دیگری و به کمک شما نیاز دارم

منون از زحماتت

Share this post


Link to post
Share on other sites
خیلی عالی بود داداش.ممنون از زحماتت

از دکمه تشکر استفاده کنید ....

ممنون .

Share this post


Link to post
Share on other sites

دوست عزیز hamoon1007 برای اینکار باید برای ماژول هاست دستور شرطی تعیین کنی ...

به طوری که بالای Div مربوط به ماژولت دستور شرطی if قرار بدی و در پایین هم از endifاستفاده کنید ... به این صورت درصورتی که ماژول مورد نظر در اون صفحه نباشه دیگر استایل ها نمایش نمی دهد ...

به مثال زیر توجه کن :

<?php if($this->countModules('right')) : ?>
<div class="right-module">
	<jdoc:include type="modules" name="right" style="" />
</div>
<?php endif; ?>

من الان یک ماژول به نام right دارم که در دستور شرطی اومدم گفتم اگر ماژولی با نام right وجود داشتش این Div به همراه CSS ها اعمال کن . در غیر این صورت بیخیالش شو بپر برو قسمت بعدی ....

متاسفانه از نظر شخصی بنده این یکی از ضعف های جوملا هستش که نمی توان تعدادی صفحه در حالت کدزنی ایجاد کرد و فقط index.php هستش که تقریبا همه کدهای مربوط به قالب باید درون این فایل زدش ، مگر اینکه بخواهید بعد از کلیک یه قالب دیگری نمایش بده که در اصطلاح multi template بهش میگن .. { این ضعف از نظر من هستش . شاید برتری باشه یا راهی برای این موضوع باشه .... }

Share this post


Link to post
Share on other sites

با سلام

ببخشید این ترفند برای جوملا 2.5 هست و برای جوملا 3 خطا میده

ممنون میشم این آموزش را برای جوملا 3 نیز توضیح بدید

باسپاس

Share this post


Link to post
Share on other sites

ببخشید دوستان با یه سرچ کوچولو پیدا کردم

برای همین گفتم اینجا بنویسم تا همه عزیزان استفاده کنند

برای اینکه از این ترفند برای جوملا 3 استفاده کنید از دستور زیر استفاده نمایید

برای نمایش فقط در صفحه اول از کد زیر استفاده نمایید

<?php
$app = JFactory::getApplication();
$menu = $app->getMenu();
if ($menu->getActive() == $menu->getDefault()) : ?>
   <div class="vijeh">
			<jdoc:include type="modules" name="vijeh"  />
		</div>


<?php endif; ?>

 

 

وبرای عدم نمایش در صفحه اول

<?php
$app = JFactory::getApplication();
$menu = $app->getMenu();
if ($menu->getActive() != $menu->getDefault()) : ?>
   <div class="vijeh">
			<jdoc:include type="modules" name="vijeh"  />
		</div>


<?php endif; ?>

 

 

امیدوارم استفاده لازم را ببرید

Share this post


Link to post
Share on other sites

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری