View Full Version : سوال: درج محتوای پست با استایلی مستقل از استایل صفحه ی اصلی
mojtabamalaekeh
جمعه 05 دی 1393, 19:27 عصر
سلام :لبخندساده:
لطفا این عکس رو به عنوان یه ماژول یا یه پست وبلاگی در نظر بگیرید. ولی با عرض بیشتر که بشه توش ul, ol, img هم نشون داد:
126905
راهی داره که یه محتوا با تگ html, body و متعلقات بجای [content] درج کنم بدون اینکه استایل این محتوا تحت تأثیر style صفحه ی اصلی باشه؟
مثلا اگه تو صفحه اصلی با css به تگ های p, body, ul, img و غیره شکلی دادم، دیگه رو ظاهر این محتوای مستقل اثر نذاره.
میشه؟
یه سؤال فرعی هم دارم: editorهای پیشرفته مثل همین ویرایشگر انجمن که دارم توش تایپ می کنم، اینا خروجیشون چطور توی بانک ذخیره میشه؟ با تگ html, body یا بدون اینا؟
tamafi6
جمعه 05 دی 1393, 21:48 عصر
1:شمابااستفاده ازآجاکس میتونید این کارراانجام بدهیدیعنی یک صفحه دربلوک موردنظربارگذاری بشه که بایدباآجاکس آشنایی داشته باشید
ماننداین:
http://css3.host22.com/blur/
2:بااستفاده ازفریم ها وفریم های اینلاین میتونید یک صفحه دربلوک موردنظربارگذاری بکنیدکه استانداردنیست
3:بااستفاده ازتوابع php میتوانیدیک صفحه موردنظررادربلوک موردنظرلودکنیدمانندافزودن یک فایل به صفحه
نمونه ای که من بااستفاده ازیک تابع php این کارراانجام میدم مانند
myfiles.html
این هم نمونه تابع کاملا شخصی نوشته شده هست میتونیددرتالارphp اون راعنوان کنید وبانحوه کاراون آشنابشوید
تاچشای پرمدعای مدیران تالارphp دربیاد.
(بدم میادازمدیران php کاملا ادعا,خودخواه ومغرور)
function file_include($text, $shorten) {
$fulltext = substr($text, 0, $shorten);
if(substr_count ($fulltext, '&')>0){$fulltext = str_replace('&', '&', str_replace('&', '&', $fulltext));}
if ($shorten < 9999000 && preg_match('<p>',$fulltext)) {
if (substr_count ($fulltext, '<p>') > substr_count ($fulltext, '</p>')) {
$fulltext .='</p>';
}
}
$ins = strpos($fulltext, '[/func]');
if ($ins > 0) {
$text = str_replace('', '|&|', $fulltext);
$text = str_replace('', '|&|', $text);
$text = explode('|&|', $text);
$num = count($text) - 1;
$i = 1;
while ($i <= $num) {
$func = explode(':|:', $text[$i]);
ob_start();
$returned = call_user_func_array($func[0], explode(',',$func[1]));
$text[$i] = ob_get_clean();
if (empty($text[$i])) {
$text[$i] = $returned;
}
$i = $i + 2;
}
$fulltext = implode($text);
}
$inc = strpos($fulltext, '[/include]');
if ($inc > 0) {
$text = str_replace('', '|&|', $fulltext);
$text = str_replace('', '|&|', $text);
$text = explode('|&|', $text);
$num = count($text);
$extension = explode(',', s('file_extensions'));
for ($i = 0; $i<$num; $i++) {
if ($i == $num) {
break;
}
if (!in_array(substr(strrchr($text[$i], '.'), 1), $extension)) {
echo substr($text[$i], 0);
} else {
if (preg_match('/^[a-z0-9_\-.\/]+$/i', $text[$i])) {
$filename=$text[$i];
file_exists($filename) ? include($filename) : print l('error_file_exists');
} else {
echo l('error_file_name');
}
}
}
} else {
echo $fulltext;
}
}
نمونه کار تابع php رامیتوانیداینجاببینید
http://pacifist.xzn.ir/-css3/-19/
در بخش ادیتورپستی نوشته نشده وفقط رشته تابع اون قرارگرفته ماننداین:
myfiles.html
دربین دوتابع هم آدرس صفحه موردنظرقرارداده شده
صفحه موردنظرراهم میتوان اینجادید
کاملا خام بدون استایل
http://pacifist.xzn.ir/myfiles/book.html
این صفحه توسط تابع موردنظرضمیمه شده ودرصفحه بارگذاری میشه ونمایش داده میشه
سوال دومتون هم این هست که بعدازارسال پست انکودهایی برای توابع html تعریف میشوند که بعدازفراخوانی ازدیتابیس به صورت موردنظرنمایش داده میشوند
----------------------------------
خیلی جالبه نه ؟
mojtabamalaekeh
شنبه 06 دی 1393, 11:50 صبح
مچکرم رفیق
محتوای من یه صفحه ی ذخیره شده روی هاست نیست.
یه متن توی دیتابیسه که میتونه شامل تمام تگ های HTML باشه اما من نمیخوام این تگ ها بعد از جایگزین شدن بجای [content] تحت تأثیر استایل صفحه چیده بشن.
اینجوری دیگه نمیتونم از include استفاده کنم؛ درسته؟
ajax load هم سرچ زدم، ظاهراً این هم برا load کردن یه صفحه است که از قبل موجود باشه.
tamafi6
شنبه 06 دی 1393, 16:28 عصر
مچکرم رفیق
محتوای من یه صفحه ی ذخیره شده روی هاست نیست.
یه متن توی دیتابیسه که میتونه شامل تمام تگ های HTML باشه اما من نمیخوام این تگ ها بعد از جایگزین شدن بجای [content] تحت تأثیر استایل صفحه چیده بشن.
اینجوری دیگه نمیتونم از include استفاده کنم؛ درسته؟
ajax load هم سرچ زدم، ظاهراً این هم برا load کردن یه صفحه است که از قبل موجود باشه.
اگر عناصربین تک body رابخواهید دریک بلوک قراربدهید مشکلی نیست چه صفحه به صورت جداگانه باشه وچه ازدیتابیس فراخوانی بشه وبااستفاده ازروشها وکلاسهای خاصی حتی css میتوان کاری کرد که کدها بربخش خاصی اعمال نشوند
ولی اگر بخواهید به عنوان مثال یک صفحه که به صورت کامل هست یعنی کلیه عناصردراون وجودداره مثل body ویا html رابخواهید دریک بلوک لودنمایید این کارشماخلاف قوانین هست یعنی شمانمیتونیددوصفحه رایکی نمایید مانند این
<html>
<body>
<html>
<body>
</body>
</html>
</body>
</html>
چنین چیزی درست نیست
البته بااستفاده ازجاوااسکریپت و ligtbox میتونیدیک پنجره ویایک بلوک جداگانه رابارگذاری نمود
mojtabamalaekeh
شنبه 06 دی 1393, 17:35 عصر
اگه استاندارد نیست استفاده نمی کنم. چون تصور من این بود که ویرایشگرها خروجیشون یک HTML کامل هست سؤالم رو اینجوری پرسیدم.
فرض کنید توی فایل css به تمام تگ های p, ul قالب بندی دلخواه دادم. حالا این محتوایی که میخوام درج کنم توی صفحه دارای تگ های p, ul هست که نباید تحت تأثیر تعاریف توی فایل css شکلشون عوض بشه.
آیا مجبورم توی صفحه اصلیم به همه ی تگ ها p, ul کلاس بدم که توی css فقط اون کلاس ها رو هدف بگیرم؟ یا بدون اینکه برا تک تکشون از خاصیت class استفاده کنم هم میشه؟
بخشی از مسئله اینه که نه توی صفحه اصلی میخوام هرجا رسیدم هی بنویسم class = "... نه توی اون محتوایی که تو بانک ذخیره شده!
البته اگه بشه فقط به تگ body خاصیت class داد و توی css از روی همون تفکیک رو انجام داد هم خوبه. اینجوری یا به Body صفحه اصلی کلاس میدم یا به اون Body که قراره درج بشه کلاس میدم.
ولی خو اینو هم بلد نیستم که چجور توی css تفکیکشون کنم :ناراحت: این کد جواب نمیده و همه چی قرمز میشه با پدینگ 15
.primary p{
color: red;
padding: 15px;
}
<html>
<head>
<link rel="stylesheet" href="style.css?v=1.0">
</head>
<body class="primary">
<p>
primary paragraph test1
</p>
<body class="secondary">
<p>
secondary paragraph test
</p>
</body>
<p>
primary paragraph test2
</p>
</body>
</html>
خیلی ممنون از توجهت :)
tamafi6
شنبه 06 دی 1393, 20:09 عصر
این مشکل برای همه هست مثال شمامیخواهیدیک عنصردرپست جدیدقراربدهیدکه استایل خاص خودش راداشته باشه وسایراستایلها برروی اون اثرنگذارند
ولی کاری نمیشه کرد شماباید به هرعنصری کلاس جداگانه اختصاص بدهید وبرای اون استایل بنویسید البته باگزینشگرهای css میشه این مشکل راحل نمود
http://pacifist.xzn.ir/-css3/-17/
ولی بالاخره باید بازهم کلاس اختصاص داد
مشکل اصلی این روش ادیتورهست که همین مشکل راهم بنده داشتم برای همون هم یک ادیتوراختصاصی نوشتم میتونیدببینید
http://barnamenevis.org/showthread.php?476884-%DA%A9%D8%AF%D8%A7%D9%85-%D8%A7%D8%AF%DB%8C%D8%AA%D9%88%D8%B1-(%D9%BE%DB%8C%D8%B4%D9%86%D9%87%D8%A7%D8%AF-%D9%88-%D8%AA%D9%88%D8%B3%D8%B9%D9%87-%D8%AA%D9%88%D8%B3%D8%B7-%D8%AF%D9%88%D8%B3%D8%AA%D8%A7%D9%86)
mojtabamalaekeh
شنبه 06 دی 1393, 22:42 عصر
ادیتور قشنگ و کاملیه.
پس راهش اینه که برا هر تگی یه کلاس بذارم و مثلا یه فایل css هم مخصوص کلاس های بکار رفته توی محتوام داشته باشم.
اینجوری یه css مخصوص اون کلاس ها می نویسم و بارها استفاده می کنم.
اوکی گرفتم. سپاس :لبخندساده:
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.