XML sitemap to HTML sitemap v. 1.0
17 апреля 2010 | KalimdorРешил поделиться с вами одной своей разработкой. Данный скрипт я использую для того чтобы преобразовать одну XML карту сайта в одну или несколько HTML карт сайта с определённым количеством ссылок на каждой странице.
Принцип работы скрипта простой — в форму вводите адрес сайта и получаете ссылку на zip архив с HTML картами и код для вставки ссылок на карты в нужное место сайта. Помимо этого присутствует функция автоочистки, которая позволяет удалять сайтмапы старше заданного срока. Небольшая инструкция пользователя идёт вместе со скриптом в архиве.
Буду очень признателен за багрепорты и идеи по улучшению скрипта. Мои контакты в сайдбаре
.
Отличная галерея для Joomla! 1.5.x
20 сентября 2009 | KalimdorПроблема выбора галереи для сайта стара как мир. С одной стороны их просто дофига, с другой — стоящих очень и очень мало, при том что удовлетворяющих хотя бы приблизительно потребностям разработчика и того меньше.
Года два назад я тоже озаботился данным вопросом. Чего только я не перепробовал с тех пор и сделал кое-какие выводы. Существует три вида галерей. Первые — это монстры вроде Coppermine Gallery. Это мощные галереи, на которых можно сконструировать очень и очень многое, но с другой стороны в настройке и допиливании они достаточно сложны, так что для не чего-нибудь не сверхсложного они являются не самым оптимальным решением. Вторые — убогое глючное говно , вроде Datso Gallery (это такой компонент галереи для джумлы). Думаю распинаться на их счёт не стоит. И наконец третьи — это галереи вида JoomGallery, уступающие по функциональности первому виду и не принадлежащие второму виду. Героем моего поста будет как раз JoomGallery.
На эту галерею я наткнулся где-то в июле этого года и понравилась она мне практически сразу. Ну сами посудите — нативная поддержка Joomla! 1.5.x, большое количество разнообразных настроек альбомов, прав просмотра и внешнего вида категорий и подкатегорий, несколько режимов загрузки картинок, несколько возможностей открытия полноразмерных изображений (новым окном, всплывающим окном, контейнером DHTML, Lightbox, Thickbox3 или же Slimbox ). Но без ложки дёгтя не обошлось как всегда, а именно — перевод на русский есть, но он достаточно тяжёлый и не слишком понятный. Это первое. А второе — нельзя выбирать обложку для категории из картинок её подкатегории. Но это не критические недостатки, так что можно сказать, что всё замечательно
.
Ну и на последок ссылки:
___________________________________________
Так как я что-то подотстал от блогосферы, то постовых не будет. Если имеете на примете какие-нибудь интересные блоги по теме вебстроительства — буду благодарен, если напишете про них в комментах.
5
Сборка вордперсса 2.6 для сплогов ver. 2
16 сентября 2008 | KalimdorСегодня будет свежая сборка вордпресса для сплогов. Главное отличие от предыдущей сборки заключается в том, что теперь в ней есть синонимайзер. В итоге прежде чем публиковаться, текст синонимизируется. Предупреждаю сразу, чем больше база синонимов и частота синонимизации текста, тем больше ресурсов потребляет плагин и тем дольше он работает. Поэтому, чтобы не повесить хост, обязательно распределяйте обновления сплогов так, чтобы они обновлялись в различное время. Так же в плагине я отключил синонимизацию заголовков новостей. Если она вам нужна, то открываете в папке plugins файл simplesyn21.php и удаляете два слеша в начале 7-й строки. Теперь подробнее о плагинах, вошедших в сборку:
- Akismet. Классика жанра. Хотя при умелой настройке можно использовать спамеров для увеличения «человечности» сплога в глазах поисковый систем.
- Anti-XSS attack. Из названия и так ясно. Закрывает XSS дыры в вордпрессе.
- Bookmarkz. Данный плагин внизу каждого поста вставляет ссылки на добавление страницы в сервисы социальных закладок. Опять таки, с ним сплог выглядит «человечнее».
- Exec-PHP. Плагин, позволяющий выполнению PHP кода в текстах постов, страницах и виджетах. С помощью него в сайдбар добно добавлять сапу. К плагину приложил перевод от Dimox'a.
- FeedWordPress. Это основа будущего сплога. Плагин синдицирует контент с rrs/atom лент. В сборке плагин с переводом отсюда.
- Google XML Sitemaps. Создаёт и обновляет карту сайта в xml формате. Увеличивает скорость индексации сайта.
- MaxSite Russian Date. Представляет даты в русскоязычном формате.
- Platinum SEO Pack. Генерирует метатеги и приводит тайтлы в нормальный вид.
- Russify Comments Number. Склоняет слово «комментарий».
- RusToLat. Транслитирует русские слова в латиницу. Необходим для ЧПУ.
- Simple Syn 2.1. Плагин синонимизации текста. Использует базу данных. Синонимы воспринимает в двух форматах: word| syn1, syn2 ... или syn1:syn2:syn3... . В первом случае замена слова word идёт рандомно на слово или сочетание, которое находится за чертой. Во втором случае при синонимизации слова syn (номер) выбирается синоним из всех в строке, т.е. синонимы равноправны. Плагин работает как с русским текстом так и с английским.
- Simple Tags. Плагин для управления тэгами.
- WP-Noindex. Все ссылки в комментариях заключает в теги <noindex></noindex>.
- WP-PageNavi. Плагин для нумерации страниц. Позволяет резко увеличить количество страниц второго и третьего уровня. Маст хэв для MFS.
- WP-Print. Делает версии статей, подготовленные к печати.
- WP All-in-One tools. Сборник плагинов, которые позволяют улучшить работу вордпресса.
- WP Super Cache. Плагин ускоряет нагрузку на сервер и ускоряет работу сайта.
- Auto_more + advert. Автоматически подставляет тег more. В полной версии статьи показывает рекламный код, который вы поставили. Отлично подойдёт для контекста.
- WP-NoRef. Загоняет все внешние ссылки на блоге в тег ноуиндекс и ставит на них атрибут nofollow.
Скачать.
Только после этой сборки не говорите, что кнопки «Бабло» не существует
.
_______________________________________________________________________
В связи с большим количеством спама на моём блоге объявляю бессрочную акцию. Отныне нормальные комментаторы с нормальными блогами будут получать ссылки в моих постовых.
_______________________________________________________________________
Постовый.
Бесколёсный рассказывает про свою сетку блогов.
Spryt увлёкся ассемблером
.
Пишем систему пользователей сайта на PHP. Часть 4. Функция восстановления паролей
7 сентября 2008 | KalimdorВообщем полезная опция для пользовательской системы, ведь ни для кого не секрет, что юзер на сайте существо забывчивое
и зачастую свой пароль он не помнит. Именно поэтому функция восстановления пароля на сайте нужна. На этот раз код будет оформлен в виде функции. Где и в каком месте её применить, решать вам
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | <?php // Функция восстановления пароля, в качестве аргументов принимает почтовый ящик дескриптор соединения с базой данных, название сайта и мыло отправителя и возвращает true, если операция восстановления пароля прошла успешно, false в противном случае function restoration_password ($email, $dbdeskriptor, $site_name, $adm_mail) { // Проверим валидность мыла if(!preg_match("/^[dw-_.]+@[dw-.]+.[w]{2,4}/i",$email)) { mysql_close ($dbdeskriptor); echo "Некорректно введён e-mail адрес"; return false; } // Составим запрос к базе данных $query_select = "SELECT `login`,`pass` FROM `user` WHERE mail="$email""; // Проведём запрос к базе данных $ath = mysql_query ($query_select, $dbdeskriptor); // Проверим успешность запроса if (!$ath) { mysql_close ($dbdeskriptor); echo "Ошибка базы данных"; return false; } // Извлечём результаты запроса $result = mysql_fetch_assoc ($ath); // Проверим на NULL результат запроса if (isset ($result ['user'])) { mysql_close ($dbdeskriptor); include "Такого e-mail в базе нет!"; return false; } // Если пользователь существует, сгенерируем для него новый пароль, состоящий из 6 знаков $simvols = array ("0","1","2","3","4","5","6","7","8","9", "a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z", "A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"); for ($key = 0; $key < 6; $key++) { shuffle ($simvols); $string = $string.$simvols[1]; } // Найдём хеш пароля $pass = md5 ($string); // Составим запрос к базе данных $query_update = "UPDATE user SET pass = "$pass" WHERE mail="$email""; // Проведём запрос $ath = mysql_query ($query_update, $dbdeskriptor); // Проверим результат запроса if (!$ath) { mysql_close ($dbdeskriptor); echo "Ошибка базы данных"; return false; } // Вышлем письмо с логином и новым паролем пользователю $ath = mail ("$email", "Восстановление пароля на сайте {$site_name}", "Вы запросили восстановление логина и/или пароля на сайте {$site_name}. Ваш логин и новый пароль:n Логин: {$result['login']}n Пароль: {$string}", "From: amin <{$adm_mail}>"); // Проверим успешность отправки if (!$ath) { include "Ошибка при отправке письма"; return false; } echo "Пароль восстановлен"; return true; } ?> |
Ну собственно всё, ничего сложно в функции нет.
____________________________________________
Постовый.
Обзор блогосферы от Virtual-lab.
Рецепт заработка от Спрута.
А здесь можно выйграть iPhone
.
11
Пишем систему пользователей сайта на PHP. Часть 3. Пишем залогинивание пользователей
2 сентября 2008 | KalimdorС этим постом я припозднился, но лучше поздно, чем никогда
. Теперь перейдём к делу. Сначала код формы для отправки данных. Его можно будет вставить в любое нужное вам место на сайте. И так:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <html> <head> <title>Вход для пользователя</title> </head> <body> <table> <tr><td> <form action= "login.php" method="post"> Логин: <input type = "text" name = "login"> Пароль: <input type = "text" name = "pass"> <input type = "checkbox" name = "zap" value= "yes"> Запомнить <input type = "submit" value = "Вход"> </form> </td></tr> </table> </body> </html> |
При вставке в php-код и выводе через функцию echo () не забывайте экранировать кавычки обратным слешем (). Обрабатывает входящие данные файл login.php. Структура таблицы пользователей была описана в предыдущем посте.
Теперь код самого login.php (код прокомментирован):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | <?php // Здесь введите адрес своего сайта, он используется для ограничения доступа по URL к кукам $host = "www.panel.demo.ru"; // Получим входные данные $login = $_POST ['login']; $pass = $_POST ['pass']; $zap = $_POST['zap']; // Проверим входящие данные // Проверка вводимых данных на корректность if(!preg_match("/[A-Za-z0-9]/",$login)) { include "error.php"; // Здесь и далее можно поставить урл на свою страницу ошибки exit(); } if(!preg_match("/[A-Za-z0-9]/",$pass)) { include "error.php"; exit(); } if(!($zap == "yes") && !($zap =="")) { include "error.php"; exit (); } // Найдём хеш пароля $pass = md5 ($pass); // Найдём пользователя с введённым логином // Составим запрос $query = "SELECT `user`,`pass` FROM `user` WHERE login = "$login""; // Приконнектимся к БД include "config.php"; // Произведём запрос $ath = mysql_query ($query, $dbdeskriptor); // Проверим выполненость запроса if (!$ath) { mysql_close ($dbdeskriptor); include "error.php"; exit (); } // Извлечём результаты запроса $result = mysql_fetch_assoc ($ath); // Проверим наличие логина if (!isset($result ['login'])) { mysql_close ($dbdeskriptor); include "error.php"; exit (); } // Если логин есть проверим правильность пароля if (!($pass == $result ['pass'])) { mysql_close ($dbdeskriptor); include "error.php"; exit (); } // Если пароль правильный, то производим запись в куки в зависимости от того, будет запоминание пользователя или нет if ($zap == "yes") { setcookie ("l","$login", time () + 172800, "/", $host); setcookie ("p","$pass", time () + 172800, "/", $host); } else { setcookie ("l","$login", 0, "/", $host); setcookie ("p","$pass", 0, "/", $host); } // Выводим сообщение об успешности залогинивания echo "Логин и пароль приняты системой"; ?> |
Вместо простого вывода сообщения об успешности залогинивания, можно сделать вывод сообщения с редиректом на прошлую страницу. Если интересно как это сделать — отпишите в комментариях, в следующем посте опубликую решение. На сегодня пока всё.
____________________________________________________________________
Постовый.
Полубомж написал на тему паления тем. Достаточно давно я тоже писал на эту тему.
Бесколёсный вернулся!. Жду новых интересных постов от него.
__________________________________________________________
P.S.
Съездил на Московский автосалон Мотор Экспо 2008. Выставка проходила в Крокус Экспо и была просто шикарной. Самые лучшие стенды имхо были у Ауди, Мерседеса и БМВ. Во многом благодаря большой концентрации отличных тачек на квадратный метр стенда. Думаю не стоит объяснять, почему на их стендах было очень много народу
. Даже машину себе выбрал. По соотношению цена/качество/стиль/мощность/практичность мне понравился Mitsubishi Lancer Evolution X. Думаю начать копить на неё
. Не, ну правда красавица:

4