PDA

View Full Version : پیش فرض سوال در مورد چیدمان صفحات مدیریت محتوا



nekooee
دوشنبه 22 تیر 1388, 17:36 عصر
با سلام

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

یک سوال برای من پیش آمد. اینکه وقتی سیستمهای مختلف را طراحی کردیم صفحه اول که این مثلا اخبار روز قرار میگیره به چه شکل ساخته میشه؟ با کدهای html?
مثلا وقتی طرف از کنترل پنل یک متن جدید میزنه این متن خودش میره بالای متنهای دیگر قرار میگیره و بعد از چند خط ادامه مطلب داره. خوب اون قسمتی که با زدن نامه جدید خودش عوض میشه از چه سیستمی استفاده میکنه؟ با تابع includ صفحات وارد میشن؟
من با این تابع اینکار رو کردم اما مشکلات زیادی داره مثلا صفحات به علت تغییر سایز به هم میریزند و مشکل دیگر اینکه table که با html ساختم بعد از includ کردن یک صفحه دیگر به مشکل بر میخوره و خانه های دیگر table حذف شده و یا به شدت به هم میریزند و اون ترکیبی که ما می خوایم رو دیگه ندارند.
من می خوام صفحه مثلا به سه قسمت تقسیم بشه دو قسمت در دو طرف و یک قسمت در وسط که بزرگتر است و محتوای اصلی قرار میگیره و در قسمتهای دو طرف هم سیستم عضو گیری و چیزهای دیگر رو قرار بدم این تقسیم بندی رو با چه شکلی انجام بدم که اصولی تر باشه و به هم نریزه و ....


لطفا در این مورد من رو راهنمایی کنید با تشکر

امیـرحسین
دوشنبه 22 تیر 1388, 19:05 عصر
سلام

اول بفرمایید که شما از چه سیستمی استفاده می کنید، نحوه تغییر چیدمان در سیستمهای مختلف کامل متفاوته.
اگر منظورتون از کنترل پنل، یه سایت نمونه بوده و میخواید الگوبرداری کنید تا سیستم خودتون رو بسازید، نحوه کار تقریبا همه سیستمها براساس دیتابیسه.
توی دیتابیس، یک جدول مثلا به مطالب اختصاص داده میشه که هر سطر این جدول مخصوص یک مطلبه. اطلاعات هر مطلب نظیر عنوانش، متنش، تاریخ ثبتش، آیدی سازنده و .... در این سطر ذخیره میشه و موقع نمایش، توسط یک کد ابتدا سطرهای ذخیره شده براساس تاریخ مرتب میشن (نزولی) و مثلا 10 سطر اول (که جدیدترین مطالب میشن) دریافت میشه.
در انتها یک قالب(template) برای چیدمان تعیین میشه که مثلا عنوان کجا و چه جوری چاپ شه، تاریخ به چه شکل نمایش داده بشه و ...
این قالب به تعداد مطالبی که لازم داریم پردازش میشه و متغیرها جایگزین میشن و چاپ میشه.

اگر با ساختار دیتابیس آشنا نیستید، این توضیحات کمی گیج کننده به نظر میان ولی وقتی آشنا بشید، میفهمید که خیلی ساده و قابل درکه.

nekooee
دوشنبه 22 تیر 1388, 20:38 عصر
خیلی از توضیحات شما ممنون. با دیتابیس آشنایی دارم و گیج نشدم. ولی جوابم رو کامل نگرفتم.
منظور من کلی بود و نرم افزار خاصی مد نظرم نبود.
مثلا phpnuk و اکثر سایتهای دیگر مطالب در وسط قرار میگیره و دو طرف منوهای مختلف وجود دارد.
خوب اینطور که شما فرمودید مطالب وسط از دیتابیس میاد اما مثلا سیستم عضو گیری و خیلی منوهای دیگر از دیتابیس نمیاد و باید صفحات انها در صفحه اصلی لود بشه. من اینکار را با دستور include انجام دادم اما جواب خیلی ناراضی کننده بود چون جدولها به هم می ریخت.
و یکی از قسمتهای سوال من همان قالب بود. آیا این قالب با کدهای div در html طراحی میشن یا به شکل دیگر؟ چون کدهای div در html من رو راضی نمیکنه با اینکه براشون css تعریف کردم ولی در هنگام قرار دادن مطالب مختلف در آنها بسته به نوع مطالب و شکلها ترکیبشون به هم میریزه و اذیت میکنند. برای include کردن صفحات دیگر هم که خیلی به مشکل بر می خوردم چون با اولین صفحه ای که include می کردم کل جداول به هم می ریخت و حتی ناپدید می شدند!
من تازه کارم و می خوام همینطور که یاد میگیرم سایتی رو طراحی کنم که اصولی باشه و استفاده همگانی داشته باشه. نمی خوام بعد از طراح کل سایت تازه متوجه بشم مثلا صفحه اخبار را که من include کردم همه جا با دیتابیس طراحی میشه! شاید سایت درست کار کنه اما برای همه نامأنوس خواهد بود

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

ببخشید خیلی سوالم طولانی شد سعی کردم منظورم را کامل برسونم

امیـرحسین
دوشنبه 22 تیر 1388, 22:35 عصر
اول اینکه روش include مشکلی نداره. بهم ریختن صفحه یا بخاطر عدم تراز در CSS هست یا بخاطر اشکال تو کدهای HTML میتونه باشه. مثلا کدهای include یک <div> داره که بسته نشده و وقتی وارد قالب کلی میشه مشکل ایجاد می کنه. بعد از لود صفحه، کدهای HTMLاش رو چک کنید ببنید کجاش مشکل داره.

