• پنجشنبه, 07 خرداد 1404
  • آموزش

حل مشکل تاریخ شمسی جوملا ۴ و ۵ فارسی

برای حل مشکل محتوای زیر را در فایل  /public_html/language/fa-IR/localise.php جایگزین کنید. defined('_JEXEC') or die; use Joomla\CMS\Date\Date; abstract class Fa_IRLocalise { public static function getPluralSuffixes($count) { if ($count == 0) { $return = array('0'); } elseif($count == 1) { $return = array('ONE', '1'); } else { $return = array('OTHER', 'MORE'); } return $return; } public static function getIgnoredSearchWords() { $search_ignore = array(); $search_ignore[] = "and"; $search_ignore[] = "in"; $search_ignore[] = "on"; return $search_ignore; } public static function getLowerLimitSearchWord() { return 3; } public static function getUpperLimitSearchWord() { return 20; } public static function getSearchDisplayedCharactersNumber() { return 200; } } class fa_IRDate extends Date { const DAY_NUMBER = "\x027\x03"; const DAY_NUMBER2 = "\x030\x03"; const DAY_YEAR = "\x032\x03"; const MONTH_ABBR = "\x033\x03"; const MONTH_NAME = "\x034\x03"; const MONTH_NUMBER = "\x035\x03"; const MONTH_NUMBER2 = "\x036\x03"; const MONTH_LENGTH = "\x037\x03"; const YEAR_ABBR = "\x040\x03"; const YEAR_NAME = "\x041\x03"; const AM_LOWER = "\x042\x03"; const AM_UPPER = "\x043\x03"; const PERSIAN_EPOCH = 1948320.5; protected static $month_names = array("فروردين","ارديبهشت","خرداد","تیر","مرداد","شهریور","مهر","آبان","آذر","دی","بهمن","اسفند"); public function calendar($format, $local = false, $translate = true) { // Replace format strings that can be translated. $format = preg_replace('/(^|[^\\\])d/', "\\1".self::DAY_NUMBER2, $format); $format = preg_replace('/(^|[^\\\])j/', "\\1".self::DAY_NUMBER, $format); $format = preg_replace('/(^|[^\\\])z/', "\\1".self::DAY_YEAR, $format); $format = preg_replace('/(^|[^\\\])M/', "\\1".self::MONTH_ABBR, $format); $format = preg_replace('/(^|[^\\\])F/', "\\1".self::MONTH_NAME, $format); $format = preg_replace('/(^|[^\\\])n/', "\\1".self::MONTH_NUMBER, $format); $format = preg_replace('/(^|[^\\\])m/', "\\1".self::MONTH_NUMBER2, $format); $format = preg_replace('/(^|[^\\\])t/', "\\1".self::MONTH_LENGTH, $format); $format = preg_replace('/(^|[^\\\])y/', "\\1".self::YEAR_ABBR, $format); $format = preg_replace('/(^|[^\\\])Y/', "\\1".self::YEAR_NAME, $format); $format = preg_replace('/(^|[^\\\])a/', "\\1".self::AM_LOWER, $format); $format = preg_replace('/(^|[^\\\])A/', "\\1".self::AM_UPPER, $format); // Format the date using parent method. $return = parent::calendar($format, $local); // Convert to Jalali date. $jd = gregoriantojd($this->month, $this->day, $this->year); $jalaliDate = self::jd_to_persian($jd); $m = $jalaliDate['mon']; $d = $jalaliDate['day']; $y = $jalaliDate['year']; // Replace placeholders with Persian values. if (strpos($return, self::DAY_NUMBER) !== false) { $return = str_replace(self::DAY_NUMBER, $d , $return); } if (strpos($return, self::DAY_NUMBER2) !== false) { $return = str_replace(self::DAY_NUMBER2, sprintf("%02d",$d), $return); } if (strpos($return, self::DAY_YEAR) !== false) { $return = str_replace(self::DAY_YEAR, $jd - self::persian_to_jd(1,1,$y)+1, $return); } if (strpos($return, self::MONTH_ABBR) !== false) { $return = str_replace(self::MONTH_ABBR, self::$month_names[$m-1] , $return); } if (strpos($return, self::MONTH_NAME) !== false) { $return = str_replace(self::MONTH_NAME, self::$month_names[$m-1] , $return); } if (strpos($return, self::MONTH_NUMBER) !== false) { $return = str_replace(self::MONTH_NUMBER, $m , $return); } if (strpos($return, self::MONTH_NUMBER2) !== false) { $return = str_replace(self::MONTH_NUMBER2, sprintf("%02d", $m) , $return); } if (strpos($return, self::MONTH_LENGTH) !== false) { $return = str_replace(self::MONTH_LENGTH, ($m < 7 ? 31 : (($m < 12 ? 30 : self::leap_persian($y)) ? 30 : 29)) , $return); } if (strpos($return, self::YEAR_ABBR) !== false) { $return = str_replace(self::YEAR_ABBR, sprintf("%02d",$y % 100), $return); } if (strpos($return, self::YEAR_NAME) !== false) { $return = str_replace(self::YEAR_NAME, $y, $return); } if (strpos($return, self::AM_LOWER) !== false) { $return = str_replace(self::AM_LOWER, $this->format('a',$local)=='pm' ? 'ب ظ' : 'ق ظ', $return); } if (strpos($return, self::AM_UPPER) !== false) { $return = str_replace(self::AM_UPPER, $this->format('a',$local)=='pm' ? 'ب ظ' : 'ق ظ', $return); } return $return; } /** * Converts a Julian Day to a Persian (Jalali) date. */ public static function jd_to_persian($jd) { $depoch = $jd - self::persian_to_jd(1, 1, 475); $cycle = floor($depoch / 1029983); $cyear = $depoch % 1029983; if ($cyear == 1029982) { $ycycle = 2820; } else { $aux1 = floor($cyear / 366); $aux2 = $cyear % 366; $ycycle = floor(((2134 * $aux1) + (2816 * $aux2) + 2815) / 1028522) + $aux1 + 1; } $year = $ycycle + (2820 * $cycle) + 474; if ($year <= 0) { $year--; } $yday = ($jd - self::persian_to_jd(1, 1, $year)) + 1; $month = ($yday <= 186) ? ceil($yday / 31) : ceil(($yday - 6) / 30); $day = ($jd - self::persian_to_jd($month, 1, $year)) + 1; return array('year'=>$year, 'mon'=>$month,'day'=> $day); } /** * Converts a Persian (Jalali) date to Julian Day. */ public static function persian_to_jd($month, $day, $year) { $epbase = $year - (($year >= 0) ? 474 : 473); $epyear = 474 + $epbase % 2820; return $day + (($month <= 7) ? (($month - 1) * 31) : ((($month - 1) * 30) + 6)) + floor((($epyear * 682) - 110) / 2816) + ($epyear - 1) * 365 + floor($epbase / 2820) * 1029983 + self::PERSIAN_EPOCH; } /** * Checks if a Persian year is a leap year. */ public static function leap_persian($year) { return (((((($year - (($year > 0) ? 474 : 473)) % 2820) + 474) + 38) * 682) % 2816) < 682; } }

ادامه مطلب
  • جمعه, 15 بهمن 1403
  • آموزش برنامه نویسی جوملا

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

اگر شما هم به دنبای یک کلاس ساده بدون استفاده از توابع پیچیده برای تبدیل تاریخ میلادی به شمسی هستید از این کلاس می توانید استفاده کنید. function SDate($langcode,$langname,$datetime,$format){    $formatter = new IntlDateFormatter(        "$langcode@calendar=$langname",        IntlDateFormatter::FULL,        IntlDateFormatter::FULL,        'Asia/Tehran',        IntlDateFormatter::TRADITIONAL,        "$format"    );    return $formatter->format($datetime);} برای استفاده از این کلاس به شکل زیر صدا بزنید. میلادی: <?php echo SDate('en_GB','english',$date,'EEEE، d MMMM Y');?> شمسی: <?php echo SDate('fa_IR','persian',$date,'EEEE، d MMMM Y');?> خروجی دوشنبه، ۱۵ بهمن ۱۴۰۳  

ادامه مطلب
  • یکشنبه, 08 دی 1403
  • آموزش برنامه نویسی جوملا

طراحی ماژول اپلود تصاویر با اجاکس و بوت استراپ

در اینجا به طور مختصر مراحل ایجاد ماژول جوملا برای آپلود تصویر با استفاده از PHP و AJAX را شرح می‌دهم. برای سادگی، ما ابتدا یک ماژول ساده ایجاد می‌کنیم که فرم آپلود تصویر را در آن قرار دهیم. مراحل ایجاد یک ماژول جوملا برای آپلود تصویر ساخت ساختار فایل‌های ماژول برای ایجاد یک ماژول، باید یک دایرکتوری در پوشه modules ایجاد کنید و سپس فایل‌های لازم را در آن قرار دهید. به مسیر زیر بروید: /modules/mod_imageupload ساخت فایل‌های مورد نیاز: در پوشه mod_imageupload، چند فایل اصلی خواهیم داشت: mod_imageupload.php (فایل اصلی ماژول) helper.php (برای کدهای کمکی و پردازش) tmpl/default.php (نمایش فرم آپلود و پروگرس بار) mod_imageupload.xml (فایل نصب و تنظیمات ماژول) 1. فایل mod_imageupload.php: این فایل عملکرد اصلی ماژول را بر عهده دارد. در آن فرم آپلود به همراه پردازش‌ها را قرار می‌دهیم. <?php // دسترسی مستقیم به فایل ممنوع است defined('_JEXEC') or die; // شامل فایل helper require_once dirname(__FILE__) . '/helper.php'; // دریافت خروجی از helper $uploadForm = modImageUploadHelper::getUploadForm(); require JModuleHelper::getLayoutPath('mod_imageupload'); 2. فایل helper.php: در این فایل، می‌توانید منطق پردازش فایل را بنویسید، مثلا بررسی فایل و آپلود آن. برای این‌که کار با این ماژول راحت‌تر باشد، همه کدهای اصلی آپلود را در اینجا قرار می‌دهیم. <?php // دسترسی مستقیم به فایل ممنوع است defined('_JEXEC') or die; class modImageUploadHelper { public static function getUploadForm() { // بررسی ارسال فایل و آپلود if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_FILES['image'])) { $uploadDir = JPATH_ROOT . '/images/uploads/'; $maxFileSize = 5 * 1024 * 1024; // حداکثر حجم فایل 5MB $allowedTypes = ['image/jpeg', 'image/png', 'image/gif']; $file = $_FILES['image']; // بررسی نوع فایل if (!in_array($file['type'], $allowedTypes)) { return 'فرمت فایل مجاز نیست.'; } // بررسی اندازه فایل if ($file['size'] > $maxFileSize) { return 'حجم فایل بیش از حد مجاز است.'; } // ساخت نام تصادفی برای فایل $fileName = uniqid('img_') . '.' . pathinfo($file['name'], PATHINFO_EXTENSION); $uploadPath = $uploadDir . $fileName; // انتقال فایل به پوشه مقصد if (move_uploaded_file($file['tmp_name'], $uploadPath)) { return 'فایل با موفقیت آپلود شد!'; } else { return 'خطا در آپلود فایل!'; } } // اگر فایل آپلود نشد، فرم را باز می‌گرداند return null; } } 3. فایل tmpl/default.php: در اینجا فرم HTML و کد AJAX را قرار می‌دهیم. این کد مشابه همان کدی است که قبلاً برای آپلود تصویر طراحی کرده بودیم، اما در قالب ماژول جوملا. <?php // دسترسی مستقیم به فایل ممنوع است defined('_JEXEC') or die; ?> <div class="container mt-5"> <h2 class="text-center mb-4">فرم آپلود تصویر</h2> <!-- نمایش پیغام آپلود --> <?php if ($uploadForm): ?> <div class="alert alert-info"><?php echo $uploadForm; ?></div> <?php endif; ?> <!-- فرم آپلود --> <form id="uploadForm" enctype="multipart/form-data" method="POST"> <div class="mb-3"> <label for="name" class="form-label">نام و نام خانوادگی:</label> <input type="text" class="form-control" id="name" name="name" required> </div> <div class="mb-3"> <label for="image" class="form-label">انتخاب تصویر:</label> <input type="file" class="form-control" id="image" name="image" accept="image/*" required> </div> <button type="submit" class="btn btn-primary">ارسال</button> </form> <!-- نمایش پروگرس بار --> <div id="progressWrapper" style="display: none;"> <p>در حال آپلود: <span id="progressText">0%</span></p> <div id="progressBar" class="progress"> <div id="progress" class="progress-bar" role="progressbar" style="width: 0;"></div> </div> </div> </div> <!-- اسکریپت‌های جاوااسکریپت --> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <script> $(document).ready(function() { $("#uploadForm").submit(function(event) { event.preventDefault(); // نمایش پروگرس بار $("#progressWrapper").show(); var formData = new FormData(this); $.ajax({ url: "<?php echo JURI::root() . 'modules/mod_imageupload/helper.php'; ?>", // مسیر پردازش فایل type: "POST", data: formData, contentType: false, processData: false, xhr: function() { var xhr = new XMLHttpRequest(); xhr.upload.addEventListener("progress", function(e) { if (e.lengthComputable) { var percent = (e.loaded / e.total) * 100; $("#progress").width(percent + "%"); $("#progressText").text(Math.round(percent) + "%"); } }); return xhr; }, success: function(response) { alert("آپلود با موفقیت انجام شد!"); console.log(response); $("#progressWrapper").hide(); }, error: function(xhr, status, error) { alert("خطا در آپلود فایل!"); $("#progressWrapper").hide(); } }); }); }); </script> 4. فایل mod_imageupload.xml: این فایل، فایل نصب و پیکربندی ماژول است که برای نصب ماژول در جوملا استفاده می‌شود. <?xml version="1.0" encoding="utf-8"?> <extension type="module" version="4.0" method="upgrade"> <name>mod_imageupload</name> <author>نام شما</author> <creationDate>2024-12-28</creationDate> <copyright>کپی‌رایت</copyright> <license>GPLv2 or later</license> <version>1.0.0</version> <description>ماژول آپلود تصویر</description> <files> <file plugin="mod_imageupload">mod_imageupload.php</file> <file>helper.php</file> <folder>tmpl</folder> </files> <languages> <language tag="en-GB">language/en-GB/en-GB.mod_imageupload.ini</language> <language tag="fa-IR">language/fa-IR/fa-IR.mod_imageupload.ini</language> </languages> </extension> 5. نصب و استفاده از ماژول در جوملا ماژول را با استفاده از فایل XML در بخش Extension Manager در جوملا نصب کنید. پس از نصب، ماژول را از بخش Module Manager فعال کرده و به یک موقعیت (Position) مناسب در قالب جوملا خود متصل کنید. توضیحات: این ماژول فرم آپلود را در هر موقعیتی که به آن وصل شود نمایش می‌دهد. فایل‌ها در مسیر images/uploads/ ذخیره می‌شوند. شما می‌توانید این مسیر را متناسب با نیاز خود تغییر دهید. برای حفظ امنیت، حتماً بررسی‌هایی مانند محدودیت نوع فایل و اندازه فایل‌ها انجام می‌دهیم. این مراحل به شما کمک می‌کند که یک ماژول ساده برای آپلود تصویر در جوملا ۵ ایجاد کنید.

ادامه مطلب
  • یکشنبه, 08 دی 1403
  • آموزش

طراحی فرم اپلود تصاویر با استفاده از اجاکس بوت استراپ و php

فرم آپلود تصویر را با استفاده از فریم‌ورک بوت‌استرپ (Bootstrap) طراحی می‌کنیم. بوت‌استرپ به ما این امکان را می‌دهد که به راحتی طراحی زیبایی ایجاد کنیم بدون نیاز به نوشتن CSS زیاد. 1. کد HTML با بوت‌استرپ: ابتدا کد HTML فرم را با استفاده از بوت‌استرپ تنظیم می‌کنیم. برای اینکه از ویژگی‌های بوت‌استرپ استفاده کنیم، باید فایل‌های CSS و JS بوت‌استرپ را در صفحه وارد کنیم. <!DOCTYPE html> <html lang="fa"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>فرم آپلود تصویر</title> <!-- لینک به بوت‌استرپ 5 --> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"> <style> /* پروگرس بار */ #progressWrapper { display: none; margin-top: 20px; } #progressBar { width: 100%; height: 20px; background-color: #f3f3f3; border-radius: 5px; } #progress { height: 100%; width: 0; background-color: #28a745; border-radius: 5px; } </style> </head> <body> <div class="container mt-5"> <h2 class="text-center mb-4">فرم آپلود تصویر</h2> <form id="uploadForm" enctype="multipart/form-data"> <div class="mb-3"> <label for="name" class="form-label">نام و نام خانوادگی:</label> <input type="text" class="form-control" id="name" name="name" required> </div> <div class="mb-3"> <label for="image" class="form-label">انتخاب تصویر:</label> <input type="file" class="form-control" id="image" name="image" accept="image/*" required> </div> <button type="submit" class="btn btn-primary">ارسال</button> </form> <!-- نمایش پروگرس بار --> <div id="progressWrapper"> <p>در حال آپلود: <span id="progressText">0%</span></p> <div id="progressBar"> <div id="progress"></div> </div> </div> </div> <!-- اسکریپت‌های جاوااسکریپت --> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/js/bootstrap.bundle.min.js"></script> <script src="/script.js"></script> </body> </html> 2. کد جاوااسکریپت (AJAX) در این بخش همانطور که قبلاً ذکر شد، از FormData و XMLHttpRequest استفاده می‌کنیم تا فایل آپلود شده را به سرور ارسال کنیم و پروگرس بار را به نمایش درآوریم. $(document).ready(function() { $("#uploadForm").submit(function(event) { event.preventDefault(); // نمایش پروگرس بار $("#progressWrapper").show(); var formData = new FormData(this); $.ajax({ url: "upload.php", // فایل PHP برای پردازش type: "POST", data: formData, contentType: false, processData: false, xhr: function() { var xhr = new XMLHttpRequest(); xhr.upload.addEventListener("progress", function(e) { if (e.lengthComputable) { var percent = (e.loaded / e.total) * 100; $("#progress").width(percent + "%"); $("#progressText").text(Math.round(percent) + "%"); } }); return xhr; }, success: function(response) { alert("آپلود با موفقیت انجام شد!"); console.log(response); $("#progressWrapper").hide(); }, error: function(xhr, status, error) { alert("خطا در آپلود فایل!"); $("#progressWrapper").hide(); } }); }); }); 3. کد PHP برای پردازش آپلود کد PHP برای پردازش فایل آپلودی به شکل مشابهی خواهد بود که قبلاً ذکر شد: <?php if ($_SERVER['REQUEST_METHOD'] === 'POST') { $uploadDir = 'uploads/'; // مسیر پوشه آپلودها $maxFileSize = 5 * 1024 * 1024; // حداکثر حجم فایل 5MB $allowedTypes = ['image/jpeg', 'image/png', 'image/gif']; // انواع فایل مجاز $name = $_POST['name']; // گرفتن نام و نام خانوادگی $file = $_FILES['image']; // بررسی نوع فایل if (!in_array($file['type'], $allowedTypes)) { echo 'فرمت فایل مجاز نیست.'; exit; } // بررسی اندازه فایل if ($file['size'] > $maxFileSize) { echo 'حجم فایل بیش از حد مجاز است.'; exit; } // ساخت نام تصادفی برای فایل $fileName = uniqid('img_') . '.' . pathinfo($file['name'], PATHINFO_EXTENSION); // مسیر نهایی فایل $uploadPath = $uploadDir . $fileName; // انتقال فایل به پوشه مقصد if (move_uploaded_file($file['tmp_name'], $uploadPath)) { echo 'فایل با موفقیت آپلود شد!'; } else { echo 'خطا در آپلود فایل!'; } } else { echo 'درخواست غیر معتبر'; } ?> توضیحات: بوت‌استرپ: این فریم‌ورک به شما کمک می‌کند تا بدون نوشتن CSS زیاد، فرم خود را به شکلی زیبا طراحی کنید. در اینجا از کلاس‌های بوت‌استرپ برای استایل‌دهی به فرم و دکمه‌ها استفاده شده است. پروگرس بار: به محض اینکه آپلود شروع می‌شود، یک پروگرس بار به نمایش درمی‌آید که درصد آپلود فایل را نشان می‌دهد. AJAX: فرم به صورت AJAX ارسال می‌شود و صفحه رفرش نمی‌شود. PHP: فایل‌ها در سرور ذخیره می‌شوند و انواع فایل و حجم آن‌ها محدود به تنظیمات مشخص شده‌اند. این روش ساده و امن برای ایجاد فرم آپلود تصویر با استفاده از بوت‌استرپ، AJAX و PHP است.

ادامه مطلب
  • پنجشنبه, 13 آذر 1403
  • آموزش برنامه نویسی جوملا

یک کامپوننت جوملا با استفاده از PHP و MySQL بسازید.

 کامپوننت‌های جوملا معمولاً شامل فایل‌ها و ساختار خاصی هستند که باید رعایت شوند. در اینجا یک راهنمای کلی برای ساخت یک کامپوننت ساده جوملا با استفاده از PHP و MySQL آورده شده است. مراحل ساخت کامپوننت جوملا: ساخت پوشه کامپوننت: کامپوننت‌های جوملا در پوشه components قرار می‌گیرند. پوشه کامپوننت خود را در مسیر components/com_yourcomponent ایجاد کنید. ساخت فایل XML: این فایل تنظیمات و متا‌داده کامپوننت را تعریف می‌کند. در این فایل اطلاعاتی مانند نام کامپوننت، نسخه، فایل‌های مورد نیاز و دسترسی‌ها قرار می‌گیرد. فایل XML باید با نام yourcomponent.xml باشد و در پوشه اصلی کامپوننت قرار گیرد. نمونه فایل yourcomponent.xml: <extension type="component" version="3.9" client="site"> <name>Your Component</name> <author>Your Name</author> <description>Describe your component here</description> <files> <folder>models</folder> <folder>views</folder> <folder>controllers</folder> <file type="administration" name="yourcomponent.php">yourcomponent.php</file> <file name="controller.php">controller.php</file> <file name="helper.php">helper.php</file> <file name="view.html.php">view.html.php</file> </files> <administration> <menu>yourcomponent</menu> </administration> </extension> ساخت فایل‌های PHP اصلی: شما به حداقل ۴ فایل برای کامپوننت نیاز دارید: yourcomponent.php: این فایل اصلی است که برای بارگذاری کامپوننت استفاده می‌شود. controller.php: برای کنترل عملیات مربوط به کامپوننت. helper.php: برای نگهداری توابع کمکی (مثلاً اتصال به دیتابیس). view.html.php: برای نمایش نتایج یا داده‌ها. فایل‌های PHP و توضیحات: 1. yourcomponent.php (این فایل برای بارگذاری کامپوننت استفاده می‌شود): <?php defined('_JEXEC') or die('Restricted access'); // Load the controller $controller = JControllerLegacy::getInstance('YourComponent'); $controller->execute(JRequest::getCmd('task')); $controller->redirect(); 2. controller.php: <?php defined('_JEXEC') or die; class YourComponentController extends JControllerLegacy { public function display($cachable = false, $urlparams = false) { parent::display($cachable, $urlparams); } public function addItem() { // Connect to the database and insert an item $model = $this->getModel('Item'); $model->addItem(); $this->setRedirect(JRoute::_('index.php?option=com_yourcomponent', false)); } } 3. helper.php (برای اتصال به دیتابیس و انجام عملیات): <?php defined('_JEXEC') or die; class YourComponentHelper { public static function addItemToDatabase($data) { $db = JFactory::getDbo(); $query = $db->getQuery(true) ->insert($db->quoteName('#__yourcomponent_items')) ->columns($db->quoteName(array('name', 'description'))) ->values($db->quote($data['name']) . ',' . $db->quote($data['description'])); $db->setQuery($query); $db->execute(); } } 4. view.html.php (برای نمایش داده‌ها): <?php defined('_JEXEC') or die; class YourComponentViewYourComponent extends JViewLegacy { public function display($tpl = null) { // Get data from model $model = $this->getModel(); $items = $model->getItems(); // Assign data to the view $this->assignRef('items', $items); parent::display($tpl); } } 5. model.php (برای دریافت داده‌ها از دیتابیس): <?php defined('_JEXEC') or die; class YourComponentModelYourComponent extends JModelLegacy { public function getItems() { $db = JFactory::getDbo(); $query = $db->getQuery(true) ->select('*') ->from($db->quoteName('#__yourcomponent_items')); $db->setQuery($query); return $db->loadObjectList(); } } 6. قابلیت نصب و استفاده از کامپوننت: بعد از آماده‌سازی فایل‌های کامپوننت، می‌توانید آن را به صورت یک بسته ZIP فشرده کنید و در بخش مدیریت جوملا (Install Extension) نصب کنید. نکات و پیشنهادات: امنیت: حتماً از توابع آماده جوملا (مثل JFactory::getDbo() برای دسترسی به دیتابیس و JRequest::getVar() برای دریافت ورودی‌ها) استفاده کنید تا از حملات SQL Injection و Cross-Site Scripting (XSS) جلوگیری شود. جداسازی کدها: بهتر است مدل، ویو و کنترلر را به صورت جداگانه ایجاد کنید تا کدهای شما تمیزتر و قابل نگهداری‌تر باشند. گزارش خطا: برای اشکال‌زدایی و گزارش خطاها از قابلیت‌های گزارش‌گیری جوملا استفاده کنید.

ادامه مطلب
  • پنجشنبه, 13 آذر 1403
  • آموزش برنامه نویسی وردپرس

برنامه نویسی و طراحی یک پلاگین چت با هوش مصنوعی در وردپرس

 ما به یک پلاگین ساده نیاز داریم که پیام‌ها را از کاربران دریافت کرده و با استفاده از ChatGPT API (یا مدل هوش مصنوعی دیگری) پاسخ‌های مربوطه را ارسال کند و این پیام‌ها را در پایگاه داده ذخیره نماید. به علاوه، در تنظیمات پلاگین، باید فضایی برای وارد کردن API Key برای ارتباط با OpenAI فراهم کنیم. در ادامه، مراحل گام به گام ایجاد این پلاگین برای وردپرس توضیح داده شده است. گام اول: ساختار پلاگین ساختار دایرکتوری پلاگین وردپرس به شکل زیر خواهد بود: /wp-content/plugins/ /chat-ai/ chat-ai.php /admin/ settings.php /assets/ /js/ script.js /css/ style.css /includes/ /db.php /chat.php گام دوم: ساخت فایل اصلی پلاگین (chat-ai.php) در ابتدا، باید یک فایل اصلی برای پلاگین خود بسازید که وردپرس آن را شناسایی کند. این فایل باید اطلاعات مربوط به پلاگین را داشته باشد و همچنین افزونه را بارگذاری کند. <?php /* Plugin Name: Chat AI Plugin URI: https://example.com/chat-ai Description: پلاگین چت با هوش مصنوعی با استفاده از APIهای GPT-3 یا GPT-4 Version: 1.0 Author: Your Name Author URI: https://example.com License: GPL2 */ if (!defined('ABSPATH')) { exit; // Exit if accessed directly } // بارگذاری فایل‌های اسکریپت و استایل function chat_ai_enqueue_scripts() { wp_enqueue_script('chat-ai-js', plugin_dir_url(__FILE__) . 'assets/js/script.js', array('jquery'), null, true); wp_enqueue_style('chat-ai-css', plugin_dir_url(__FILE__) . 'assets/css/style.css'); } add_action('wp_enqueue_scripts', 'chat_ai_enqueue_scripts'); // ایجاد جدول در پایگاه داده هنگام فعال‌سازی پلاگین function chat_ai_install() { global $wpdb; $table_name = $wpdb->prefix . 'chat_messages'; // بررسی وجود جدول و ایجاد آن if ($wpdb->get_var("SHOW TABLES LIKE '$table_name'") != $table_name) { $charset_collate = $wpdb->get_charset_collate(); $sql = "CREATE TABLE $table_name ( id mediumint(9) NOT NULL AUTO_INCREMENT, user_message text NOT NULL, ai_response text NOT NULL, timestamp datetime DEFAULT CURRENT_TIMESTAMP NOT NULL, PRIMARY KEY (id) ) $charset_collate;"; require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); dbDelta($sql); } } register_activation_hook(__FILE__, 'chat_ai_install'); // ایجاد منو برای تنظیمات پلاگین در پنل مدیریت وردپرس function chat_ai_admin_menu() { add_menu_page('Chat AI Settings', 'Chat AI', 'manage_options', 'chat-ai', 'chat_ai_settings_page'); } add_action('admin_menu', 'chat_ai_admin_menu'); // صفحه تنظیمات پلاگین در پنل مدیریت function chat_ai_settings_page() { ?> <div class="wrap"> <h1>تنظیمات Chat AI</h1> <form method="post" action="options.php"> <?php settings_fields('chat_ai_options_group'); do_settings_sections('chat-ai'); ?> <table class="form-table"> <tr valign="top"> <th scope="row">کلید API ChatGPT</th> <td><input type="text" name="chat_ai_api_key" value="<?php echo esc_attr(get_option('chat_ai_api_key')); ?>" /></td> </tr> </table> <?php submit_button(); ?> </form> </div> <?php } // ثبت تنظیمات پلاگین function chat_ai_register_settings() { register_setting('chat_ai_options_group', 'chat_ai_api_key'); } add_action('admin_init', 'chat_ai_register_settings'); گام سوم: ایجاد فایل‌های جاوااسکریپت و استایل در پوشه /assets/js/، یک فایل جاوااسکریپت به نام script.js بسازید که مسئول ارسال پیام‌ها به سرور و دریافت پاسخ باشد. // assets/js/script.js jQuery(document).ready(function($) { $('#chat-send-btn').click(function() { var userMessage = $('#user-message').val(); if (userMessage.trim() === "") return; // نمایش پیام کاربر $('#chat-box').append('<div><strong>شما:</strong> ' + userMessage + '</div>'); $('#user-message').val(''); // پاک کردن ورودی // ارسال درخواست به سرور $.ajax({ url: ajaxurl, type: 'POST', data: { action: 'chat_ai_send_message', user_message: userMessage }, success: function(response) { // نمایش پاسخ هوش مصنوعی var aiResponse = response.ai_response; $('#chat-box').append('<div><strong>هوش مصنوعی:</strong> ' + aiResponse + '</div>'); $('#chat-box').scrollTop($('#chat-box')[0].scrollHeight); } }); }); }); در پوشه /assets/css/، یک فایل CSS به نام style.css برای طراحی ساده چت ایجاد کنید. /* assets/css/style.css */ #chat-box { width: 100%; height: 300px; border: 1px solid #ddd; padding: 10px; overflow-y: scroll; } #user-message { width: 80%; padding: 10px; } #chat-send-btn { padding: 10px; } گام چهارم: مدیریت درخواست‌ها و ذخیره پیام‌ها در پایگاه داده برای ارسال و ذخیره پیام‌ها، نیاز داریم که یک اکشن AJAX تعریف کنیم. در فایل اصلی پلاگین (chat-ai.php)، این کد را اضافه کنید: // مدیریت ارسال پیام و ذخیره آن در پایگاه داده function chat_ai_send_message() { global $wpdb; // دریافت پیام از کاربر $user_message = sanitize_text_field($_POST['user_message']); // دریافت API key از تنظیمات پلاگین $api_key = get_option('chat_ai_api_key'); if (empty($api_key)) { wp_send_json_error(array('ai_response' => 'کلید API معتبر نیست.')); } // درخواست به API ChatGPT (OpenAI) $ai_response = chat_ai_get_ai_response($user_message, $api_key); // ذخیره پیام و پاسخ در پایگاه داده $table_name = $wpdb->prefix . 'chat_messages'; $wpdb->insert($table_name, array( 'user_message' => $user_message, 'ai_response' => $ai_response, )); // ارسال پاسخ به فرانت‌اند wp_send_json_success(array('ai_response' => $ai_response)); } add_action('wp_ajax_chat_ai_send_message', 'chat_ai_send_message'); // ارسال درخواست به ChatGPT API function chat_ai_get_ai_response($message, $api_key) { $url = 'https://api.openai.com/v1/completions'; $data = array( 'model' => 'gpt-4', 'prompt' => $message, 'max_tokens' => 150, 'temperature' => 0.7 ); $args = array( 'body' => json_encode($data), 'headers' => array( 'Content-Type' => 'application/json', 'Authorization' => 'Bearer ' . $api_key ), 'method' => 'POST', 'data_format' => 'body' ); $response = wp_remote_post($url, $args); $body = wp_remote_retrieve_body($response); $result = json_decode($body, true); return $result['choices'][0]['text'] ?? 'پاسخی یافت نشد.'; } گام پنجم: نمایش فرم چت در فرانت‌اند حالا باید کدی برای نمایش چت در صفحات سایت ایجاد کنیم. این کد باید از طریق شورت‌کد (shortcode) یا مستقیماً در تم قرار گیرد. برای اضافه کردن شورت‌کد برای فرم چت: // نمایش فرم چت در صفحات با استفاده از شورت‌کد function chat_ai_display_chat() { ob_start(); ?> <div id="chat-box"></div> <input type="text" id="user-message" placeholder="پیام خود را وارد کنید..."> <button id="chat-send-btn">ارسال</button> <?php return ob_get_clean(); } add_shortcode('chat_ai', 'chat_ai_display_chat'); گام ششم: نصب پلاگین تمامی فایل‌های مربوطه را در پوشه پلاگین chat-ai/ قرار دهید. پوشه پلاگین را به /wp-content/plugins/ منتقل کنید. از بخش پلاگین ها نصب کنید. پلاگین ها در پنل مدیریت وردپرس، پلاگین را فعال کنید. 4. پس از فعال‌سازی، به صفحه تنظیمات پلاگین بروید و کلید API ChatGPT خود را وارد کنید. 5. از شورت‌کد [chat_ai] برای نمایش فرم چت در هر صفحه یا پست استفاده کنید. نتیجه نهایی: حالا شما یک پلاگین وردپرس دارید که به شما این امکان را می‌دهد تا از طریق یک فرم چت با ChatGPT ارتباط برقرار کنید، پیام‌ها را در پایگاه داده ذخیره کنید و همچنین یک بخش تنظیمات برای وارد کردن API Key ایجاد کنید. اگر به مشکلی برخوردید یا سوالی داشتید، خوشحال می‌شوم کمک کنم!

ادامه مطلب
  • پنجشنبه, 13 آذر 1403
  • آموزش برنامه نویسی جوملا

مراحل ساخت فایل ZIP قابل نصب در Joomla

می خواهم  گام‌به‌گام آموزش بدهم که چطور یک کد را به صورت دستی در یک فایل ZIP فشرده کنید تا بتوانید آن را در Joomla نصب کنید. مراحل ساخت فایل ZIP قابل نصب در Joomla: ایجاد ساختار دایرکتوری: ابتدا باید ساختار پوشه‌ها و فایل‌های کامپوننت را مطابق با ساختار زیر بسازید: /com_chat_ai/ /admin/ /controllers/ chat.php /models/ chat.php /views/ /chat/ view.html.php tmpl/ default.php /languages/ en-GB.com_chat_ai.ini /site/ /controllers/ chat.php /models/ chat.php /views/ /chat/ view.html.php tmpl/ default.php /media/ com_chat_ai.xml index.php ایجاد فایل‌های PHP و XML: شما باید هر یک از فایل‌های PHP و XML که در کد قبلی ذکر شد را در پوشه‌های مربوطه ایجاد کنید. برای مثال: com_chat_ai.xml: پیکربندی کامپوننت chat.php: فایل‌های کنترلر و مدل view.html.php و default.php: فایل‌های نمایشی ایجاد فایل زبان (اختیاری): شما می‌توانید یک فایل زبان ساده برای جوملا ایجاد کنید. این فایل معمولاً شامل متغیرهای متنی است که در کامپوننت استفاده می‌شود. فایل en-GB.com_chat_ai.ini می‌تواند به این صورت باشد: COM_CHAT_AI="Chat AI" COM_CHAT_AI_SEND_MESSAGE="Send Message" ایجاد فایل index.php: در پوشه اصلی com_chat_ai باید یک فایل index.php ایجاد کنید که برای جلوگیری از دسترسی مستقیم به پوشه‌ها مورد استفاده قرار می‌گیرد. این فایل می‌تواند بسیار ساده باشد و فقط شامل کد زیر باشد: <?php // No direct access defined('_JEXEC') or die; فشرده‌سازی پوشه: پس از ایجاد تمامی فایل‌ها و ساختار پوشه‌ها، حالا باید پوشه com_chat_ai را به یک فایل ZIP فشرده کنید. ابتدا پوشه com_chat_ai را انتخاب کنید. روی آن راست‌کلیک کرده و گزینه Send to > Compressed (zipped) folder را انتخاب کنید. یک فایل ZIP ایجاد می‌شود که می‌توانید آن را در بخش مدیریت افزونه‌ها در Joomla نصب کنید. نصب در Joomla: به مدیریت افزونه‌ها بروید. گزینه نصب را انتخاب کنید. فایل ZIP که ساخته‌اید را بارگذاری کنید. پس از نصب موفق، کامپوننت باید در منوی مدیریت جوملا در دسترس باشد. جمع‌بندی: با انجام مراحل بالا، می‌توانید کامپوننت خود را در Joomla به صورت یک فایل ZIP ایجاد کرده و آن را نصب کنید. اگر همه چیز درست پیش برود، شما یک کامپوننت چت با هوش مصنوعی در جوملا خواهید داشت که می‌توانید آن را از طریق پنل کاربری استفاده کنید!

ادامه مطلب
  • پنجشنبه, 13 آذر 1403
  • آموزش برنامه نویسی جوملا

ساخت کامپوننت چت با هوش مصنوعی برای جوملا ۵

ساخت یک کامپوننت چت با هوش مصنوعی برای جوملا 5 (Joomla 5) می‌تواند به صورت مراحل مختلف انجام شود. در اینجا به طور کلی روند ساخت این نوع کامپوننت توضیح داده می‌شود. در نظر داشته باشید که جوملا یک CMS (سیستم مدیریت محتوای) متن باز است و به راحتی می‌توان آن را برای افزودن قابلیت‌های مختلف گسترش داد. مراحل ساخت کامپوننت چت با هوش مصنوعی برای جوملا 5 1. بررسی الزامات پروژه هوش مصنوعی: می‌توانید از سرویس‌هایی مثل OpenAI (GPT-3 یا GPT-4)، Dialogflow، IBM Watson یا هر API هوش مصنوعی دیگر برای پردازش داده‌ها استفاده کنید. پلتفرم چت: شما باید یک سیستم چت با رابط کاربری ساده برای تعامل با کاربران داشته باشید. اینترنت و اتصال API: برای ارتباط با مدل هوش مصنوعی، به اینترنت و یک اتصال API نیاز دارید. 2. ایجاد یک کامپوننت جوملا ابتدا باید یک کامپوننت برای جوملا ایجاد کنید که کاربر بتواند با آن تعامل داشته باشد. ساخت کامپوننت در جوملا نیاز به دانش PHP و نحوه تعامل با API دارد. الف. ایجاد ساختار کامپوننت: برای ساخت یک کامپوننت در جوملا، از ساختار زیر استفاده کنید: components/com_yourchat/ admin/ - قسمت مدیریت کامپوننت site/ - قسمت عمومی و نمایش چت models/, views/, controllers/ - معماری MVC جوملا ب. فایل‌های اصلی: com_yourchat.php: فایل اصلی کامپوننت که در آن ساختار کلی کامپوننت قرار می‌گیرد. yourchat.php: این فایل برای نمایش چت استفاده می‌شود. controller.php: این فایل برای مدیریت درخواست‌ها از کاربر و ارسال آن‌ها به API هوش مصنوعی است. 3. ساخت رابط چت در قسمت Frontend (بخش سایت) در این بخش، شما باید یک چت UI (رابط کاربری) برای کاربران طراحی کنید که به راحتی با آن تعامل داشته باشند. الف. استفاده از HTML و JavaScript برای چت: در بخش views کامپوننت، یک فایل HTML برای نمایش چت ایجاد کنید: <div id="chat-box"> <div id="chat-window"></div> <input type="text" id="chat-input" placeholder="پیام خود را وارد کنید..." /> <button id="send-btn">ارسال</button> </div> <script> document.getElementById('send-btn').addEventListener('click', function() { const message = document.getElementById('chat-input').value; if (message) { sendMessage(message); } }); function sendMessage(message) { // ارسال پیام به سرور (API جوملا) fetch('/index.php?option=com_yourchat&task=chat.sendMessage', { method: 'POST', body: JSON.stringify({ message: message }), headers: { 'Content-Type': 'application/json' } }) .then(response => response.json()) .then(data => { document.getElementById('chat-window').innerHTML += `<div>${data.response}</div>`; document.getElementById('chat-input').value = ''; }); } </script> 4. اتصال به API هوش مصنوعی در قسمت مدیریت کامپوننت، شما باید به یک سرویس هوش مصنوعی متصل شوید. برای مثال، اگر از OpenAI استفاده می‌کنید، می‌توانید از کد زیر استفاده کنید: الف. ارسال درخواست به OpenAI: public function sendMessageToAI($message) { $api_key = 'your_openai_api_key'; $url = 'https://api.openai.com/v1/completions'; $data = [ 'model' => 'gpt-4', // یا مدل دیگری که استفاده می‌کنید 'messages' => [['role' => 'user', 'content' => $message]], 'max_tokens' => 150, ]; $options = [ 'http' => [ 'method' => 'POST', 'header' => "Content-Type: application/json\r\n" . "Authorization: Bearer $api_key\r\n", 'content' => json_encode($data), ], ]; $context = stream_context_create($options); $response = file_get_contents($url, false, $context); return json_decode($response, true); } ب. پردازش درخواست در کامپوننت جوملا: این متد را در کنترلر کامپوننت جوملا قرار دهید تا پیام‌های کاربران را دریافت و به OpenAI ارسال کند. پس از دریافت پاسخ، آن را به کاربر نشان دهید. 5. مدیریت پیام‌ها و ذخیره‌سازی در دیتابیس (اختیاری) شما می‌توانید پیام‌های چت را در دیتابیس جوملا ذخیره کنید تا بتوانید آن‌ها را بعداً مرور کنید. برای این کار باید یک مدل جدید برای ذخیره‌سازی پیام‌ها در دیتابیس جوملا بسازید. 6. امنیت از توکن‌های امنیتی برای جلوگیری از حملات CSRF استفاده کنید. بررسی کنید که داده‌های ورودی از کاربران به طور مناسب فیلتر شوند. 7. آزمایش و بهینه‌سازی بعد از پیاده‌سازی، باید کامپوننت خود را به خوبی آزمایش کنید تا مطمئن شوید که چت به درستی با API هوش مصنوعی ارتباط برقرار می‌کند و عملکرد صحیحی دارد. 8. نصب و راه‌اندازی در جوملا برای نصب این کامپوننت، باید یک فایل XML برای نصب جوملا ایجاد کنید که شامل تنظیمات و اطلاعات کامپوننت باشد. نتیجه‌گیری این یک راهنمای کلی برای ساخت یک کامپوننت چت با هوش مصنوعی برای جوملا 5 است. این فرآیند شامل طراحی رابط کاربری، ارتباط با API هوش مصنوعی، پردازش داده‌ها و پیاده‌سازی امنیت است.

ادامه مطلب
  • پنجشنبه, 13 آذر 1403
  • آموزش

استفاده از هوش مصنوعی در چت AJAX و PHP با ذخیره‌سازی داده‌ها در پایگاه داده MySQL

سلام! برای استفاده از هوش مصنوعی در چت با استفاده از AJAX و PHP و ذخیره‌سازی داده‌ها در پایگاه داده MySQL، مراحل زیر را می‌توانید دنبال کنید: مراحل کلی: ساخت پایگاه داده MySQL: ابتدا باید یک پایگاه داده MySQL برای ذخیره‌سازی داده‌های چت ایجاد کنید. این داده‌ها می‌توانند شامل پیام‌ها، تاریخ و زمان ارسال، و وضعیت پیام‌ها (خوانده شده یا نشده) باشند. ایجاد API برای ارتباط با PHP و MySQL: برای ارتباط بین چت (که به طور معمول از AJAX استفاده می‌کند) و پایگاه داده، باید یک API در PHP طراحی کنید که داده‌ها را از پایگاه داده خوانده و در صورت لزوم، پیام‌ها را ذخیره کند. پیاده‌سازی هوش مصنوعی در چت: می‌توانید از سرویس‌های هوش مصنوعی مانند OpenAI، GPT-3 یا GPT-4، یا حتی مدل‌های خاص خودتان استفاده کنید تا چت را هوشمندتر کنید. این مدل‌ها می‌توانند پاسخ‌های خودکار به پیام‌های کاربر بدهند. پیاده‌سازی AJAX برای ارسال و دریافت پیام‌ها: از AJAX برای ارسال و دریافت داده‌ها به صورت غیر همزمان استفاده می‌کنید. به این ترتیب، صفحه چت بدون نیاز به بارگذاری مجدد به روز می‌شود. 1. ساخت پایگاه داده MySQL ابتدا یک پایگاه داده و جدول برای ذخیره پیام‌ها بسازید: CREATE DATABASE chat_db; USE chat_db; CREATE TABLE messages ( id INT AUTO_INCREMENT PRIMARY KEY, user_message TEXT, bot_response TEXT, timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); 2. کدنویسی PHP برای ذخیره و خواندن پیام‌ها ایجاد یک فایل PHP برای ذخیره پیام‌های کاربر و پاسخ‌های هوش مصنوعی: save_message.php <?php $servername = "localhost"; $username = "root"; // نام کاربری MySQL $password = ""; // رمز عبور MySQL $dbname = "chat_db"; // ایجاد اتصال به دیتابیس $conn = new mysqli($servername, $username, $password, $dbname); // بررسی اتصال if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } $user_message = $_POST['user_message']; $bot_response = $_POST['bot_response']; // ذخیره پیام‌ها در پایگاه داده $sql = "INSERT INTO messages (user_message, bot_response) VALUES ('$user_message', '$bot_response')"; if ($conn->query($sql) === TRUE) { echo "New record created successfully"; } else { echo "Error: " . $sql . "<br>" . $conn->error; } $conn->close(); ?> get_messages.php <?php $servername = "localhost"; $username = "root"; // نام کاربری MySQL $password = ""; // رمز عبور MySQL $dbname = "chat_db"; // ایجاد اتصال به دیتابیس $conn = new mysqli($servername, $username, $password, $dbname); // بررسی اتصال if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } // خواندن پیام‌ها از دیتابیس $sql = "SELECT user_message, bot_response FROM messages ORDER BY timestamp ASC"; $result = $conn->query($sql); $messages = []; if ($result->num_rows > 0) { while($row = $result->fetch_assoc()) { $messages[] = $row; } } echo json_encode($messages); $conn->close(); ?> 3. پیاده‌سازی هوش مصنوعی (مانند OpenAI GPT) برای اینکه بتوانید از GPT-3 یا GPT-4 برای پاسخ به پیام‌های کاربران استفاده کنید، باید یک درخواست به API OpenAI ارسال کنید. chat_with_ai.php <?php $api_key = "YOUR_OPENAI_API_KEY"; $api_url = "https://api.openai.com/v1/completions"; $user_message = $_POST['user_message']; $data = [ "model" => "gpt-4", // یا gpt-3.5 برای نسخه قدیمی‌تر "prompt" => $user_message, "max_tokens" => 150, "temperature" => 0.7 ]; $options = [ 'http' => [ 'header' => "Content-type: application/json\r\n" . "Authorization: Bearer $api_key\r\n", 'method' => 'POST', 'content' => json_encode($data) ] ]; $context = stream_context_create($options); $response = file_get_contents($api_url, false, $context); $response_data = json_decode($response, true); $bot_response = $response_data['choices'][0]['text']; echo $bot_response; ?> 4. پیاده‌سازی AJAX برای ارسال و دریافت پیام‌ها در نهایت، از AJAX برای ارسال پیام‌ها به سرور و دریافت پاسخ استفاده می‌کنید. این کار باعث می‌شود که تجربه کاربری روان و بدون بارگذاری مجدد صفحه باشد. chat.js // ارسال پیام به سرور و دریافت پاسخ از هوش مصنوعی function sendMessage() { const userMessage = document.getElementById("userMessage").value; // ارسال پیام به PHP و ذخیره در دیتابیس $.ajax({ url: "chat_with_ai.php", type: "POST", data: { user_message: userMessage }, success: function(response) { const botResponse = response.trim(); document.getElementById("chatBox").innerHTML += "<p>User: " + userMessage + "</p>"; document.getElementById("chatBox").innerHTML += "<p>Bot: " + botResponse + "</p>"; document.getElementById("userMessage").value = ""; // ذخیره پیام‌ها در دیتابیس $.ajax({ url: "save_message.php", type: "POST", data: { user_message: userMessage, bot_response: botResponse }, success: function() { console.log("Message saved successfully."); } }); } }); } // بارگذاری پیام‌های قبلی از دیتابیس function loadMessages() { $.ajax({ url: "get_messages.php", type: "GET", success: function(response) { const messages = JSON.parse(response); messages.forEach(message => { document.getElementById("chatBox").innerHTML += "<p>User: " + message.user_message + "</p>"; document.getElementById("chatBox").innerHTML += "<p>Bot: " + message.bot_response + "</p>"; }); } }); } // بارگذاری پیام‌ها هنگام بارگذاری صفحه window.onload = loadMessages; HTML برای نمایش چت: <!DOCTYPE html> <html lang="fa"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Chat AI</title> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <script src="/chat.js"></script> </head> <body> <div id="chatBox"></div> <input type="text" id="userMessage" placeholder="پیام خود را وارد کنید..."> <button onclick="sendMessage()">ارسال</button> </body> </html> توضیحات: chat_with_ai.php از OpenAI API برای دریافت پاسخ هوش مصنوعی استفاده می‌کند. save_message.php پیام‌های کاربر و پاسخ‌های هوش مصنوعی را در پایگاه داده MySQL ذخیره می‌کند. get_messages.php پیام‌ها را از پایگاه داده می‌خواند و به صورت JSON ارسال می‌کند. AJAX به شما این امکان را می‌دهد که بدون بارگذاری مجدد صفحه، پیام‌ها را ارسال و دریافت کنید. این مراحل یک سیستم چت ساده با استفاده از PHP، MySQL و هوش مصنوعی را ایجاد می‌کند. البته برای استفاده در پروژه‌های بزرگ‌تر، ممکن است نیاز به بهینه‌سازی و امنیت بیشتر داشته باشید (مثل استفاده از prepared statements در PHP برای جلوگیری از SQL injection).

ادامه مطلب
  • پنجشنبه, 13 آذر 1403
  • آموزش

دریافت داده‌ها از کاربر به صورت JSON و نمایش دوباره آن‌ها به صورت JSON در

  برای دریافت داده‌ها از کاربر به صورت JSON و نمایش دوباره آن‌ها به صورت JSON در PHP، معمولاً از متدهای POST یا GET استفاده می‌کنیم. در اینجا یک نمونه کد ساده برای دریافت داده‌ها از کاربر به صورت JSON و سپس نمایش آن‌ها به صورت JSON آورده‌ام: مراحل: دریافت داده‌ها به صورت JSON از درخواست POST. پردازش داده‌ها (در اینجا فقط بازتاب آن‌ها به صورت JSON). ارسال پاسخ به صورت JSON. نمونه کد PHP: <?php // تنظیم هدر برای اعلام نوع داده JSON header('Content-Type: application/json'); // بررسی اینکه درخواست از نوع POST است if ($_SERVER['REQUEST_METHOD'] === 'POST') { // دریافت داده‌های خام JSON از بدن درخواست $json_input = file_get_contents('php://input'); // تبدیل داده‌های JSON به آرایه یا شیء PHP $data = json_decode($json_input, true); // بررسی اینکه آیا داده‌های JSON معتبر هستند if ($data === null) { // اگر JSON نامعتبر بود، ارور برمی‌گردانیم echo json_encode(["error" => "Invalid JSON data"]); } else { // در اینجا می‌توانید داده‌ها را پردازش کنید (در این مثال، فقط آن‌ها را برمی‌گردانیم) // ارسال داده‌ها به صورت JSON به کاربر echo json_encode([ "status" => "success", "received_data" => $data ]); } } else { // اگر درخواست از نوع POST نباشد، ارور می‌دهیم echo json_encode(["error" => "Only POST requests are allowed"]); } ?> توضیحات کد: خط اول: هدر Content-Type را برای اعلام نوع پاسخ به JSON تنظیم می‌کنیم. خط پنجم: بررسی می‌کنیم که آیا درخواست از نوع POST است. خط هشتم: داده‌های JSON را از بدنه درخواست دریافت می‌کنیم. خط یازدهم: داده‌های JSON را با استفاده از json_decode به آرایه PHP تبدیل می‌کنیم. خط سیزدهم: اگر JSON نامعتبر باشد، پیام خطا ارسال می‌کنیم. خط بیست و یکم: داده‌های دریافت شده را به صورت JSON مجدد به کاربر ارسال می‌کنیم. ارسال درخواست از طریق POST به این API: برای ارسال درخواست از نوع POST با JSON، می‌توانید از ابزارهایی مانند Postman یا کد زیر در جاوااسکریپت استفاده کنید: fetch('URL_OF_YOUR_PHP_FILE.php', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ name: 'John Doe', age: 30 }) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error('Error:', error)); مثال خروجی: اگر داده‌های JSON به صورت زیر ارسال شوند: { "name": "John Doe", "age": 30 } پاسخ دریافتی به صورت زیر خواهد بود: { "status": "success", "received_data": { "name": "John Doe", "age": 30 } } این کد می‌تواند به شما کمک کند تا داده‌ها را از کاربر دریافت کرده و به صورت JSON پاسخ دهید. اگر سوال یا مشکل خاصی دارید، خوشحال می‌شوم که بیشتر کمک کنم!

ادامه مطلب
  • یکشنبه, 11 آذر 1402
  • آموزش طراحی قالب جوملا

افزودن ورژن به فایل های سی اس اس و جی اس در جوملا

برای افزودن ورژن به نسخه های جی اس و سی اس اس در جوملا از روش زیر استفاده کنید $document->addStyleSheet("...demo.css", array('version'=>'auto')); // leads to something like // <link href="/...demo.css?37e343bbb4073e0dfe5b1eb40b6" rel="stylesheet">

ادامه مطلب
  • یکشنبه, 28 مرداد 1402
  • آموزش برنامه نویسی جوملا

افزودن دسته بندی در جوملا با php

گاهی توی یه کامپوننت نیاز هست تا شما دسته بندی بسازید ٬ روش زیر یکی از استاندارد ترین حالت های ایجاد دسته بندی در جوملاست: $category_data['id'] = 0; $category_data['parent_id'] = 0; $category_data['title'] = "my title" ; $category_data['alias'] = "my alias"; $category_data['extension'] = 'com_content'; $category_data['published'] = 1; $category_data['language'] = '*'; $category_data['params'] = array('category_layout' => '','image' => ''); $category_data['metadata'] = array('author' => '','robots' => ''); $newapp = JFactory::getApplication(); $mvcFactory = $newapp->bootComponent('com_categories')->getMVCFactory(); $catModel = $mvcFactory->createModel('Category', 'Administrator', ['ignore_request' => true]); $category_id = $catModel->save($category_data); if (!$category_id ){ throw new Exception('Can't create Category...'); }

ادامه مطلب
  • سه شنبه, 21 ارديبهشت 1402
  • اسلاید

ولادت حضرت فاطمه معصومه علیها سلام و روز دختر

با تبریک فرا رسیدن ولادت حضرت فاطمه معصومه علیها سلام و روز دختر به همه دختران سرزمینم ، تصمیم داریم به این مناسب 10 درصد تخفیف برای همه محصولات اعمال کنیم!

ادامه مطلب
  • چهارشنبه, 06 ارديبهشت 1402
  • راهنما

چگونه یک موقعیت ماژول را با php در جوملا صدا بزنیم؟

برای ایجاد یک موقعیت ماژول با کد های php می توانید از روش زیر استفاده کنید.   < ?php jimport('joomla.application.module.helper'); $modules = JModuleHelper::getModules('POSITIONHERE'); foreach ($modules as $module) { echo JModuleHelper::renderModule($module); } ? >  

ادامه مطلب
  • جمعه, 28 فروردين 1402
  • اسلاید

عید سعید فطر بر همه پاکان و صالحان و روزه داران عزیز مبارک باد

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

ادامه مطلب
  • شنبه, 28 اسفند 1401
  • اسلاید

نوروز باستانی بر همه ایرانیان پاکزاد مبارک باد

در کمال سرور و شادمانی آغاز سالی پر از نیکی و پایداری شادی ها برای شما ایرانیان نیک سرشت را آرزو مندیم. امیدواریم سال نو برای همه ایرانیان سالی به از دور غم باشد. برای شما دوستان عزیز عیدانه ای با 50 درصد کاهش هزینه در نظر گرفته ایم . امید است باعث شادی شما باشیم!

ادامه مطلب
  • جمعه, 08 اسفند 1401
  • آموزش برنامه نویسی جوملا

افزودن متاتگ های دلخواه OG TAG برای جوملا

برای افزودن تگ دلخواه OG میتوانید از کد های زیر در قالب یا در کامپوننت های اختصاصی استفاده کنید.   $doc = JFactory::getDocument(); $images = json_decode($this->item->images); $fbimage = JURI::base() . $images->image_fulltext; $doc->addCustomTag( '<meta property="og:image" content="' . $fbimage . '">' );   به جای $images->image_fulltext; کد تصویر خودتون رو باید صدا بزنید.

ادامه مطلب
  • یکشنبه, 14 آبان 1401
  • اخبار

کند شدن سایت های وردپرسی به خاطر فیلترینگ

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

ادامه مطلب
  • پنجشنبه, 03 آبان 1401
  • اسلاید

حمایت از کسب و کارهای آسیب دیده

اگر کسب و کارهای شما به خاطر فیلتر اینستاگرام آسیب دیده ٬ ما از شما حمایت می کنیم.فروشگاه یا معرفی محصولات شما رو با فقط ده درصد هزینه راه اندازی می کنیم.اگر توان مالی ندارید میتوانید با انتخاب قالب های اماده این هزینه را به حداقل ممکن کاهش بدهید.با شماره های ۰۹۱۲۴۱۹۵۰۶۶ یا ۰۹۳۷۴۶۶۱۱۲۷ تماس بگیرید یا پیام بگذارید تا تماس بگیریم.

ادامه مطلب
  • سه شنبه, 07 مهر 1401
  • آموزش برنامه نویسی جوملا

بدست آوردن گروه کاربری یک کاربر در جوملا

برای بدست آوردن گروه کاربری یک کاربر در جوملا می توانید از کد زیر استفاده کنید: $user = JFactory::getUser(); $groups = $user->get('groups'); foreach ($groups as $group) { echo '<p>Group = ' . $group . '</p>'; }

ادامه مطلب
  • سه شنبه, 07 مهر 1401
  • آموزش برنامه نویسی جوملا

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

برای ارسال ایمیل در جوملا با استفاده از php در کامپوننت های اختصاصی می توانید از کد زیر استفاده کنید. $from = 'admin@somewhere.com'; $fromname = 'BIGSHOT Blog'; $recipient[] = 'john@somewhere.com'; $recipient[] = 'jane@somewhere.com'; $subject = 'Want to learn about BIGSHOT Blog'; $body = '<p>Check us out!</p><p><a href="http://www.somewhere.com" target="_blank">http://www.somewhere.com</a></p>'; $mode = 1; $cc = 'bob@somewhereelse.com'; $bcc[] = 'simon@somewhereelse.com'; $bcc[] = 'nick@somewhereelse.com'; $attachment[] = '/home/my_site/public_html/images/stories/food/coffee.jpg'; $attachment[] = '/home/my_site/public_html/images/stories/food/milk.jpg'; $replyto = 'no_reply@somewhere.com'; $replytoname = 'NO REPLY - BIGSHOT Blog'; JUtility::sendMail($from, $fromname, $recipient, $subject, $body, $mode, $cc, $bcc, $attachment, $replyto, $replytoname);

ادامه مطلب
  • سه شنبه, 07 مهر 1401
  • آموزش برنامه نویسی جوملا

انتقال به صفحه یا آدرس در جوملا

برای انتقال یک صفحه در جوملا به صفحه ای دیگر یا یک سایت دیگر از کد زیر می توانید استفاده کنید $app = JFactory::getApplication(); $app->enqueueMessage('Redirect to another page was successful', 'success'); $app->redirect(JRoute::_('index.php')); //or $app = JFactory::getApplication(); $app->redirect("'http://google.com'");

ادامه مطلب
  • جمعه, 04 مهر 1401
  • آموزش برنامه نویسی وردپرس

تشخیص صفحه اول در وردپرس

گاهی برای شما لازم می شود تا کد خاصی را فقط در صفحه خانه وردپرس لود کنید برای تشخیص صفحه اصلی از کد زیر استفاده کنید: if ( is_front_page() ) : get_header( 'front' ); else : get_header(); endif; is_front_page() /* is_front_page() returns true if the user is on the page or page of posts that is set to the front page on Settings->Reading->Your homepage displays. */ is_home() /* is_home() return true when on the posts list page, This is usually the page that shows the latest 10 posts. */ is_home()

ادامه مطلب
  • جمعه, 04 مهر 1401
  • آموزش برنامه نویسی وردپرس

تشخیص وجود تصویر شاخص کوچک در وردپرس

برای تشخیص وجود تصویر شاخص کوچک در وردپرس از روش زیر استفاده کنید: <?php if ( has_post_thumbnail() ) { the_post_thumbnail(); } else { ?> <img src="/<?php bloginfo('template_directory'); ?>/images/default-image.jpg" alt="<?php the_title(); ?>" /> <?php } ?>

ادامه مطلب
  • جمعه, 04 مهر 1401
  • آموزش برنامه نویسی وردپرس

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

برای تشخیص مدیر بودن یک کاربر در وردپرس باید از روش زیر استفاده کنید: <?php if(current_user_can('editor')) { ?> <!-- Stuff here for editors --> <?php } ?> <?php if(current_user_can('administrator')) { ?> <!-- Stuff here for administrators --> <?php } ?>

ادامه مطلب
  • جمعه, 04 مهر 1401
  • آموزش برنامه نویسی وردپرس

بدست آورد کلاس html در وردپرس

برای این کار می توانید کد زیر را در هدر سایت بگذارید: <body <?php body_class(); ?>> <!-- This adds the wordpress body classes markup that you can use for CSS configuration -->

ادامه مطلب
  • جمعه, 04 مهر 1401
  • آموزش برنامه نویسی وردپرس

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

شما می توانید یک پوشه درست کرده و هر بخش از فایل functions.php را درون آن قرار دهید و در فایل functions.php آنها را صدا بزنید: <?php /* * functions.php * */ require_once( __DIR__ . '/includes/null-meta-compare.php'); require_once( __DIR__ . '/includes/older-examples.php'); require_once( __DIR__ . '/includes/wp-admin-menu-classes.php'); require_once( __DIR__ . '/includes/admin-menu-function-examples.php'); // WA: Adding a Taxonomy Filter to Admin List for a Custom Post Type? // http://wordpress.stackexchange.com/questions/578/ require_once( __DIR__ . '/includes/cpt-filtering-in-admin.php'); require_once( __DIR__ . '/includes/category-fields.php'); require_once( __DIR__ . '/includes/post-list-shortcode.php'); require_once( __DIR__ . '/includes/car-type-urls.php'); require_once( __DIR__ . '/includes/buffer-all.php'); require_once( __DIR__ . '/includes/get-page-selector.php'); // http://wordpress.stackexchange.com/questions/907/ require_once( __DIR__ . '/includes/top-5-posts-per-category.php'); // http://wordpress.stackexchange.com/questions/951/ require_once( __DIR__ . '/includes/alternate-category-metabox.php'); // http://lists.automattic.com/pipermail/wp-hackers/2010-August/034384.html require_once( __DIR__ . '/includes/remove-status.php'); // http://wordpress.stackexchange.com/questions/1027/removing-the-your-backup-folder-might-be-visible-to-the-public-message-generate require_once( __DIR__ . '/includes/301-redirects.php');

ادامه مطلب
  • جمعه, 04 مهر 1401
  • آموزش برنامه نویسی وردپرس

نحوه نمایش مسیر سایت در تم یا قالب به صورت برنامه ریزی شده در وردپرس

برای   نمایش مسیر سایت در تم یا قالب به صورت برنامه ریزی شده در وردپرس از روش زیر استفاده کنید: add_filter( 'the_content', function( $content ) { if( function_exists( 'rank_math_get_breadcrumbs' ) ) { $content = rank_math_get_breadcrumbs() . $content; } return $content; });

ادامه مطلب
  • جمعه, 04 مهر 1401
  • آموزش برنامه نویسی وردپرس

بدست آوردن تاریخ امروز در وردپرس

برای بدست آوردن تاریخ امروز در وردپرس از روش زیر استفاده کنید: <?php echo get_the_date( 'l F j, Y' ); ?>

ادامه مطلب
  • جمعه, 04 مهر 1401
  • آموزش برنامه نویسی وردپرس

بدست آوردن نام کاربری یک کاربر در وردپرس

برای بدست آوردن نام کاربری یک کاربر در وردپرس از روش زیر استفاده کنید: $current_user = wp_get_current_user(); echo($current_user->user_login); $current_user_id = get_current_user_id(); $current_user = wp_get_current_user();

ادامه مطلب
  • جمعه, 04 مهر 1401
  • آموزش برنامه نویسی وردپرس

بدست آوردن ادرس اواتار یک کاربر در وردپرس

برای پیدا کردن مسیر تصویر اواتار یک کارب می توانید از کد زیر استفاده کنید: get_avatar_url($user_id);

ادامه مطلب
  • جمعه, 04 مهر 1401
  • آموزش برنامه نویسی وردپرس

بدست اوردن اطلاعات یک کاربر از روی ایمیل در وردپرس

شما می توانید از روی ایمیل یک کاربر اطلاعات او را بدست آوردید برای این کار می توانید از روش زیر اقدام کنید: global $current_user; get_currentuserinfo(); echo $current_user->user_email; $user_obj = get_user_by('id', 1); $user = get_user_by( 'email', 'user@example.com' ); $userId = $user->ID;

ادامه مطلب
  • جمعه, 04 مهر 1401
  • آموزش برنامه نویسی وردپرس

بدست آوردن اطلاعات یک کاربر در وردپرس براساس شناسه کاربری

برای بدست آوردن اطلاعات یک کاربر در وردپرس براساس شناسه کاربری از روش زیر می توانید استفاده کنید: <?php $user_id = get_current_user_id(); ?> $current_user = wp_get_current_user(); echo($current_user->user_login); echo get_the_ID(); function get_the_ID() { // phpcs:ignore WordPress.NamingConventions.ValidFunctionName.FunctionNameInvalid $post = get_post(); return ! empty( $post ) ? $post->ID : false; } $user_obj = get_user_by('id', 1); $user = get_user_by( 'email', 'user@example.com' ); $userId = $user->ID;

ادامه مطلب
  • جمعه, 04 مهر 1401
  • آموزش برنامه نویسی وردپرس

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

برای اینکه یک تصویر در قالب نمایش داده شود باید ادرس پوشه قالب قبل از ادرس تصویر صدا زده شود: // Get template directory example: <img src="/<?php echo get_template_directory_uri(); ?>/images/logo.png" /> // If you use child theme you will have to use another function: <img src="/<?php echo get_stylesheet_directory_uri(); ?>/images/logo.png" /> <img src="/<?php echo get_template_directory_uri(); ?>/images/logo.png"> include( get_template_directory_uri() . '/includes/my_file.php' ); add_action('wp_enqueue_scripts', 'wpdocs_scripts_method'); /* * Enqueue a script with the correct path. */ function wpdocs_scripts_method() { wp_enqueue_script( 'custom_script', get_template_directory_uri() . '/js/custom_script.js', array('jquery') ); }

ادامه مطلب
  • جمعه, 04 مهر 1401
  • آموزش برنامه نویسی وردپرس

وردپرس پیوند ثابت کوتاه را دریافت کنید

برای بدست اوردن لینک کوتاه یک مطلب از دستور های زیر استفاده کنید: // Get post permalink (you can use it inside a wp_query loop) <?php the_permalink(); ?> // or <?php $link = get_the_permalink(); ?> // outside the loop: <?php echo get_permalink( $post->ID ); ?> // Get shortlink (short permalink) <?php echo wp_get_shortlink(); ?>

ادامه مطلب
  • جمعه, 04 مهر 1401
  • آموزش برنامه نویسی وردپرس

وردپرس آدرس اصلی را دریافت کنید

برای بدست اوردن ادرس اصلی سایت در وردپرس از این کد php استفاده کنید. <?php echo get_site_url(); ?> کاربرد این دستور در صدا زدن لینک هایی است که به صفحه اصلی سایت مربوط می شود مثل لینک بر روی تصویر لوگو

ادامه مطلب
  • جمعه, 04 مهر 1401
  • کاربری

جشنواره ها و تخفیفات

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

ادامه مطلب
  • جمعه, 04 مهر 1401
  • کاربری

ثبت نام در سایت

با عضویت در سایت می توانید به خرید های خود دسترسی داشته باشید٫ فایل های خریداری شده را دانلود کنید و به کد های لایسنس خود دسترسی داشته باشید!

ادامه مطلب
  • سه شنبه, 31 شهریور 1401
  • اسلاید

اپلیکیشن نیتو جوملا

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

ادامه مطلب
  • چهارشنبه, 30 شهریور 1401
  • راهنما

کد php صدا زدن ماژول در کامپوننت های اختصاصی

برای صدا زدن ماژول در کامپوننت های اختصاصی کافی است کد زیر را صدا بزنید. <?phpjimport('joomla.application.module.helper');    // this is where you want to load your module position    $modules = JModuleHelper::getModules('header');     foreach($modules as $module)    {    echo JModuleHelper::renderModule($module);    }?>

ادامه مطلب
  • چهارشنبه, 30 شهریور 1401
  • راهنما

سفارشی کردن نحوه نمایش ماژول ها

روش countModules را می توان در قالب برای تعیین تعداد ماژول های فعال در یک موقعیت ماژول مورد استفاده قرار داد. این معمولاً برای گنجاندن HTML در اطراف ماژول ها در یک موقعیت خاص استفاده می شود، تنها در صورتی که حداقل یک ماژول برای آن موقعیت فعال باشد. این از تعریف مناطق خالی در خروجی الگو جلوگیری می‌کند و تکنیکی است که گاهی به آن «ستون‌های در حال فروپاشی» می‌گویند. برای مثال، کد زیر تنها در صورتی شامل ماژول هایی در موقعیت 'user1' می شود که حداقل یک ماژول برای آن موقعیت فعال باشد. <?php if ($this->countModules( 'user1' )) : ?> <div class="user1"> <jdoc:include type="modules" name="user1" style="rounded" /> </div> <?php endif; ?>   استفاده اساسی از روش countModules در اینجا توضیح داده شده است روش countModules را می توان برای تعیین تعداد ماژول ها در یک موقعیت ماژول مورد استفاده قرار داد. آرگومان تابع countModules معمولاً فقط نام یک موقعیت ماژول است. این تابع تعداد ماژول‌هایی را که در حال حاضر برای آن موقعیت ماژول فعال هستند، برمی‌گرداند. از زمان جوملا! 3.0 همه قالب های رسمی از کد php ساده برای محاسبه تعداد موقعیت های چند ماژول استفاده می کنند. این کد عرض محتوا را محاسبه می کند و در index.php protostar یافت می شود: // تنظیم عرض محتوا if ($this->countModules('position-7') && $this->countModules('position-8')) { $span = "span6"; } elseif ($this->countModules('position-7') && !$this->countModules('position-8')) { $span = "span9"; } elseif (!$this->countModules('position-7') && $this->countModules('position-8')) { $span = "span9"; } دیگر { $span = "span12"; } این کد در قسمت اصلی قالب استفاده می شود و به طور خودکار عرض آن را مرتب می کند. بنابراین اگر کاربر برخی از ماژول ها را در سمت چپ فعال کند، عرض ها به ترتیب span9 و span3 می شوند (span12 عرض کامل است). اگر کاربر هر دو سمت چپ و راست را فعال کند، عرض ها به span3 span6 span3 تبدیل می شوند. و اگر هیچ ماژول، چپ یا راست، فعال نباشد، عرض به span12 (ردیف کامل) تبدیل می‌شود. حذف ماژول وقتی فعال نیست یا خالی است. یک نیاز رایج هنگام طراحی صفحات وب در جوملا! زمانی که هیچ ماژولی در آن موقعیت فعال نباشد، موقعیت ماژول حذف می شود تا فضا برای سایر عناصر صفحه در دسترس باشد. منطقه حذف شده به عنوان "ستون فرو ریخته" نامیده می شود. این را می توان با استفاده از countModulesتابع به دست آورد. برای مثال، اگر می‌خواهید user1موقعیت ماژول را فقط در صورتی درج کنید که ماژول‌هایی در آن موقعیت فعال باشند، می‌توانید از این کد استفاده کنید: <?php if ($this->countModules( 'user1' )) : ?> <div class="user1"> <jdoc:include type="modules" name="user1" style="xhtml" /> </div> <?php endif; ?> توجه داشته باشید که <jdoc:include />تگ و اطراف <div>آن تنها در صورتی گنجانده می شوند که countModulesفراخوانی یک مقدار غیر صفر برگرداند ( ifعبارت PHP صفر را نادرست و هر مقدار غیر صفر را درست در نظر می گیرد. گاهی اوقات ممکن است بخواهید یک جفت موقعیت ماژول به تنهایی یا با هم جمع شوند. <?php if ($this->countModules( 'user1 or user2' )) : ?> <div class="user1user2"> <?php if ($this->countModules( 'user1' )) : ?> <jdoc:include type="modules" name="user1" style="xhtml" /> <?php endif; ?> <?php if ($this->countModules( 'user2' )) : ?> <jdoc:include type="modules" name="user2" style="xhtml" /> <?php endif; ?> </div> <?php endif; ?> توجه کنید که چگونه منطقه (که با کلاس CSS " user1user2" استایل‌بندی شده است) تنها در صورتی خروجی می‌شود که " user1" یا " user2"، یا هر دو ، حداقل یک ماژول فعال داشته باشند. اگر می‌خواهید یک تقسیم‌کننده دو موقعیت ماژول را از هم جدا کند، باید مراقب باشید که فقط در صورتی که هر دو موقعیت ماژول دارای ماژول‌های فعال باشند، از تقسیم‌کننده خروجی بگیرید. مثلا، <?php if ($this->countModules( 'user1 or user2' )) : ?> <div class="user1user2"> <?php if ($this->countModules( 'user1' )) : ?> <jdoc:include type="modules" name="user1" style="xhtml" /> <?php endif; ?> <?php if ($this->countModules( 'user1 and user2' )) : ?> <div class="divider"></div> <?php endif; ?> <?php if ($this->countModules( 'user2' )) : ?> <jdoc:include type="modules" name="user2" style="xhtml" /> <?php endif; ?> </div> <?php endif; ?> ماژول کروم چیست؟ ماژول کروم به طراحان قالب اجازه می دهد تا مقدار مشخصی بر نحوه نمایش خروجی یک ماژول در قالب خود کنترل داشته باشند. اساساً از مقدار کمی HTML از پیش تعریف شده تشکیل شده است که قبل، بعد یا اطراف خروجی هر ماژول درج می شود و سپس می توان با استفاده از CSS استایل دهی کرد. ماژول کروم معمولاً برای ایجاد حاشیه در اطراف ماژول ها، به ویژه با گوشه های گرد استفاده می شود، اما می توان از آن برای خیلی بیشتر از آن استفاده کرد. کروم ماژول با استفاده از ویژگی ' style ' در عبارت فراخوانی ماژول تعیین می شود. به عنوان مثال، عبارت زیر ممکن است در فایل index.php از قالبی که در حال حاضر به عنوان الگوی اصلی اختصاص داده شده است، برای قرار دادن ماژول ها در موقعیت " user1 " و اعمال کروم " سفارشی " ماژول استفاده شود: <jdoc:include type="modules" name="user1" style="custom" /> مشاهده می شود که همان ماژول کروم برای هر ماژول در آن موقعیت اعمال می شود - به عبارت دیگر، اگر می خواهید دو ماژول در یک ستون داشته باشید، اما می خواهید ماژول کروم متفاوتی داشته باشند، باید آنها را راه اندازی کنید. به عنوان دو "موقعیت" متفاوت (به عنوان مثال " user1 " و " user2 "). جوملا استاندارد! بسته 1.5+ شامل شش سبک پیش‌فرض ماژول کروم است. با این حال، انعطاف پذیری سیستم قالب به این معنی است که شما به این سبک ها محدود نمی شوید - ایجاد سبک های جدید به هر تعداد که می خواهید بسیار آسان است! همچنین ببینید: ماژول استاندارد کروم     استفاده از ماژول سفارشی کروم برای تعریف ماژول سفارشی کروم در قالب خود باید فایلی به نام modules.php در دایرکتوری html قالب خود ایجاد کنید. برای مثال، این ممکن است PATH_TO_JOOMLA/templates/TEMPLATE_NAME/html/modules.php باشد. در این فایل باید تابعی به نام تعریف کنید modChrome_STYLEکه " STYLE" نام ماژول سفارشی کروم شما باشد. این تابع سه آرگومان، $module, &$paramsو &$attribs, همانطور که نشان داده شده است: <?php تابع modChrome_STYLE ($module، &$params، &$attribs) { /* خروجی ماژول کروم به اینجا می رود */ } ?> در این تابع می‌توانید از هر یک از ویژگی‌های ماژول موجود (یعنی فیلدهای jos_modulesجدول در پایگاه داده جوملا روی سرور خود) برای آن ماژول استفاده کنید، اما اصلی‌هایی که احتمالاً به آنها نیاز دارید $module->content، $module->showtitleو $module->title. $module->showtitleیک متغیر بولی است، بنابراین یا درست است (زمانی که عنوان ماژول باید نشان داده شود) یا نادرست (زمانی که نباید نشان داده شود). $module->contentو $module->titleمحتوای اصلی ماژول و عنوان ماژول را به ترتیب برمی گرداند. تابع یک تابع معمولی PHP است و بنابراین می تواند از هر کد PHP معمولی استفاده کند. یک مثال رایج این است که از یک ifعبارت برای بررسی مقدار استفاده کنید $module->showtitleو سپس عنوان را بر اساس آن درج کنید یا نه: <?php if ($module->showtitle) { echo '<h2>' .$module->title .'</h2>'; } ?> پارامترهای ماژول با استفاده از $paramsشی قابل دسترسی هستند. به عنوان مثال، ممکن است یک پسوند کلاس Module به یک Module در باطن جوملا اختصاص دهید! سایت؛ سپس در پارامترهای آن ماژول به عنوان ذخیره می شود moduleclass_sfx. برای ایجاد یک <div>با classپسوند کلاس Module تعیین می شود، باید از: <div class="<?php echo $params->get( 'moduleclass_sfx' ); ?>"> <!-- محتویات div --> </div> ویژگی های سفارشی کروم  همچنین می‌توان با استفاده از همان عبارتی که Module chrome را تنظیم می‌کند، ویژگی‌های بیشتری را به تابع <jdoc:include />Module chrome منتقل کرد. این ویژگی های اضافی می توانند هر چیزی که دوست دارید باشد و در $attribsآرایه ذخیره می شوند. مثال زیر Module chrome function را در نظر بگیرید: <?php تابع modChrome_custom ($module، &$params، &$attribs) { if (isset( $attribs['headerLevel'] )) { $headerLevel = $attribs['headerLevel']; }دیگر { $headerLevel = 3; } <!--T:11--> if (isset( $attribs['background'] )) { $background = $attribs['background']; }دیگر { $background = 'آبی'; } <!--T:12--> echo '<div class="' .$params->get( 'moduleclass_sfx' ) .'" >'; <!--T:13--> if ($module->showtitle) { echo '<h' .$headerLevel .'>' .$module->title .'</h' .$headerLevel .'>'; } <!--T:14--> echo '<div class="' .$background .'">'; echo $module->content; پژواک '</div>'; <!--T:15--> پژواک '</div>'; } ?> سپس مقادیر را برای backgroundو headerLevelدر <jdoc:include />عبارت مطابق شکل زیر تنظیم می کنید. اگر هیچ مقداری تنظیم نشده باشد، ویژگی ها به ترتیب به صورت پیش فرض «آبی» و «3» هستند. انتقال ویژگی‌ها به ماژول کروم از <jdoc:include /> <jdoc:include /> خروجی <jdoc:include type="modules" name="user1" style="custom" /> <div> <h3><!-- عنوان ماژول --></h3> <!--T:18--> <div class="blue"> <!-- محتوای ماژول --> </div> </div> <jdoc:include type="modules" name="user1" style="custom" background="green" /> <div> <h3><!-- عنوان ماژول --></h3> <!--T:19--> <div class="green"> <!-- محتوای ماژول --> </div> </div> <jdoc:include type="modules" name="user1" style="custom" headerLevel="1" background="yellow" /> <div> <h1><!-- عنوان ماژول --></h1> <!--T:20--> <div class="yellow"> <!-- محتوای ماژول --> </div> </div>  

ادامه مطلب
  • چهارشنبه, 23 شهریور 1401
  • اسلاید

طراحی قالب های دولتی سازگار با انواع سرویس دهنده های داخلی

ما با رعایت استاندارد های خاص طراحی موسسات دولتی در ایران ٬ بهترین قالب های دولتی بدون وابستگی به خارج و نیاز به بروز رسانی های مکرر را طراحی کرده ایم.

ادامه مطلب
  • چهارشنبه, 23 شهریور 1401
  • اسلاید

طراحی قالب های دانشگاهی با استاندارد های روز دنیا

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

ادامه مطلب
  • جمعه, 01 شهریور 1400
  • اخبار

بروزرسانی جوملا قدیمی

اگر سایت شما با نسخه های قدیمی جوملاست و نیاز دارید بدون از دست رفتن اطلاعات و مطالب خود آن را بروز کنید با ما تماس بگیرید. شماره 09124195066 در تمام شبکه های اجتماعی در دسترس شماست. ما وب سایت شما را بررسی کرده و هزینه بروز رسانی را مشخص می کنیم. فرق نمی کند نسخه جوملای شما 1 باشد یا 3 همه نسخه های قدیمی را میتوانید به نسخه 4 بروز کنید. فقط بعضی از افزونه ها تولید نشده اند که متاسفانه امکان بروز رسانی ندارند. اما الباقی افزونه ها علی الخصوص افزونه های رایگان قابل بروز رسانی می باشد. باتشکر روح الله بلوردی

ادامه مطلب
  • شنبه, 13 تیر 1400
  • اخبار

قالب های جدید با قابلیت پشتیبانی از pwa و وب اپ منتشر می شود

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

ادامه مطلب
  • چهارشنبه, 26 آذر 1399
  • اخبار

مشکل درگاه پرداخت زرین پال

با سلام خدمت شما دوستان عزیز متاسفانه سایت زرین پل تحت حمله شدید قرار گرفته و درگاه آنلاین پرداخت فعلا مشکل دارد. دوستان اگر قصد خرید دارند لطفا مبلغ را کارت به کارت به شماره : 5041721031028385 به نام روح الله بلوردی واریز کرده و رسید را به شماره 09124195066 واتساپ یا تلگرام کنند. با تشکر فونت ایرانی

ادامه مطلب
  • سه شنبه, 02 مرداد 1399
  • آموزش کار با نرم افزار جوملا

صفحه سفید جوملا یا وردپرس

اگر شما جوملا کار یا وردپرس کار باشید ممکن است بعد از بروز رسانی ها یا نصب افزونه های جدید با صفحه سفید برخورد کنید. بهترین روش برای حل مشکل ابتدا پیدا کردن مشکل است. یعنی ابتدا شما باید دیباگ نرم افزار را روشن کنید. اگر به بخش مدیریت سایت دسترسی دارید در جوملا میتوانید به بخش تنظیمات کلی بروید و گزارش خطا را بر روی حداکثر بگذارید این گزینه در تنظیمات کلی می باشد. در وردپرس باید فایل wp-config.php در روت سایت یا پوشه public_html را ادیت کنید و مقدار دیباگ را از false به true تغییر دهید. در جوملا اگر به مدیریت دسترسی ندارید یا مدیریت هم سفید است فایل configuration.php را ادیت کنید و error_reportiong را بر روی maximum قرار دهید. بعد از مشخص شدن خطا به دنبال حل ان باشید.

ادامه مطلب
  • جمعه, 06 آبان 1398
  • معرفی

حل شدن مشکل ثبت نام

مشکل ثبت نام حل شد ٫ این مشکل به خاطر مسائل امنیتی سرور رخ داده بود که حل شد.

ادامه مطلب
  • جمعه, 06 آبان 1398
  • اسلاید

فروش بک لینک معتبر

فروش بک لینک معتبر با لینک فالو.از ۶۰ سایت مورد قبول گوگل ٫ برای کسب اطلاعات بیشتر با ۰۹۱۲۴۱۹۵۰۶۶ تماس بگیرید. یا در تلگرام و واتساپ پیام بگذارید.

ادامه مطلب
  • پنجشنبه, 21 خرداد 1398
  • معرفی

پرداخت نا موفق

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

ادامه مطلب
  • پنجشنبه, 21 خرداد 1398
  • معرفی

پرداخت موفق حق عضویت

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

ادامه مطلب
  • پنجشنبه, 21 خرداد 1398
  • اخبار

تغییر ساختار میترا تمپلیت ( دیما تمپلیت )

با توجه به مشکلات زیادی که برای تولید قالب و هزینه های اضافی مجبور شدیم ساختار فروشگاه رو عوض کنیم ، از این به بعد ، دوستان می توانند با پرداخت یک میلیون تومان سالانه از کل قالب ها برای وردپرس و جوملا استفاده کنند. بدیهی است که تمامی قالب ها دارای پشتیبانی می باشند و تا زمان اتمام 1 سال کاربری به رایگان بروز رسانی دریافت می کنند. دوستان میتوانند ، مبلغ عضویت را به شماره کارت 6037997242757533 به نام روح الله بلوردی واریز و فیش را از طریق ایمیل r.balvardi@gmail.com یا تلفن 09124195066 در واتساپ و تلگرام برای ما ارسال کنند. پرداخت آنلاین با تشکر روح الله بلوردی

ادامه مطلب
  • سه شنبه, 22 شهریور 1397
  • اسلاید

کاهش 50 درصدی قیمت های سایت

قیمت های سایت را تا 50 درصد کاهش دادیم ، قیمت یورو هم از 16 هزارتومان به 8.5 کاهش دادیم از این سیستم که ارزونی خبری نیست حداقل از خودمون شروع کنیم.

ادامه مطلب
  • دوشنبه, 12 مرداد 1397
  • اخبار

ثبت نام از طریق پیامک

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

ادامه مطلب
  • یکشنبه, 06 مرداد 1397
  • اسلاید

سرقت قالبهای میترا تمپلیت

متاسفانه هکر یا هکر های بی دین و ایمان و بی وجدانی اقدام به سرقت قالب های میترا کرده اند ، با توجه به ثبت برند میترا و قالبهای میترا ، طبق قانون جرایم رایانه ای هر کدام از این قالبها جایی استفاده بشود ، گروه دیما حق بستن سرور و سرویس دهنده و شکایت از هاستینگ و شرکت فروشنده را دارد. لطفا در صورت مشاهده فروش غیر قانونی محصولات میترا به ما اطلاع دهید mitratemplate@gmail.com منتظر اطلاع شما هستیم.

ادامه مطلب
  • سه شنبه, 04 مرداد 1397
  • اسلاید

ولادت امام علی ابن موسی الرضا

  • شنبه, 03 تیر 1397
  • اسلاید

تغییر قیمت های قالب ها به یورو

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

ادامه مطلب
  • شنبه, 27 خرداد 1397
  • اسلاید

فروش پکیج های 100 عددی قالب جوملا

قالب های جوملا را به صورت پکیج های 100 عددی خرید کنید ، برای این کار کافی است تا لیست خود را برای ما در تلگرام یا واتساپ به شماره 09124195066 بفرستید تا قیمت فروش عمده را برای شما تعیین کنیم. برای مشاوره میتوانید با شماره 09124195066 تماس بگیرید.

ادامه مطلب
  • چهارشنبه, 11 بهمن 1396
  • اسلاید

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

با توجه به استقبال دوستان وردپرس کار از فروشگاه قالب های جوملا و وردپرس ، کلیه قالب های سایت بدون هزینه اضافه به وردپرس تبدیل می شود ، فقط برای قالب هایی که آماده نیست بین 12 تا 24 زمان تحویل طول میکشد . تمامی قالب ها با کنترل پنل اختصاصی برای مدیریت قالب ارائه می گردد. جهت کسب اطلاعات بیشتر با @balvardi در تلگرام یا 09124195066 در وات ساپ با ما همراه باشید.

ادامه مطلب
  • پنجشنبه, 26 دی 1396
  • اخبار

تمدید تخفیف زمستانی تا 30 دی ماه

با توجه ه استقبال دوستان ، تخفیف زمستانی تا 30 دی ماه تمدید شد.

ادامه مطلب
  • پنجشنبه, 19 دی 1396
  • اسلاید

فروش ویژه زمستانی با 40 درصد تخفیف

فروش ویژه زمستانی با 40 درصد تخفیف برای تمامی محصولات فروشگاه

ادامه مطلب
  • جمعه, 11 دی 1396
  • معرفی

اختلال در تلگرام

با توجه به مشکل به وجود آمده در پیام رسان تلگرام ، در نرم افزار https://hangouts.google.com/ پیام رسان گوگل در خدمت دوستان هستیم. با آی دی r.balvardi با ما مکاتبه و گفتگو کنید.

ادامه مطلب
  • دوشنبه, 24 آذر 1396
  • اسلاید

80 درصد تخفیف تا شب یلدا

با سلام خدمت شما دوستان گرامی با ورود به 10 سالگی فروشگاه قالب های جوملا ، تصمیم گرفتیم امسال هم تخفیف شب یلدا را با حداکثر تخفیف برگزار کنیم. برای برخورداری از این تخفیف می توانید از شنبه 25 آذر 96 تا پایان هفته می توانید این خرید را انجام دهید. خوشحالیم که با ما همراه هستید

ادامه مطلب
  • دوشنبه, 24 آذر 1396
  • اخبار

خبر خوش برای طراحان وب ، 80 درصد تخفیف به مناسبت یلدا

با سلام خدمت شما دوستان گرامی با ورود به 10 سالگی فروشگاه قالب های جوملا ، تصمیم گرفتیم امسال هم تخفیف شب یلدا را با حداکثر تخفیف برگزار کنیم. برای برخورداری از این تخفیف می توانید از شنبه 25 آذر 96 تا پایان هفته می توانید این خرید را انجام دهید. خوشحالیم که با ما همراه هستید

ادامه مطلب
  • شنبه, 28 آبان 1396
  • اسلاید

تولد میترا تملیپ مبارک باد!

به امید خدا وارد دهمین سال خدمت رسانی به کاربران جوملا شدیم. هدیه ما به شما 50 درصد تخفیف تمامی محصولات

ادامه مطلب
  • دوشنبه, 21 مهر 1396
  • اسلاید

30 درصد تخفیف عضویت

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

ادامه مطلب
  • دوشنبه, 21 مهر 1396
  • اسلاید

انتقال قالب های تبلیغاتی جوملا

قالب های تبلیغاتی جوملا به دامنه dimaads.ir منتقل شدند ، از این به بعد میتوانید قالب های تبلیغاتی جوملا را با سیستم دیما ادز در سایت جدید استفاده کنید!

ادامه مطلب
  • دوشنبه, 21 مهر 1396
  • اسلاید

انتقال قالب های فروشگاهی

قالب های فروشگاهی جوملا برای ارائه بهتر و معرفی بهتر به سایت دیما شاپ به آدرس dimashop.ir منتقل شد.

ادامه مطلب
  • دوشنبه, 14 مهر 1396
  • اسلاید

ربات هوشمند میترا تمپلیت برای آموزش و اطلاع رسانی راه اندازی شد.

ربات هوشمند میترا تمپلیت @mitratemplate_bot در تلگرام در خدمت شماست

ادامه مطلب
  • شنبه, 09 مهر 1396
  • اسلاید

کل یوم عاشورا و کل ارض کربلا

کُلُّ یَوْمٍ عَاشُورَا و کُلُّ أَرْضٍ کَرْبَلاء

ادامه مطلب
  • یکشنبه, 01 مهر 1396
  • اسلاید

بیش از 500 قالب فارسی جوملا و وردپرس

قالب های زیبا و ریسپانسیو جوملا و وردپرس با بهترین کیفیت و سئوی حداکثری سازگار با موتورهای جستجو و شبکه های اجتماعی

ادامه مطلب
  • دوشنبه, 27 مرداد 1396
  • اخبار

50 درصد تخفیف تولد 12 سالگی جوملا

جوملا 12 ساله شد. این خبر خوب برای همه طرفداران جوملاست که توانسته 12 سال سیستم مدیریت محتوای بسیار عالی را تولید و رایگان عرضه کند. ما هم به رسم و عادت هر ساله کادوی تولد جوملا رو با 50 درصد تخفیف خدمت شما ارائه می کنیم. برای برخورداری از تخفیف هم اکنون از سایت ما بازدید کنید و قالب مورد نظر خودتون رو با 50 درصد تخفیف بهمراه فایل پی اس رایگان تحویل بگیرید. فروشگاه قالب ها و افزونه های جوملا میترا تمپلیت

ادامه مطلب
  • جمعه, 19 تیر 1396
  • اخبار

فروش ویژه آرشیو بزرگ میترا تمپلیت

با سلام خدمت شما دوستان گرامی ، آرشیو میترا تملپیت برای جوملا 3 بیشتر از 200 قالب آماده بصورت بسته نصبی و بر روی جوملا 3 موجود می باشد به همین دلیل تصمیم گرفتیم این آرشیو بصورت را برای فروش دوستان طراح وب به اشتراک بزاریم. هزینه بسته های آرشیو ( قالبها به انتخاب شماست) برای 50 تایی 600 هزارتومان و برای بسته 100 تایی 1 میلیون می باشد. برای خرید این بسته با اکانت http://www.telegram.me/balvardi یا با آدرس ایمیل r.balvardi@gmail.com یا شماره تلفن 09124195066 تماس بگیرید.

ادامه مطلب
  • دوشنبه, 15 ارديبهشت 1396
  • معرفی

فروش ویژه به مناسبت اعیاد نمیشه شعبان

فروش ویژه به مناسبت اعیاد نمیشه شعبان

ادامه مطلب
  • چهارشنبه, 11 اسفند 1395
  • اخبار

ربات تلگرام میترا تمپلیت شروع به کار کرد.

بلاخره ربات تلگرام رو با آدرس @mitratemplate_bot راه اندازی کردیم ، این ربات برای پاسخگویی در مورد قالب های سایت میترا تمپلیت طراحی شده است. شما میتوانید با پرسش از این ربات ما را در ساخت یک دیتابیس قوی برای این ربات حمایت کنید. هدف اصلی این ربات آموزش است.

ادامه مطلب
  • پنجشنبه, 05 بهمن 1395
  • اخبار

30 درصد تخفیف ویژه بهمن ماه

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

ادامه مطلب
  • یکشنبه, 25 ارديبهشت 1395
  • معرفی

قوانین و مقررات

این قوانین توسط ما تعیین و برای راحتی شما در خرید ایجاد شده است ، لطفا قبل از خرید آن را مطالعه کنید: درصورتی که به جوملا آشنایی ندارید لطفا قالب را بصورت بسته نصبی خریداری کنید. فروشگاه در قبال خرید اشتباه جوابگو نیست. این کالا دیجیتال است و در صورت پشیمانی برگشت هزینه ندارد. این محصول کد نشده است اما با خرید نسخه نا محدود شما مجوز استفاده نا محدود این قالب را خواهید داشت. شما حق فروش مجدد این محصول را ندارید. تمامی حقوق این محصول برای گروه دیما محفوظ است. با خرید این محصول شما تمامی این قوانین را تایید کردید و نیازی به ثبت کاغذی تعهد نامه ندارد. هرگونه سوء استفاده توسط گروه دیما قابل پیگرد قانونی است. محصولات رایگان مشمول راهنمایی و پشتیبانی نمی شود. پشتیبانی شامل مشکلات احتمالی قالب می باشد و مشکلات موجود در سرور شما یا نسخه جوملا شما ارتباطی به ما ندارد و مشمول پشتیبانی نمی شود. نصب قالب بر روی وب سایت شما رایگان نبوده و مشمول هزینه خواهد بود. کلیه محصولات قبل از ارسال برای کاربران توسط ویروس کش و ابزارهای ضد هک اسکن شده و بعد ارسال می گردد. فروشگاه هیچ گونه تعهدی برای محصولات خریداری شده از سایت های غیر فروشگاه را ندارد و فقط محصولاتی که دارای فاکتور می باشند شامل پشتیانی می باشند. پشتیبانی فقط بر روی ایمیل خریدار و سایتی که در فاکتور ذکر شده انجام می شود. استفاده از قالب در سایتی غیر از سایت موجود در فاکتور مشمول پشتیبانی نمی شود. بروز رسانی قالبها برای نسخه های جدید جوملا مشمول هزینه است. تمامی بسته های خریداری شده از طریق ایمیل r.balvardi@gmail.com ارسال می گردد، لطفا نسبت به ایمیل های ارسالی از سایر ایمیل ها توجه نفرمایید و فایل را دانلود نکنید.

ادامه مطلب
  • دوشنبه, 24 ارديبهشت 1395
  • معرفی

چرا قالب های فروشگاه جوملا ( میترا تمپلیت ) گران تر از سایر سایت های فروش قالب هستند

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

ادامه مطلب
  • سه شنبه, 23 ارديبهشت 1395
  • اخبار

مشکل پرداخت الکترونیک حل شد.

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

ادامه مطلب
  • دوشنبه, 03 ارديبهشت 1395
  • اخبار

حل شدن مشکل لوگین در صفحات داخلی

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

ادامه مطلب
  • سه شنبه, 22 بهمن 1394

تعطیلی همیشگی قالب ساز جوملا از تاریخ 1/1/1395

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

ادامه مطلب
  • پنجشنبه, 15 دی 1394
  • آموزش کار با نرم افزار جوملا

حل مشکل magic quotes gpc در نصب جوملا

اگر شما هم در ابتدای نصب جوملا 3 به مشک خوردید و خطای magic quotes gpc را دیده اید به روش زیر مشک را حل کنید. فایل .htaccess روت جوملا فایل .htaccess که در روت سایت شما قرار دارد را ادیت کنید و خط ریر را به انتهای فایل اضافه کنید معمولا در مسیر (/home/myusername/public_html/.htaccess) قرار دارد، اگر وجود نداشت فایل htaccess.txt را تغییر نام به .htaccess دهید و کد زیر را بهش اضافه کنید: php_flag magic_quotes_gpc off روش دیگر برای سایتهای ویندوزی یا سایتهای دیگر که روش اول جواب نداد : یک فایل php.ini در روت جوملا ایجاد کنید. خط زیر را به آن اضافه کنید و فایل را ذخیره کنید. magic_quotes_gpc = Off magic_quotes_runtime = Off magic_quotes_sybase = Off فایل .htaccess را ادیت کنید و خط زیر را اضافه کنید: SetEnv PHPRC /home/youruser/public_html/php.ini اگر مشکلی پیش آمد لطفا با آدرس زیر مرجعه کنید: source : http://stackoverflow.com/questions/517008/how-to-turn-off-magic-quotes-on-shared-hosting

ادامه مطلب
  • سه شنبه, 26 آذر 1394
  • اخبار

یک هفته با یلدای شگفت‌انگیز، چشم از میترا تمپلیت چشم بر ندارید

میترا تمپلیت بزرگترین فروشگاه اینترنتی قالب فارسی در نظر دارد بزرگ‌ترین فروش تاریخ خود را در آستانه‌ی روز طراحی وب ایران برگزار کند. از ساعت ۱۰ صبح شنبه، ۲۸ آذرماه، آماده‌ی شرکت در هفته‌ی «یلدای شگفت‌انگیز» باشید و تا روز پنج‌شنبه، 3 دی‌ماه از میترا تمپلیت چشم برندارید. در ضمن در این مدت تمامی هم‌وطنان عزیز می‌توانند خریدهای بالای ۱۰۰ هزار تومان خود را به‌ همراه یک هدیه رایگان دریافت کنند.

ادامه مطلب
  • پنجشنبه, 07 مهر 1394
  • اخبار

فروش ویژه و استثنایی فروشگاه قالب های جوملا

به مناسبت ماه مهر و شروع سال نو تحصیلی ، تصمیم گرفتیم که مثل سالهای قبل جشنواره استثنایی فروش پکیج های قالب بصورت بسته نصبی را امسال نیز برگزار کنیم ، در اولین دوره امسال تصمیم داریم برای مدت محدود 4 بسته نصبی را به قیمت 200 هزارتومان ( یعنی یک هشتم هزینه اصلی) به فروش برسانیم ، برای برخورداری از این تخفیف فقط تا 10 مهرماه فرصت دارید. لطفا مبلیغ خرید خود را به یکی از کارتهای لیست شده در صفحه زیر واریز نمایید یا ااز طریق درگاه بصورت آنلاین پرداخت نمایید : http://www.mitratemplate.com/payment بعد از پرداخت فیش خود را در فرم زیر ثبت کنید : http://www.mitratemplate.com/fishform هرگونه سوال و پرسش خود را با شماره های زیر در میان بگذارید : 09124195066 - 09124372370 - 09358006036

ادامه مطلب
  • شنبه, 15 شهریور 1394
  • اخبار

پذیرش نمایندگی فروش محصولات فروشگاه جوملا

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

ادامه مطلب
  • سه شنبه, 12 شهریور 1394
  • معرفی

میکروبلاگ طراحان وب ایران

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

ادامه مطلب
  • جمعه, 02 شهریور 1394
  • help

Help Design Templates

The framework can easily mold design mold design and implement your own site dive format. The application template provides you with web standards compliance    The arrow keys to create rows and columns to use format    In an empty area in the middle of every situation you can enter the name of your module, otherwise the naming system for position    If you want to output to Joomla 2.5 template conversion, you can select a location and the word component to it, the system automatically converts the specified component to your template you.    You can leave a proprietary names for all boxes    Produced default format for all situations uses rounded style, you can fit their needs or to xhtml change this mode to none!    To convert the template to CMS and subsequent editing is necessary to save the key in the bottom of the form must die!    For better performance, please use the following positions for the system definition        logo to display the logo        left position left or right depending on the version of your application        right position left or right depending on the version of your application        footer to display copyright        horizontal menu tree menu        sldie Sliders        tab tab with ten different styles        user1 ta user5 to display everything        bottom1 ta bottom5 to display everything        footer1 ta footer5 to display everything        Site breadcrumb path        date date        lang Language        eng written in English        search Search    Content management systems like Drupal theme these situations are defined    To control module in Joomla must -none of options or -rounded or -xhtml at the end position of use, for example menu-none makes up the position as no.

ادامه مطلب
  • جمعه, 02 شهریور 1394

Can other site in the form of a code to enter and export the template?

No. This is because it may violate copyright, disabled, why we have to limit this tool, this tool is only for those who have designed their form and need to be converted to Joomla!

ادامه مطلب
  • جمعه, 02 شهریور 1394
  • help

How to control a empaty position

In this example, the study of the site that is loaded has a right position and a left position and size of each position and size of 200 x 600 pixels, which is the material position in the total width of the frame is 1000 pixels so our requirement for this position then we write and put on top form, like a row of this section 4 is the class that is the case. <?php if($this->countModules("right")) :     $size1='';else:    $size1='200';endif;?><?php if($this->countModules("left")) :     $size2='';else:    $size2='200';endif;?><?php$size3=(600+$size1+$size2);?>The first part of our code that controls the size of the middle position in the absence of either or both positions, to control any of the situations we use the following code example.         <?php if($this->countModules("left")) : ?>            <div id="dima_4">                <div id="dima_4_1_wrapper">                    <div id="dima_4_1">                        <jdoc:include type="modules" name="left" style="rounded" />                    </div>                </div>        <?php endif; ?>

ادامه مطلب
  • جمعه, 02 شهریور 1394

Template Builder How does it work?

Template Builder online tool to design a structure or framework Jvmlast format, this means you can frame your site with tools in the middle of the site and its arrow keys.

ادامه مطلب
  • جمعه, 02 شهریور 1394

How can mobile version of the activated templates?

To activate the mobile version should be careful when creating templates, Joomla 3.0 version on your content management system and the mobile version Yes Let The mobile version also will be made to your template. Remember, if you have selected the original file format designed for the mobile version of your template instead of index.php to desktop.php rename and file mobile.php is mobile version.

ادامه مطلب
  • جمعه, 02 شهریور 1394
  • help

Convert to Joomla 2.5 templates Joomla 3

The two lines must remove the Joomla 3 minutes and add to the bottom line instead: // Add JavaScript Frameworks JHtml::_('bootstrap.framework'); // Load optional RTL Bootstrap CSS JHtml::_('bootstrap.loadCss', false, $this->direction); This line of Joomla 2 is to be replaced: $doc->addScript('templates/' .$this->template. '/js/jquery.min.js');

ادامه مطلب
  • جمعه, 02 شهریور 1394
  • معرفی

About Service

Welcome to the online site building template, the template builder web content management based on the latest version of your theme, the technology used in the design of this template is compatible with the W3C and hTML5 Css3 technology also supports this format and style of the moment is the demo version is limited.Features Template Builder    Template design principles based design xhtml 1.0 to xhtml 5.0    CSS standard and is compatible with all browsers    Using jQuery    The use of effects and possibilities of CSS 3    Online design templates to define the rows and columns so    Take advantage of the great tree menus    Take advantage of the slider jQuery and CSS 3    Take advantage of jQuery tab    Take advantage of Persian fonts    Take advantage of jQuery plugins    Compatible with Bootstrap framework    Take export on Joomla, WordPress, Drupal, DotNetNuke

ادامه مطلب
  • جمعه, 02 شهریور 1394
  • آموزش طراحی قالب جوملا

مبدل قالب های انگلیسی به فارسی و بالعکس ، سرویس جدید قالب ساز دیما (رایگان)

برای راحتی و سهولت شما دوست عزیز در تبدیل قالبهای خارجی به قالب های فارسی و بومی ، ابزار جدید باز متنی به سرویس قالب ساز دیما اضافه شده که امکان تبدیل سی اس اس های LTR به RTL را فراهم کرده است.این سرویس رایگان است و با نام کاربری خود میتوانید بصورت نامحدود از آن استفاده کنید. http://pro.themegenerator.ir/fa/services/ltr2rtlبا تشکر گروه نرم افزاری دیما

ادامه مطلب
  • پنجشنبه, 23 تیر 1394

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

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

ادامه مطلب
  • چهارشنبه, 16 ارديبهشت 1394
  • اخبار

همکاری با فروشگاه فروشگاه طراحان وب

به استحضار بازدیدکنندگان و مشتریان گرامی می رساند ، با توجه به مذاکرات و تعاملات به عمل آمده با مدیریت محترم فروشگاه طراحان وب و توافق بعمل آمده با این فروشگاه ، از این پس همکاری فروشگاه طراحان وب و فروشگاه میتراتمپلیت به آدرس ( http://webdesignersshop.ir ) آغاز و بخشی از محصولات فروشگاه میتراتمپلیت از طریق فروشگاه طراحان وب در دسترس مشتریان خواهد بود . بر این اساس امکان خرید محصولات موردنظر برای مشتریان گرامی امکان پذیر خواهد بود.

ادامه مطلب