AnteFil
-
Публикации
47 -
Зарегистрирован
-
Посещение
-
Дней в лидерах
1
Сообщения, опубликованные пользователем AnteFil
-
-
Из шаблона тег meta='kaywords' удали
-
На протяжении последних лет DLE входит в ТОП 10 самых популярных CMS. Статистика за май 2022
- 1
-
Помогите пожалуйста передать даныные.
В шаблона модуля есть тег {city} как передать его в main.tpl ?
-
7 часов назад, alex32 сказал:
Куки, сессии, гет, пост, протоколы, зачем спрашивал про кэш вообще непонятно, и на финал
else { echo $config['allow_alt_url'];
И вся эта каша ради того, что бы вывести несколько записей из БД...
Это я забыл удалить. Просто хотел посмотреть что хранит!
Про кеш спрашивал хотел полостью выдачу поместить в кеш, но потом передумал так как кеш превратиться в некую базу данных ещё одну по этому решил выдачу не отправлять в кеш а написал так
$name_cache = md5(implode('_', $config['skin'])); $kol_zapis = dle_cache($city.'_'.$name_cache, $r_strok, 43200); // достаём из кеша данные if($kol_zapis == false ) { $sql_kol_zap = $db->query( "SELECT * FROM " . PREFIX . "_mod_job WHERE city_may LIKE '" . $db->safesql($city) . "%' AND (`name_vakansiya` LIKE '%". $db->safesql($vakansiya) . "%' OR `name_sinonim` LIKE '%". $db->safesql($vakansiya) . "%') AND `category_id` LIKE '%" . $db->safesql($categor) . "%' AND `activ`='1'"); $kol_vo_zapis = $db->num_rows($sql_kol_zap); create_cache($city.'_'.$name_cache, $kol_vo_zapis);// количество записей отправляем в кеш }
Количество записей в базе отправил туда для навигации,
-
Вообщем выкладываю пока небольшую наработку. Так как это первый подобный модуль мой в DLE если кто знает как сделать что то лучше буду только за. Советы, рекомендации и конструктивную критику. Это пока только пользовательская часть.
Страница поиска верх.
Страница поиска низ!
Страница профиля
Ссылка на сам мод с файлами там же есть небольшая инструкция по установке.
https://yadi.sk/d/R41GgXHh1uVdJw
Самую основную страницу публикую тут с моими комментариями
<?php if( !defined('DATALIFEENGINE') ) { header( "HTTP/1.1 403 Forbidden" ); header ( 'Location: ../../' ); die( "Hacking attempt!" ); } header('Cache-Control: no cache'); //no cache //session_cache_limiter('private_no_expire'); // works session_start(); //Начинаем ловить город любыми путями GET, POST, COOKIE $city = $_GET['city'] ?? $_POST['city'] ?? $_COOKIE['CookieCity'] ?? null; $protocol = strtolower(substr($_SERVER["SERVER_PROTOCOL"],0,5))=='https'? 'https' : 'http'; if (!empty($city)) { setcookie("CookieCity", $city, time()+3600*24*20, $_SERVER['SERVER_NAME']);/* срок действия 30 дней */ } //Если так и не нашли идём на api.dadata.ru что бы выяснить город по ip if(empty($_COOKIE['CookieCity'])){ $headers=array( 'user-agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36', 'accept: application/json', 'Content-Type: application/json', 'Authorization: Token (Здесь токен)', 'Accept-Charset: utf-8'); $ch = curl_init('https://suggestions.dadata.ru/suggestions/api/4_1/rs/iplocate/address?ip='.$_SERVER['REMOTE_ADDR'].''); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_HEADER, false); $data_sdati = curl_exec($ch); curl_close($ch); $mas_data = json_decode($data_sdati, true); $city = $mas_data['location']['data']['city']; } //протокол и город сохраняем в сессию $_SESSION['city'] = $city; $_SESSION['protocol'] = $protocol; //эта проверка делит код на две части для двух страниц if($_GET['jobfull']==''){ $vakansiya = $_GET['vakansiya']; if($_GET['categor']!='') { $sql_categor12 = $db->query("SELECT * FROM `" . PREFIX . "_mod_job_categor` WHERE `id`= '".$db->safesql($_GET['categor'])."'"); $categor_vac12 = $db->get_row($sql_categor12); $categor = $categor_vac12['name_categor']; setcookie("CookieCategor", $categor, time()+3600*24*20, $_SERVER['SERVER_NAME']);/* срок действия 30 дней */ } if($_GET['del_kat']=='ok'){ unset($_COOKIE['CookieCategor']); unset($categor); } $name_cache = md5(implode('_', $config['skin'])); $kol_zapis = dle_cache($city.'_'.$name_cache, $r_strok, 43200); // достаём из кеша данные if($kol_zapis == false ) { $sql_kol_zap = $db->query( "SELECT * FROM " . PREFIX . "_mod_job WHERE city_may LIKE '" . $db->safesql($city) . "%' AND (`name_vakansiya` LIKE '%". $db->safesql($vakansiya) . "%' OR `name_sinonim` LIKE '%". $db->safesql($vakansiya) . "%') AND `category_id` LIKE '%" . $db->safesql($categor) . "%' AND `activ`='1'"); $kol_vo_zapis = $db->num_rows($sql_kol_zap); create_cache($city.'_'.$name_cache, $kol_vo_zapis);// количество записей отправляем в кеш } $num = 17; // Извлекаем из URL текущую страницу $page = $_GET['p']; // Определяем общее число сообщений в базе данных // Находим общее число страниц $total = intval(($kol_zapis - 1) / $num) + 1; // Определяем начало сообщений для текущей страницы $page = intval($page); // А если слишком большое, то переходим на последнюю if(empty($page) or $page < 0) $page = 1; if($page > $total) $page = $total; // Вычисляем начиная к какого номера // следует выводить сообщения $start = $page * $num - $num; $sql_vacansii = $db->query( "SELECT * FROM " . PREFIX . "_mod_job WHERE city_may LIKE '" . $db->safesql($city) . "%' AND (`name_vakansiya` LIKE '%". $db->safesql($vakansiya) . "%' OR `name_sinonim` LIKE '%". $db->safesql($vakansiya) . "%') AND `category_id` LIKE '%" . $db->safesql($categor) . "%' AND `activ`='1' ORDER BY `id` desc limit ".$start.", ".$num.""); $nomer = $db->num_rows($sql_vacansii); // Формируем ссылку для удаления категории if($categor!='') { $categor_del = "Вакансии в категории ".$categor." | <a href='../../вакансии/?del_kat=ok'><b>очистить категорию</b></a></p>";} $tpl->load_template( 'mod_rab/form_search.tpl' ); $tpl->set('{city}', $city); $tpl->set('{vakansiya}', $vakansiya); $tpl->set('{categor}', $categor); $tpl->set('{categor_del}', $categor_del); $tpl->compile('form_search'); echo $tpl->result['form_search']; $tpl->load_template( 'mod_rab/result_search.tpl' ); while ($row = $db->get_row($sql_vacansii)) { $region = $row['region_code_kladr']; $city_ssilka = '../../вакансии/'.$city.'/'.$row['id'].'.html'; $postalCode = substr($row['address'], 0, 6); $tpl->set('{postalCode}', $postalCode); $tpl->set('{vakansiya}', $row['name_vakansiya']); $tpl->set('{address}', $row['address']); $tpl->set('{salary}', $row['salary_min']); $tpl->set('{vac_url}', $row['vac_url']); $tpl->set('{company_name}', $row['company_name']); $tpl->set('{aktiv-date}', $row['aktiv-date']); $tpl->set('{off-date}', $row['date_to']); $tpl->set('{opisanie}', $row['opisanie_job']); $tpl->set('{categor}', $row['category_may']); $tpl->set('{region_name}', $row['region_name']); $tpl->set('{id_vac}', $row['id']); $tpl->set('{email}', $row['company_email']); $tpl->set('{city}', $city); $tpl->set('{city_ssilka}', $city_ssilka); if($row['company_phone']=='') { $phone = "<a href=".$row['vac_url']." rel='nofollow' target='_blank'>Тел. не указан подробно на сайте - <i>".$row['sait_name']."</i></a>";} else { $phone = "<a href='tel:".$row['company_phone']."'>Тел. ".$row['company_phone']."</a>";} $tpl->set('{phone}', $row['company_phone']); $tpl->compile('poisk_vak'); } $_SESSION['region'] = $region; echo $tpl->result['poisk_vak']; if(!empty($vakansiya)){ $vacans='/'.$vakansiya.'/'; } else { $vacans='/'; } if(!empty($categor)){ $cat_slesh='&categor='.$categor; } else { $cat_slesh=''; } if($nomer>0){ $text_pod="<i><h3 class='h3 title'>В городе ".$city." найдены свежие вакансии</h3></i>"; } else { $text_pod="<h3 class='h3 title'>Хорошо, свежие вакансии в двух кликах</h3>"; } //Поехала постраничная навигация // Проверяем нужны ли стрелки назад if ($page != 1) $pervpage = "<a href=".$protocol."://".$_SERVER['SERVER_NAME']."/%D0%B2%D0%B0%D0%BA%D0%B0%D0%BD%D1%81%D0%B8%D0%B8/".$city.$vacans."?p=1".$cat_slesh."><<</a> <a href=".$protocol."://".$_SERVER['SERVER_NAME']."/%D0%B2%D0%B0%D0%BA%D0%B0%D0%BD%D1%81%D0%B8%D0%B8/".$city.$vacans."?p=". ($page - 1) .$cat_slesh."><</a>"; // Проверяем нужны ли стрелки вперед if ($page != $total) $nextpage = "<a href=".$protocol."://".$_SERVER['SERVER_NAME']."/%D0%B2%D0%B0%D0%BA%D0%B0%D0%BD%D1%81%D0%B8%D0%B8/".$city.$vacans."?p=". ($page + 1) .$cat_slesh.">></a> <a href=".$protocol."://".$_SERVER['SERVER_NAME']."/%D0%B2%D0%B0%D0%BA%D0%B0%D0%BD%D1%81%D0%B8%D0%B8/".$city.$vacans."?p=" .$total.$cat_slesh. ">>></a>"; // Находим две ближайшие станицы с обоих краев, если они есть if($page - 2 > 0) $page2left = "<a href=".$protocol."://".$_SERVER['SERVER_NAME']."/%D0%B2%D0%B0%D0%BA%D0%B0%D0%BD%D1%81%D0%B8%D0%B8/".$city.$vacans."?p=". ($page - 2) .$cat_slesh.">". ($page - 2) ."</a> | "; if($page - 1 > 0) $page1left = "<a href= ".$protocol."://".$_SERVER['SERVER_NAME']."/%D0%B2%D0%B0%D0%BA%D0%B0%D0%BD%D1%81%D0%B8%D0%B8/".$city.$vacans."?p=". ($page - 1) .$cat_slesh.">". ($page - 1) ."</a> | "; if($page + 2 <= $total) $page2right = " | <a href=".$protocol."://".$_SERVER['SERVER_NAME']."/%D0%B2%D0%B0%D0%BA%D0%B0%D0%BD%D1%81%D0%B8%D0%B8/".$city.$vacans."?p=". ($page + 2) .$cat_slesh.">". ($page + 2) ."</a>"; if($page + 1 <= $total) $page1right = " | <a href=".$protocol."://".$_SERVER['SERVER_NAME']."/%D0%B2%D0%B0%D0%BA%D0%B0%D0%BD%D1%81%D0%B8%D0%B8/".$city.$vacans."?p=". ($page + 1) .$cat_slesh.">". ($page + 1) ."</a>"; echo '<center>'.$pervpage.$page2left.$page1left.'<b>'.$page.'</b>'.$page1right.$page2right.$nextpage.'</center></br>'; $tpl->clear(); $db->free(); } else { echo $config['allow_alt_url']; // Собираем страницу для полной версии вакансии $sql_kjob = $db->query( "SELECT * FROM " . PREFIX . "_mod_job WHERE id='".$db->safesql($_GET['jobfull'])."'"); $row_job = $db->get_row($sql_kjob); $tpl->load_template( 'mod_rab/full_job.tpl' ); $tpl->set('{name_vakansiya}', $row_job['name_vakansiya']); $tpl->set('{zarplata}', $row_job['salary_min']); $tpl->set('{telefon}', $row_job['company_phone']); $tpl->set('{email}', $row_job['company_email']); $tpl->set('{opisanie}', $row_job['opisanie_job']); $tpl->set('{date}', $row_job['aktiv-date']); $tpl->set('{company_name}', $row_job['company_name']); $tpl->set('{categor}', $row_job['category_may']); $tpl->set('{city}', $city); $tpl->set('{address}', $row_job['address']); $tpl->set('{ogrn}', $row_job['company_ogrn']); $tpl->set('{geo_lat}', $row_job['geo_lat']); $tpl->set('{geo_lon}', $row_job['geo_lon']); $tpl->compile('full_job'); echo $tpl->result['full_job']; } ?>
-
Отчасти я всё таки нагуглил как записать в кеш. Можно ли как то массив записать с ключами и потом достать его?
-
В 08.07.2020 в 17:56, alex32 сказал:
Может, не стоит советовать, кому и что мне советовать? Почему бы и не выложить? Другим посмотреть полезно будет.
Как кешировать запрос в sql ?
$sql_vac = $db->query( "SELECT * FROM " . PREFIX . "_mod WHERE city = 'Москва'"); $mymod = dle_cache('search_city', 86400, $sql_vac); // проверяем кэш if($mymod == false) { echo 'Старый кеш'; } while ($vak_one = $db->get_row($mymod)) { $tpl->set('{name}', $vak_one['name']); $tpl->set('{add}', $vak_one['add']); $tpl->compile('poisk'); }
Но чёт ни чего не кешируется? Да и вообще всё на ура продолжает работать если сам запрос не указываю $db->get_row().
Как запрос кешировать?
-
Как опубликовать модуль?
-
Подскажите почему SQL не отдаёт запрос в php. Разрабатывал модуль не денвере переустановил на опен офис так как были проблемы теперь мой разрабатываемый модуль не работает. Сам движёк работает а вот когда обращаюсь к модулу то всё рубиться по тайм ауту
Fatal error: Maximum execution time of 60 seconds exceeded in C:\OpenServer\OpenServer\domains\test.ru\engine\classes\mysql.php on line 88
запрос в базу отправляет, но с базы почему то не забирает!
-
Поясните пожалуйста логику как вывести что то в шаблон.
У меня страничка модуля mod.php на ней я делаю так
$tpl->load_template( 'categor.tpl' ); // Загружаю шаблон $tpl->set('{categor_vac}', $categor_vac['category']); // тут передаю шаблону данные $tpl->compile('categor_vac');// я не понимаю что происходит здесь $tpl->result['poisk_vak']; //и я не понимаю что происходит здесь Что бы отправить на печать я делаю так $module_start = $tpl->result['poisk_vak']; echo $module_start; // печатаем
Кто-нибудь проясните ситуацию и что делает copy_template ?
И как два шаблона.tpl подключить? Можно использовать два раза load_template ?
Важно! Поясните логику!
-
46 минут назад, alex32 сказал:
Это с какого перепугу так должно быть после отправки формы методом get? НЕ будет такого. Правила RewriteRule это НЕ редирект.
чё делать то?
-
Вообщем возник вопрос не знаю насколько это относиться к DLE поясню всю суть проблемы. Не могу током обработать GET данные.
Решил я сразу делать в нормальном русле. Для этого в .htaccess прописал правило.
RewriteRule ^rab/$ index.php?do=rab [QSA] RewriteRule ^rab/(.*)/$ index.php?do=rab&city=$1 [QSA] RewriteRule ^rab/(.*)/(.*)/$ index.php?do=rab&city=$1&vakansiya=$2 [QSA]
Вообще такое чувство что всё живёт своей жизнью так как правила сначала работали потом нет чё происходит не знаю. Теоретически правила работают это комп чёт моросит.
Я добился того что всё работало так из адресной строки /rab/город/вакансия/ сейчас почему то не работает и ссылка index.php?do=rab продолжает быть активной но ......
Проблема сохраняется с отправкой данных методом GET в модуль.
<form action="../rab/" formmethod="GET"> <input type="text" name="city" placeholder="Город" id="searchinput"> <input type="text" name="vakansiya" placeholder="Вакансия" id="searchinput"> <input type="submit" value="Поиск"> </form>
При нажатии на отправить получаться так /rab/?city=Сургут&vakansiya=стропальщик
Должно быть так /rab/Сургут/стропальщик/
Помогите!!!! Который день бьюсь АП стену
-
4 часа назад, alex32 сказал:
А это что за чудо-адрес? Это откель такие берутся? Если надо отправить на тот же модуль, откуда и отправляется. то в action можно вообще ничего не писать. или так и написать
action="/index.php?do=rab"
Да это забыл удалить action="/index.php?do=rab" не работает перекидывает на index.php?к=7&h=9
-
Подскажите как передать данные методом GET уже второй день не могу понять в чём дело
Страничка с модулем /index.php?do=rab
сама форма
<form action="../index.php?do=rab&" method="GET">
<input type="text" name="zp" placeholder="Зарплата" id="searchinput">
<input type="text" name="vakansiya" placeholder="Вакансия" id="searchinput"><input type="submit" class="btn bg-teal btn-sm btn-raised position-left legitRipple" value="Поиск">
</form>/index.php?zp=1111111&vakansiya=тест
отправляет всё не на страничку с модулем а просто на index как это исправить?
-
У меня на нескольких аккаунтах есть купленные лицензии самой старой 10 лет? Есть даже такие которые ни разу не активировались их можно использовать?
-
Всё с этим вроде разобрался ))))) Ещё такой вопрос у меня страничка http://test1.ru/index.php?do=rab сейчас работает так как нужно но после работы модуля загружается контент с новостями DLE добро пожаловать и тд. Если я удаляю из main.tpl {content} то он перестаёт на других страничках грузиться, Как сделать так что бы на мой страничке {content} не загружался, а на других работал?
-
3 часа назад, alex32 сказал:
Даже удивительно, что человек, пишущий модуль, совсем не может пользоваться поисковиками
Нечто подобное я читал для проверки написал вот такую конструкцию шаблон в main.tpl подключил так {include file="1.tpl"}
//поясню как я понял логику $tpl->load_template( '1.tpl' ); //подключаем шаблон $text = 'Проверка шаблона'; //передаём даныне в переменную $tpl->set('{test}', $text); //передаём даныне в шаблон $tpl->compile('content'); //чё делает это не понял $tpl->result['content']; //вот этот элемент массива получилось вывести на печать в php $tpl->clear();//чё делает это не понял догадываюсь что закрывает подключение к шаблону //Но ни чего не получаеться в 1.tpl выводит пустой {test} //Сразу покажу как я пытался это в прикрутить $tpl->load_template( '1.tpl' ); while ($row = $db->get_row($sql)) { $tpl->set('{test}', $row['salary']); } $tpl->clear(); //Но ни чего не получаеться в 1.tpl выводит пустой {test}
-
В 10.06.2020 в 19:14, Gameer сказал:
if (!empty($_POST['action'])) { $sql = $db->query( "SELECT * FROM " . PREFIX . "_mod_job WHERE address LIKE '%" . $db->safesql($_POST['action']) . "%'"); while ($row = $db->get_row($sql)) { print_r($row); } }
Подскажите, я вот получил результаты запроса! Теперь хочу оформить это. Сделать шаблон что бы каждая выводимая строчка имела какой то дизайн. Не хочу это делать в коде. Можно ли как то в цикле вызвать шаблон и отдать в него результат запроса для вывода пользователю что бы результат был как на поисковике типа яндекс или гугл ?
-
3 часа назад, proba сказал:
Вы условия форума не прочитали, а сможете ли прочитать ответ?
Помощь и обучение - разные вещи! Путать не надо. Вам написали, что для закрытого кода, не зная его, это что пальцем в небо, ну или куда-то ещё, но вы ведь проггер и код пишете сами, так что вас не устраивает? Какой вам помощи не оказали?
Щас вообще ни чё не понял. Конкретно в этой ветке мне вообще помощь ни какая не требуется!
-
43 минуты назад, Baxtiyorq сказал:
Куда нужно добавить этот скрипт : require_once 'путь к файлу/ap.php';
Что бы работали все страницы.
Мне скинули эти инструкции, но я ничего не понял:
Файлы нужно поместить вместе со скриптами сайта (лучше в отдельный каталог). В стартовом php скрипте сайта подключить командой
require_once 'путь к файлу/ap.php';
и первой командой вызвать функцию init_adv([string $ip])Подключение скрипта:
**require_once 'ap.php';**Использование:
в начале скрипта вызвать функцию **init_adv([string $ip])*** @param string $ip IPv4 or IPv6 адрес (если адрес не указан, то получает его из заголовка)
* @return boolean true - пользователь переадресован на https версию
Файл **config.php** должен быть расположен в одном каталоге с ap.php.В конфигурации могут быть настроены следующие поля:
**ip_header** - название заголовка в котором передается ip пользователя
**domain** - домен на который происходит редирект. Если не указан, то редирект происходит на тот же домен, откуда пришел пользователь.
**ap_folder** - путь, по которому хранятся точки доступа. Если не указан, то сохраняются в каталог скрипта
**server** - URL для запроса точек доступа
Если ты подключаешь модуль то в main.tpl то он подключаеться так {include file="engine/modules/mymod.php"} в твоем случае возможно {include file="путь к файлу/ap.php'}
-
Так ты помощи не дождешся. Ибо вообще ничего не понятно.
-
15 минут назад, germanydletest сказал:
для этого демка не подойдёт, лицензию брать надо)))
Да в принцепе половину модуля уже написал. Щас только допинать и попытаться оформить.
-
7 минут назад, Gameer сказал:
if (!empty($_POST['action'])) { $sql = $db->query( "SELECT * FROM " . PREFIX . "_mod_job WHERE address LIKE '%" . $db->safesql($_POST['action']) . "%'"); while ($row = $db->get_row($sql)) { print_r($row); } }
В первую очередь вам нужно прочесть о
1. PHP.
2. Базы данных.
3. Безопасности данных.
И лишь тогда пытаться что-то писать.
Поясни пожалуйста функцию safesql что она делает? И дальнейшую логику ! Почему например я могу получать весь результат только в цикле?
-
31 минуту назад, alex32 сказал:
Это же логично, раз что-то работает не так, значит где-то написано не так. А как написано, нам отсюда не видно
if (!empty($_POST['action'])) { $db->query( "SELECT * FROM " . PREFIX . "_mod_job WHERE address LIKE '%".$_POST['action']."%'"); $row = $db->get_row(); print_r($row); }
Ни чё такого
Я подумал может тут реализована схема как PDO типа fetch и fetch_all попробовал get_row_all но такой нет и упала ошибка
Поздравляю DLE
в DataLife Engine (Общие вопросы)
Опубликовано:
https://statonline.ru/metrics/webapp_cms?tld=ru