انجمن تعطیل می باشد.

از ایجاد تاپیک و پست های جدید خود داری نمایید.

لطفا این اطلاعیه را مطالعه بفرمایید.

انتخاب اتوماتیک شهرستان بر اساس استان

ارسال شده در: پرسش و پاسخ
  • morteza_rahmani در: یکشنبه ۲ فروردین ۱۳۹۴ در ۱۰:۳۵ ب٫ظ #2537

    سلام.
    دوستانی که میخوان فیلدهای استان و شهرستان در فرم هاشون داشته باشن بصورتی که با انتخاب استان، شهرستان‌های مربوط به اون استان براشون بیاد، طبق این آموزش که میزارم می‌تونن عمل کنن.

    مرحله اول – دانلود فایل ها:

    
    https://www.dropbox.com/s/4mwvikqgtcs2156/gravityforms_dynamic-states-cities%5Biran%5D.zip?dl=0
    

    مرحله دوم – ساختن فیلدهای مربوطه در فرم
    الف) استانها:
    ۱) ابتدا داخل فرم‌تون یه فیلد لیست بازشو (Dropdown Select) برای استان ها بسازید.
    ۲) دکمه‌ی افزودن گروهی/انتخاب‌ها پیش تعیین شده رو بزنید و مقادیر استان‌ها رو از فایل ostan.txt (داخل بسته‌ای که دانلود کردید)، بصورت گروهی اضافه کنید.
    ۳) در تب نمایش، بهش کلاس CSS سفارشی stateرو اضافه کنید.

    ب) شهرستان‌ها:
    ۱) دوباره فیلد جدیدی از نوع لیست بازشو (Dropdown Select) بسازید برای شهرستان‌ها.
    ۲) دکمه‌ی افزودن گروهی/انتخاب‌ها پیش تعیین شده رو بزنید و مقادیر شهرستان‌ها رو از فایل shahrestan.txt (داخل بسته‌ای که دانلود کردید)، بصورت گروهی اضافه کنید.

    مرحله سوم – قرار دادن فایل city.js در پوشه‌ای درون قالب سایت
    فایل city.js رو که درون بسته هست، در مسیر مشخصی داخل پوشه‌های قالب سایتتون کپی کنید. من بصورت پیشفرض داخل پوشه js قالبم کپیش کردم:

    
    http://<strong>my-site.com</strong>/wp-content/themes/<strong>my-theme-name</strong>/js/city.js
    

    مرحله چهارم – افزودن فایل city.js به قالب برای بارگزاری هنگام اجرای فرم‌ها
    فایل header.php قالب سایتتون رو باز کنید، و درست قبل از تگ

    
    wp_head();
    

    دستورات زیر رو اضافه کنید:

    
    	<?php
    add_action("gform_enqueue_scripts", "enqueue_city_script", 10, 2);
    function enqueue_city_script($form, $is_ajax){
        if(!$is_ajax){
            wp_enqueue_script('city_script', get_template_directory_uri() . '/js/city.js');
        }
    }
    ?>
    
    

    توجه کنید که اگر فایل city.js رو در مسیر دیگه‌ای به جز پوشه js کپی کردید، داخل دستورات بالا پوشه مورد نظر خودتون رو وارد کنید. (این دستورات داخل فایل header.php_snippet.txt هم موجود هست)
    ضمنا تگ های باز و بسته شدن php هم با توجه به ساختار فایل header.php قالبتون می‌تونید حذف کنید یا قرار بدید.

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

    حق یارتون.

  • حنان ابراهیمی ستوده
    حنان ابراهیمی ستوده در: سه شنبه ۴ فروردین ۱۳۹۴ در ۵:۴۱ ق٫ظ #2564

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

  • devil2002 در: دوشنبه ۲۲ تیر ۱۳۹۴ در ۴:۵۲ ب٫ظ #5936

    آقا این کار نمیکنه.میشه بگید مشکل کجاست؟؟؟

  • حنان ابراهیمی ستوده
    حنان ابراهیمی ستوده در: سه شنبه ۲۳ تیر ۱۳۹۴ در ۱:۲۱ ب٫ظ #5957

    خودم امشب تستش میکنم خبرش رو میدم .

  • devil2002 در: سه شنبه ۲۳ تیر ۱۳۹۴ در ۱:۴۴ ب٫ظ #5958

    ممنون

  • morteza_rahmani در: سه شنبه ۲۳ تیر ۱۳۹۴ در ۶:۰۶ ب٫ظ #5971

    آقا این کار نمیکنه.میشه بگید مشکل کجاست؟؟؟

    سلام دوست عزیز. بهتر است اطلاعات بیشتری در اختیار بزارید تا بشه کمک کرد. صرفا اینکه بگید کار نمیکنه ممکنه هزار دلیل داشته باشه. 🙂

    اما خب بگذریم… من چند روز پیش این اسکریپت رو اصلاح کردم و به طور کل از یه روش دیگه‌ای استفاده کردم که مناسب تر هست و اینجا باهاتون به اشتراک میزارم.
    =============================================
    ابتدا فایل های جدید رو دانلود کنید:
    دانلود فایل های جدید
    داخل پنجره مدیریت فرم، دوتا فیلد از نوع لیست بازشو (DropDown Select) ایجاد کنید.
    در فیلد اول (استان)، مقادیر رو از فایل لیست استان‌ها بصورت گروهی وارد کرده و بعد در قسمت کلاس‌های سفارشی فیلد عبارت state رو اضافه کنید.
    در فیلد دوم (شهر)، مقادیر رو از فایل لیست شهرها بصورت گروهی وارد کرده و بعد در قسمت کلاس‌های سفارشی فیلد عبارت city رو اضافه کنید.

    حالا داخل پوشه اصلی قالب سایتتون، یک پوشه به نام js بسازید و دو فایل statecity.js و jquery.chained.min.js رو داخلش کپی کنید. (اگر پوشه js از قبل موجود بود که فقط کافیه فایلهایی که گفتم رو از داخل بسته دانلودی، داخلش کپی کنید.)

    حالا باید این فایل‌ها رو هنگام بارگزاری سایت اجرا کنیم. برای اینکار باید فایلهای header.php و footer.php قالب رو ویرایش کنید.

    داخل فایل header.php بعد از عبارت:
    <?php wp_head(); ?>
    کد زیر رو کپی کنید:

      <?php
    add_action("gform_enqueue_scripts", "enqueue_city_script", 10, 2);
    function enqueue_city_script($form, $is_ajax){
        if(!$is_ajax){
    		wp_enqueue_script('statecity_script', get_template_directory_uri() . '/js/statecity.js');
            wp_enqueue_script('chain_script', get_template_directory_uri() . '/js/jquery.chained.min.js');
        }
    }
    	?>

    و فایل رو ذخیره کنید.
    نکته: اگر از Child-Theme استفاده میکنید، باید در کد فوق به جای get_template_directory_uri مقدار get_stylesheet_directory_uri رو قرار بدید.

    و در فایل footer.php بعد از عبارت:
    <?php wp_footer(); ?>
    کد زیر رو کپی کنید:
    <script>jQuery('li.city select').chained('li.state select');</script>
    و فایل رو ذخیره کنید.

    تمام شد. می‌تونید فرم رو لود بکنید و نتیجه رو ببینید. بهتون اطمینان میدم به طور قطع بدون مشکل کار میکنه چراکه خودم کاملا تستش کردم. اگر مشکلی داشتید، سورس صفحه رو بصورت HTML بررسی کنید تا مطمئن بشید فایل‌های statecity.js و jquery.chained.min.js و همینطور کد :
    <script>jQuery('li.city select').chained('li.state select');</script>
    در صفحه به درستی لود شده باشن. هر مشکلی در عدم اجرا برمیگرده به درست قرار نگرفتن این سه مورد در صفحه.

    انشالله که مفید باشه.
    موید باشید.

    • Sidkala در: سه شنبه ۱۰ شهریور ۱۳۹۴ در ۱۲:۴۴ ب٫ظ #6999

      آقا مرتضی من وقتی کد header.php بعد wp_head(); میذارم؛ سایت دیگه لود نمیشه! راهنمایی کنید؛ لطفا

  • devil2002 در: چهارشنبه ۲۴ تیر ۱۳۹۴ در ۱:۱۱ ب٫ظ #6000

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

  • morteza_rahmani در: چهارشنبه ۲۴ تیر ۱۳۹۴ در ۲:۳۰ ب٫ظ #6009

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

    سلام. حق با شماست. شرمنده فراموش کردم بگم موقعی که دارید داخل صفحه ایجاد فرم، فیلد‌های لیست بازشو رو برای استان و شهر میسازید، داخل تب نمایش قسمت نگه دارنده متن رو خالی نزارید. مثلا در نگه دارنده متن استان بنویسید: «لطفاً استان مورد نظر را انتخاب کنید» و در در نگه دارنده متن شهر هم بنویسید «لطفاً شهر مورد نظر را انتخاب کنید».

    نگه دارنده متن یا Placeholder گزینه‌ای هست که به عنوان اولین انتخاب لیست قرار میگیره اما فاقد مقدار یا Value هست. لذا کاربر در فیلدهای اجباری نمیتونه اون رو انتخاب کنه.

  • devil2002 در: یکشنبه ۴ مرداد ۱۳۹۴ در ۱۰:۲۰ ق٫ظ #6225

    با تشکر از شما دوستان عزیز

  • rw280s در: سه شنبه ۳ شهریور ۱۳۹۴ در ۳:۰۵ ق٫ظ #6858

    ممنون از زحمتی که کشیدید
    متاسفانه فایل header ارور میده و بالا نمیاد.
    آیا راه حلی هست ک نیاز به وارد کردن کد نباشه؟

    • rw280s در: جمعه ۶ شهریور ۱۳۹۴ در ۲:۰۴ ق٫ظ #6926

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

  • iranh00 در: شنبه ۲۱ شهریور ۱۳۹۴ در ۰:۵۵ ق٫ظ #7263

    با سلام

    مشکل من اینه که ظاهراً فایل های جی کوئری لود نمیشه ، و اصلاً فرم کار نمی کنه !
    البته، من فرمم رو با با Ultimate Member ساختم .

    • morteza_rahmani در: یکشنبه ۲۹ شهریور ۱۳۹۴ در ۱۲:۳۲ ب٫ظ #7439

          

  • ayoot در: چهارشنبه ۲۵ شهریور ۱۳۹۴ در ۱:۴۶ ق٫ظ #7342

    اقا ما تموم مراحل رو انجام دادیم نشد . او دوتا فایل js تو صفحه لود نمیشه . html رو نگاه کردم خیلی بهش ور رفتم ولی نشد . نمیدونم چرا نمیاد عصبیم کرده دیگه

    • iranh00 در: چهارشنبه ۲۵ شهریور ۱۳۹۴ در ۲:۰۸ ق٫ظ #7343

      دقیقاً من هم مشکل شما رو دارم .

      امیدوارم، هر چه زودتر جوابی بگیریم .

    • RASA در: شنبه ۲۸ شهریور ۱۳۹۴ در ۶:۳۵ ب٫ظ #7430

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

  • RASA در: شنبه ۲۸ شهریور ۱۳۹۴ در ۷:۴۷ ب٫ظ #7431

    آقا کسی نیست که کمکمون کنه؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

  • حنان ابراهیمی ستوده
    حنان ابراهیمی ستوده در: یکشنبه ۲۹ شهریور ۱۳۹۴ در ۳:۱۷ ق٫ظ #7435

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

  • morteza_rahmani در: یکشنبه ۲۹ شهریور ۱۳۹۴ در ۱۲:۳۵ ب٫ظ #7440

    دوستانی که با لود نشدن فایلهای js در header و footer مشکل دارند روش های زیر رو امتحان کنند:
    روش اول:
    مرحله ۱: ابتدا کدهایی که داخل فایل header.php و footer.php نوشتید رو پاک کنید بعد این پلاگین رو نصب و فعال کنید: Insert Headers and Footers
    مرحله ۲: وارد مسیر زیر در پنل مدیریتی وردپرس بشید: Settings/Insert Headers and Footers
    مرحله ۳: در جعبه متن Scripts in header کد زیر رو وارد کنید:

    <script type='text/javascript' src='http://domain.com/wp-content/themes/your-active-theme/js/statecity.js'></script>
    <script type='text/javascript' src='http://domain.com/wp-content/themes/your-active-theme/js/jquery.chained.min.js'></script>

    نکته: آدرس سایتتون رو در کد بالا خودتون اصلاح کنید و مسیر درست فایلهای js رو قرار بدید.
    مرحله ۴: در جعبه متن Scripts in footer کد زیر رو وارد کنید:
    <script>jQuery('li.city select').chained('li.state select');</script>
    مرحله ۵: Save Settings رو بزنید.

    روش دوم:
    ۱- ابتدا کدهایی که داخل فایل header.php و footer.php نوشتید رو پاک کنید.
    ۲- اگر از قالب اصلی بدون Child Theme استفاده میکنید کد زیر رو در فایل functions.php قالبتون کپی کنید:

    <?php
    function state_city_scripts(){
        wp_register_script( 'statecity_script', get_template_directory_uri() . '/js/statecity.js');
        wp_enqueue_script( 'statecity_script' );
        wp_register_script( 'chain_script', get_template_directory_uri() . '/js/jquery.chained.min.js');
        wp_enqueue_script( 'chain_script' );
    	}
    add_action('wp_enqueue_scripts', 'state_city_scripts');
    ?>
    <?php
    function state_city_inline_script() {
    ?>
    <script>jQuery('li.city select').chained('li.state select');</script>
    <?php
    }
    add_action( 'wp_footer', 'state_city_inline_script' );
    ?>
    

    ۳- اگر از Child Theme استفاده میکنید، به جای کد بالا کد زیر رو داخل فایل functions.php در پوشه قالب child قرار بدید:

    <?php
    function state_city_scripts(){
        wp_register_script( 'statecity_script', get_stylesheet_directory_uri() . '/js/statecity.js');
        wp_enqueue_script( 'statecity_script' );
        wp_register_script( 'chain_script', get_stylesheet_directory_uri() . '/js/jquery.chained.min.js');
        wp_enqueue_script( 'chain_script' );    
    	}
    add_action('wp_enqueue_scripts', 'state_city_scripts');
    ?>
    <?php
    function state_city_inline_script() {
    ?>
    <script>jQuery('li.city select').chained('li.state select');</script>
    <?php
    }
    add_action( 'wp_footer', 'state_city_inline_script' );
    ?>
    

    نکته ۱: حواستون به تگ های باز و بسته شدن php باشه. (<?php ?>) ممکنه نیازی نداشته باشید اونارو به این شکل وارد کنید.
    نکته ۲: اینجا فرض شده شما داخل پوشه قالبتون فلدر js رو دارید و فایلها رو داخل اون قرار دادید. اگر فایلها در مسیر دیگری هست خودتون کدهای بالا رو اصلاح کنید و مسیر درست رو وارد کنید.

  • RASA در: یکشنبه ۲۹ شهریور ۱۳۹۴ در ۲:۱۰ ب٫ظ #7443

    آقا فایل ها الان لود میشه
    اما اگر از روش اول بریم بعد از انتخاب استان وقتی میخواهیم شهر رو انتخاب کنیم همه شهرها حتی مال استان های دیگه هم لود میشه

    اگر هم از روش دوم استفاده کنیم منظورم همون اضافه کردن کد توی functions.php هست. بعد از انتخاب استان روی فیلد شهرها یه آیکون ورود ممنوع میاره و نمی تونیم شهر رو انتخاب کنیم

    • morteza_rahmani در: دوشنبه ۳۰ شهریور ۱۳۹۴ در ۹:۲۹ ق٫ظ #7452

      RASA جان اگر برات مقدوره اطلاعات سایتت رو بهم ایمیل بده تا بررسی کنم. اگر تونستم مشکلش رو حل کنم علت و راه حل رو اینجا هم قرار میدم. چون طبق قاعده نباید مشکلی در اجرا باشه.

      ourlife.68[at]gmail.com

      • RASA در: دوشنبه ۳۰ شهریور ۱۳۹۴ در ۱۰:۳۸ ق٫ظ #7453

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

        • morteza_rahmani در: دوشنبه ۳۰ شهریور ۱۳۹۴ در ۱۱:۴۸ ق٫ظ #7454

          مشکل برطرف شد.
          موارد انجام شده:
          ۱- نسخه gravityform شما قدیمی بود و اکشن gform_enqueue_scripts رو در هدر اجرا نمیکرد. ارتقاش دادم به اخرین نسخه و فایلهای js به درستی لود شدند.
          ۲- به علت حجم زیاد اسکریپتها و توابع jquery در قالب و پلاگینهای شما، اسکریپت مورد نظر در فوتر به درستی اجرا نمیشد. به همین خاطر به جای:
          <script>jQuery(‘li.city select’).chained(‘li.state select’);</script>

          از تابع زیر در فوتر استفاده کردم:

          <script>
          jQuery(document).ready(function(){
          jQuery(‘li.city select’).chained(‘li.state select’);
          });
          </script>

          • RASA در: دوشنبه ۳۰ شهریور ۱۳۹۴ در ۵:۳۵ ب٫ظ #7460

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

          • RASA در: سه شنبه ۳۱ شهریور ۱۳۹۴ در ۰:۳۰ ق٫ظ #7464

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

            ممنون از جناب آقای رحمانی

  • حنان ابراهیمی ستوده
    حنان ابراهیمی ستوده در: سه شنبه ۳۱ شهریور ۱۳۹۴ در ۱:۲۶ ق٫ظ #7465

    جناب رحمانی واقعا از کمک و راهنمایی شما صمیمانه سپاسگذاریم .

    • morteza_rahmani در: سه شنبه ۳۱ شهریور ۱۳۹۴ در ۲:۲۵ ق٫ظ #7467

      ممنون از ایمیل شما که اطلاع دادید. من دفعه اول که ایمیل اومد هرکاری کردم نتونستم وارد سایت بشم و Server not found میزد. فکر کردم دامنه سایت منقضی شده!
      بعد از ایمیل شما مجددا وارد سایت شدم بازم همون پیغام رو میداد که مجبور شدم DNS های شبکه ام رو به OpenDNS تغییر بدم. فکر میکنم سایتتون با DNS های مخابرات تهران لود نمیشه. البته یقینی نمیدونم اما من از جایی با اینترنت مخابرات تهران بدون دستکاری DNS نتونستم سایت رو باز کنم.

      • حنان ابراهیمی ستوده
        حنان ابراهیمی ستوده در: یکشنبه ۵ مهر ۱۳۹۴ در ۴:۱۰ ق٫ظ #7557

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

  • mohsen14270 در: پنجشنبه ۲ اردیبهشت ۱۳۹۵ در ۶:۴۲ ب٫ظ #12075

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

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

  • حنان ابراهیمی ستوده
    حنان ابراهیمی ستوده در: جمعه ۳ اردیبهشت ۱۳۹۵ در ۱۰:۵۳ ب٫ظ #12097

    سلام
    تداخل جیکوئری میتونه باشه .
    قالب 2015 وردپرس رو فعال کنید یه تست کنید .

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