رفتن به مطلب

اضافه کردن اینپوت در تنظیمات قالب


پست های پیشنهاد شده

سلام دوستان

من مدتی هست که دارم برای قالب های وردپرسم ، تنظیمات میزنم .

ولی یه مشکلی دارم .

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

با جی کوئری تونستم اینپوت اضافه کنم ، یعنی با کلیک میاد اینپوت رو اضافه میکنه .

ولی مشکلی که دارم ، اینه که اونا سیو نمیشن و همینطور مقدارشون رو برای چاپ نمیتونم بگیرم .

لینک به ارسال

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

در مورد موردی که مشکل دارید بیشتر توضیح بدهید تا عرض کنم

لینک به ارسال

ممنون از پاسختون

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


$options[] = array( "name" => __('<h3 class="heading">لینک دوستان<h3>','framework_localize'),
"desc" => "",
"id" => $shortname."_linkfriend",
"std" => "",
"type" => "addboxis");

و بعد طبق دستور case که نوع کد بالا addboxis هست میاد این رو اجرا میکنه :


case 'addboxis':
$val = $value['std'];
$std = get_option($value['id']);
if ( $std != "") { $val = $std; }
$output .= '<div id="thisokenter"></div><input class="of-input '.$value['classltr'].'" placeholder="'.$value['plhd'].'" name="'. $value['id'] .'" id="'. $value['id'] .'" type="'. $value['type'] .'" /><div id="add-boox">Add New</div>';
break;

و بعد طبق دستور جی کوئری که خارج از این کد ها توی صفحه تعریف شده ، با کلیک روی add-boox میاد یک اینپوت مثل کد بالا رو ایجاد میکنه و یک عدد به آیدی اینپوت اضافه میکنه .

ولی همه اینا درست کار میکنه و اینپوت هارو با آیدی های مختلف ایجاد میکنه ، ولی تنها مشکل اینه که بعد از سیو کردن تنظیمات ، و رفرش صفحه ، اینپوت ها از بین میرن .

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

لینک به ارسال

کدتون رو نگا نکردم. اما با جی کوئری وقتی دارید می سازید ، می تونید یه آی دی متغیر و یه کلاس ثابت بهش بدید که آی دی برابر با تعداد اینپوت های های قبلی با اون کلاس ثابت به علاوه یک هست. حالا می تونید به راحتی روشون مانور بدید و کار انجام بدید :)

لینک به ارسال

بله ، با جی کوئری همین کار رو انجام دادم ، ولی متاسفانه وقتی به وجود میان و مقدار میدم بهشون و تنظیمات رو ذخیره میکنم ، اون اینپوت هایی که اضافه کردم ، ذخیره نمیشن ..

لینک به ارسال

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

نمونه

1. فرم


<form action="" method="post">
<input type="button" id="addnew" value="Add New">
<input value="0" name="num" type="hidden" >
<div class="fields-group"></div>
<input type="submit" value="submit" >
</form>

2. جی کوئری


$(document).ready(function() {
$("#addnew").click(function() {
var num = $(this).next("input").val();
var newnum = parseInt(num)+1;
var newinput = '<input type="text" name="my_field_'+num+'" id="my-field-'+num+'"><br />';
$(newinput).appendTo(".fields-group");
$(this).next("input").val(newnum);
});
})

3.

اکشن


<?php if(isset($_POST['num'])) {
$num = $_POST['num'];
for($x = 0; $x<$num; $x++) {
$main = 'my_field_'.$x;
$field = $_POST[$main];
add_option($main, $field)
}//close for
}
?>

لینک به ارسال

بازم ممنون .

فقط از کد php خط 7 ارور میده ..

ولی قبل از اینکه کد php رو بذارم ، وقتی روی submit کلیک میکنم ، تنظیمات رو سیو میکنه ...

در کل بازم اینپوت ها نمیمونن و پاک میشن .

و اینپوت فرم کلی که تنظیمات رو سیو میکنه از کار افتاده .

سورس html صفحه رو هم نگاه میکنم ، فرم اصلی که ایجاد کردیم ، نیست . به این صورته:


<div class="controls">
<input type="button" value="Add New" id="addnew">
<input type="hidden" name="num" value="0">
<div class="fields-group"></div>
<input type="submit" value="submit"><br>
</div>

به نظر من کدی باید باشه که بشه اینپوت هارو گرفت و همراه با فرم اصلی به دیتابیس وردپرس فرستاد .

ویرایش شده توسط alitna
لینک به ارسال

خب اگر حداکثرش رو میتونی حدس بزنی براش همون تعداد رو بزار بعد همه به غیر از اولی رو هیدن کن و یک دکمه که با هربار کلیک یکی رو از حالت هیدن دربیاره.

اینجوری مشکل کمتری داره به نظرم.

لینک به ارسال

ببخشید ، منضورم اسپم نیست ولی نوشته بالا خیلی طولانی شد .

کمی کار کردم به این نتیجه رسیدم :

با این کد میام محتویات رو اضافه میکنم :


$options[] = array( "name" => __('','framework_localize'),
"desc" => __('','framework_localize'),
"id" => "linkimagelogo",
"std" => "",
"type" => "ccccc");

حالا اینپوتی سیو میشه توی دیتابیس که name داشته باشه و توسط value مقدار وارد شده چاپ بشه :


$val = $value['std'];
$std = get_option($value['id']);

<input name="'. $value['id'] .'" type="text" value="'. $val .'"/>

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

ویرایش شده توسط alitna
لینک به ارسال

خب اگر حداکثرش رو میتونی حدس بزنی براش همون تعداد رو بزار بعد همه به غیر از اولی رو هیدن کن و یک دکمه که با هربار کلیک یکی رو از حالت هیدن دربیاره.

اینجوری مشکل کمتری داره به نظرم.

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

لینک به ارسال

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

لینک به ارسال

هرجایی قرار میدم این ارور رو میده .


Parse error: syntax error, unexpected '}' in D:\wamp\www\abc\wp-content\themes\ABC\admin\admin-interface.php on line 109

مشکل از بستن پرانتز هست که هرکاری کردم رفع نشد .

مشکل اینه که کد html تا وقتی درون form قرار داره ، دیگه اینپوت اصلی برای سیو کردن تظنظیمات کار نمیکنه و وقتی سورس کد رو نگاه میکنم ، اصلا form وجود نداره ...

لینک به ارسال

کد را که نباید قرار بدید اون کد نمونه است شما مگه پنل تنظیمات نساختی در کدهای پنل تنظیماتت یک فرم داری دو تا فیلد html را در اون فرم می گذاری و اون فرم یک اکشن داره کدهای php را در صفحه ی اکشن و کدهای js را هم در یک فایل js و با کد


<script src="<?php bloginfo('template_directory');?>/script.js"></script>

به صفحه ی تنظیمات معرفی می کنی

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


add_option($main, $field)

را به


add_option($main, $field);

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

لینک به ارسال

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...