paeez77

متغیر شدن عرض موقعیت کامپوننت

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

با سلام من یک قالب در دست طراحی دارم که دارای سه ستون به شرح ذیل است:

[ATTACH=CONFIG]2291[/ATTACH]

من میخواهم وقتی کاربر روی مثلا مطلب «تساوی سرخابی ها» کلیک میکند موقعیت left ناپدید شود و عرض موقعیت component تا موقعیت right کش بیاید البته من موفق به ناپدید شدن موقعیت left میشوم ولی عرض موقعیت component ثابت باقی می ماند در صورتیکه من میخواهم چیزی شبیه تصویر زیر شود:

[ATTACH=CONFIG]2292[/ATTACH]

قالب basics و Shenandoah و journey از شرکت shape5 یک همچین کارآیی دارند که با کلیک بر روی قالب مربوطه میتوانید دموی آنها را مشاهده کنید

Share this post


Link to post
Share on other sites
آموزش ووکامرس قالب جوملا قالب وردپرس قالب رایگان وردپرس قالب رایگان جوملا هاست نامحدود هاست جوملا هاست لاراول هاست وردپرس هاست ارزان هاست ربات تلگرام خرید دامنه آموزش ساخت ربات تلگرام با php آموزش لاراول آموزش cPanel آموزش php آموزش فرم ساز RSform آموزش ساخت ربات جذب ممبر آموزش ساخت ربات دوستیابی آموزش ساخت ربات فروشگاهی برای ووکامرس آموزش طراحی سایت داینامیک با php آموزش بخش پشتیبانی با rsticket

دوست عزیز شما میتونید از یه شرط استفاده کنید:

در صورتی که ماژولی در موقعیت left بود برای کامپوننت استایل style1 و در غیر این صورت style2 رو قرار بده و بعد توی فایل css دوتا استایل style1 و style2 تعریف کنی که هر کدام با عرض مورد نظر خودت باشه. اگه متوجه نشدی و یا نتونستی پیاده کنی بفرمایید تا با کد توضیح بدم براتون

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

اگر از شرطی استفاده نکردید پس چه جوری تونستید ستون left رو حذف کنید؟ اوکی مهم نیست نمیدونم از چه شیوه ای استفاده کردید اما وقتی که هر موقعیت رو شرطی کنیم یعنی اینکه در صورتی که ماژولی در اون موقعیت قرار گرفت اون رو بساز و نشون بده والا نسازش اینکار رو در فایل index قالب انجام میدیم بصورت زیر:

جایی که میخواید موقعیت left رو تعریف کنید به این شکل کد نویسی کنید:

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

این کد داره میگه اگر در موقعیت left ماژولی موجود بود دایو مربوط به موقعیت مازول left رو بساز

حالا شما باید چکار کنید؟ ببین دوست من شما 3تا ستون دارید فرض میکنیم ستون چپ و راست ماژولتون عرض 200 و ستون کامپوننتون 500 هست حالا لازم هست این عرض ها رو توی استایل مربوطی که میخواید به این موقعیتها بدید معرفی کنید اما شما دوتا استایل جداگانه باید برای موقعیت کامپوننتون بنویسید یکی با عرض 500 و دیگری با عرض 700. متجه شدید چرا؟ حالا شرط بالا رو به این شکل تغییر بدید


<?php
$comstyle="style1";
if ($this->countModules( 'left' )) : ?>
<div>
<jdoc:include type="modules" name="left" style="xhtml" />
</div>
<?php
$comstyle="style2";
endif; ?>

comstyle استایلیه که میخوای به موقعیت کامپوننت بدیم و دو حالت داره یا style1 یا style2. وقتی ماژولی در موقعیت left قرار میگیره(یعنی موقعیت left وجود داره) میشه style2 وقتی موقعیت left وجود نداره میشه style1. پس این دوتا استایل رو توی فایل css قالبت بساز style1 رو با عرض 700 , styel2 رو با عرض 500

با این کار قالبت هر وقت موقعیت left نباشه بزرگ میشه. بازم اگه نتونستی پیاده کنی فایلهای قالبت رو بزار (فایل html و css قالب کافیه) تا برات درستش کنم اگه بتونم

Share this post


Link to post
Share on other sites

عزیز! دستت درد نکنه امتحانش میکنم خیلی لطف کردی واقعا ممنونم

البته من برای حذف موقعیت left از همین <?php if ($this->countModules( 'left' )) : ?> استفاده کردم و منظورم شرطی کردن استایل بود که واقعا دنیای جدیدی را برای من باز کرده که جای تشکر بسیار از شما را دارد

Share this post


Link to post
Share on other sites

comstyle استایلیه که میخوای به موقعیت کامپوننت بدیم و دو حالت داره یا style1 یا style2. وقتی ماژولی در موقعیت left قرار میگیره(یعنی موقعیت left وجود داره) میشه style2 وقتی موقعیت left وجود نداره میشه style1. پس این دوتا استایل رو توی فایل css قالبت بساز style1 رو با عرض 700 , styel2 رو با عرض 500

با این کار قالبت هر وقت موقعیت left نباشه بزرگ میشه. بازم اگه نتونستی پیاده کنی فایلهای قالبت رو بزار (فایل html و css قالب کافیه) تا برات درستش کنم اگه بتونم

متاسفانه من از اینجای گفته شما سر در نیاوردم آیا comstyle یک تابع از پیش تعیین شده توسط زبان php است یا قابل تغییر است منظور از استیل 1 و استیل 2 چیست و چگونه باید آدرس دهی کنم تا توسط فایل index.php قابل شناسایی باشد باید id موقعیت کامپوننت را به جای style1 بنویسم؟

به خاطر همین من فایل cssو html قالب مربوطه را برایتان میگذارم اگر زحمتی نیست برایم درست کنید:

[ATTACH]2321[/ATTACH]

Share this post


Link to post
Share on other sites

با سلام و ممنون از همه دوستان مشکل من با کد زیر حل شد:

<?php if($this->countModules('left')) : ?>
       <div id="maincontent-main-core"  >
                     <?php else: ?>
					<div id="maincontent-main-core1">
					<?php endif; ?> 
<jdoc:include type="message" />
	         <jdoc:include type="component" />       
       </div>

خط اول میگه اگر در موقعیت left ماژولیث موجود بود موقعیت کامپوننت را با عرض مثلا 500 بساز در غیر اینصورت(else) موقعیت کامپوننت را با عرض مثلا 750 بساز

به هر حال از همه دوستان ممنون من این کد را از قالب milkyway هسته جوملا پیدا کردم

Share this post


Link to post
Share on other sites

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

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

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

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


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

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

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


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