نکته دوم اینه که اگر دنبال ساخت یک سیستم استاندارد هستید، table رو فراموش کنید و از همون div استفاده کنید که استفاده از table میتونه ارزش کارتون رو پایین بیاره. مثلا اکثر بلاگهای ایرانی مثل بلاگفا و پرشین بلاگ، ساخته شدن با جدول باعث میشه من شخصا وقتی مجبورم صفحه ای رو ازشون باز کنم، کلی غصه بخورم که سرعت لودش پایینه!

درباره نحوه ساخته شده، بله از کدهای HTML استفاده می کنند. این کدها تولید میشن و توی قالبها جاگذاری میشن.
روشهای زیادی براش وجود داره.
مثلا قالبهای Wordpress (و تقریبا همه سیستمها)، بصورت ادغامی هستند یعنی کدهای PHP و HTML با هم استفاده میشه:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=<?php echo $charset; ?>" />
<title><?php echo $title; ?></title>
....
</head>
<body>
<div id="leftBar">
<div>
<form>
Username: <input type="text" name="username" />
.....
</div>

<div>
<ul>
<?php
foreach($lastNews as $news)
echo '<li><a href="index.php?p=' .$news['id']. '">' .$news['title']. '</a></li>';
?>
</ul>
</div>
</div>

<div id="center">
<?php foreach($lastNews as $news) ?>
<div class="post">
<h1><?php echo $news['title']; ?></h1>
<p>On <?php echo $news['date']; ?> By <?php echo $news['author']; ?></p>
......
</div>
</div>
.......
</body>
</html>

که این کدها به عنوان مثلا قالب تو دیتابیس ذخیره میشه و موقع نمایش، متغیر lastNews ساخته میشه و توی این قالب اعمال میشه و چاپ.

یک روش دیگه که من فقط توی MODx دیدم. اینه که کد PHP تو قالب وجود نداره و بجاش از تگهای مخصوص استفاده میشه که حسنش اینه که برای کاربر غیربرنامه نویس، کابوس نیست!


من تو پروژه های خودم از روش MODx استفاده می کنم مثلا این رو ببینید که همون قالب بالاست:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=[+site_charset+]" />
<title>[+site_title+]</title>
....
</head>
<body>
<div id="leftBar">
<div>
<form>
Username: <input type="text" name="username" />
.....
</div>

<div>
<ul>
[+lastNews_list+]
</ul>
</div>
</div>

<div id="center">
[+lastNews+]
</div>
.......
</body>
</html>
من این کد رو تو یک فایل txt قرار میدم و مثلا میگم که بیاد بجای علامت [+site_title+]، عنوان اصلی سایت رو replace کنه و برای بخشهایی که تو حلقه میره هم یک فایل txt دیگه درست می کنم:

<div class="post">
<h1>[+title+]</h1>
<p>On [+date+] By [+author+]</p>
......
</div>
که تو نتیجه اش تو قالب بالا بجای [+lastNews+] چاپ شه. این روش خیلی ترتمیزه ولی یکم محدودیت داره.

خیلی زیاد حرف زدم. عذر میخوام.

nekooee
سه شنبه 23 تیر 1388, 10:30 صبح
از شما و اینکه وقت گذاشتید ممنون
توضیح خیلی کاملی بود.

nekooee
چهارشنبه 24 تیر 1388, 16:52 عصر
در مورد include که من گفتم مشکل داره جالب اینجاست الآن که preview میگیرم همه چیز درسته اما تو پریویر دریم ویور همه چیز میریزه به هم و حتی شکل موس به شکل علامت ورود ممنوع در میاد و هیچ کاری نمیشه کرد! ولی تو پریویر لوکال مشکلی نداره!
کد من به این شکل می نویسم:



<div id="body">
<?php
include "singup.html";
?>
</div>




آیا این کد مشکلی داره؟

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


33289

nekooee
چهارشنبه 24 تیر 1388, 23:15 عصر
با سلام
من منتظر هستم اگر امکان داره جواب سوال من رو بدید
با تشکر

nekooee
پنج شنبه 25 تیر 1388, 00:02 صبح
از تو صفحه singup.html که آوردم تو این صفحه header را حذف کردم درست شد. یعنی باید هر صفحه ای include می کنم تو صفحه دیگر بدون header باشه؟
آخه بعضی جاها به اون نیاز هست که!

امیـرحسین
پنج شنبه 25 تیر 1388, 01:52 صبح
ببینید اینکه محتوای فایلها رو چطور در هم قرار میدید کاملا بستگی به کاری که انجام میدید و چیزهایی که نیاز دارید، داره.
برای debug کردن یا رفع اشکال همچنین حالتهایی، بهترین کار اینه که بعد از لود صفحه، سورس صفحه رو ببینید و بررسی کنید که چه بخشهایی تداخل ایجاد کرده. مثلا میگید هدر رو حذف کردم درست شده پس هدر اضافی بوده. اگه کدهایی از هدر رو نیاز دارید، می تونید توسط متغیر به فایل برسونید. فایلی که میخواید include کنید رو php کنید و متغیر رو توش قرار بدید مثلا

$title = "Title";
include "signup.php";و توی فایل signup.php می تونید از متغیر title استفاده کنید.