Category: Интернет

Битрикс капча — bitrix CAPTCHA

Как подключить капчу в битриксе к своим скриптам? Да очень просто. Все расписано в документации. И так подключаем капчу битрикс в свой скрипт.

Сначала генерируем капчу:

include_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/classes/general/captcha.php");
$cpt = new CCaptcha();
$captchaPass = COption::GetOptionString("main", "captcha_password", "");
if(strlen($captchaPass) <= 0){
	$captchaPass = randString(10);
	COption::SetOptionString("main", "captcha_password", $captchaPass);
}
$cpt->SetCodeCrypt($captchaPass);

Легким движением выводим капчу:

<input name="captcha_code" value="<?=htmlspecialchars($cpt->GetCodeCrypt());?>" type="hidden">
<img src="/bitrix/tools/captcha.php?captcha_code=<?=htmlspecialchars($cpt->GetCodeCrypt());?>">
<input id="captcha_word" name="captcha_word" type="text">

Проверяем капчу на вшивость:

if($APPLICATION->CaptchaCheckCode($_POST["captcha_word"], $_POST["captcha_code"])){
    echo 'капча валидная';
}

Формирование меню из элементов инфоблока в Битрикс

Задача: сформировать левое меню на сайте работающем на битриксе из элементов информационного блока.

Решение: создаем файл .left.menu_ext.php в директории в котором должно выводиться меню и наполняем следующим кодом

<?
if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();

global $APPLICATION;

if(CModule::IncludeModule("iblock")) {

    $IBLOCK_ID = 6; // указываем инфоблок с элементами

    $arOrder = Array("SORT"=>"DESC");
    $arSelect = Array("ID", "NAME", "IBLOCK_ID", "DETAIL_PAGE_URL");
    $arFilter = Array("IBLOCK_ID"=>$IBLOCK_ID, "ACTIVE"=>"Y");
    $res = CIBlockElement::GetList($arOrder, $arFilter, false, false, $arSelect);

    while($ob = $res->GetNextElement()) // наполняем массив меню пунктами меню
    {
        $arFields = $ob->GetFields();
        $aMenuLinksExt[] = Array(
            $arFields['NAME'],
            $arFields['DETAIL_PAGE_URL'],
            Array(),
            Array(),
            ""
        );
    }   
}

$aMenuLinks = array_merge($aMenuLinksExt, $aMenuLinks); // меню сформировано
?>

Bitrix не отправляется почта

В одном проекте интернет магазина столкнулся с такой проблемой. При оформлении заказа не уходит письмо о новом заказе клиенту и администратору сайта, но другие почтовые события например такие как регистрация в битриксе работает отлично. Проблема в битриксе таилась в следующем: в файле /bitrix/php_interface/dbconn.php была объявлена константа define(«BX_CRONTAB_SUPPORT», true); вот ее и надо перевести в не истинное состояние  define(«BX_CRONTAB_SUPPORT», false);. После чего все заработало.

Django youtube video template filter

Фильтр выковыривает ссылки из текста и вставляет как oembed объект. Можно задать длину-ширину опционально: {{ content|youtube:»320×240″ }} по дефолту 320×240.

# -*- coding: utf-8 -*-

from django.template.defaultfilters import stringfilter
from django import template
import re

register = template.Library()

@register.filter
@stringfilter
def youtube(url, size=None):
    regex = re.compile(r".*(http://)?(www\.)?(youtube\.com/watch\?)?v=(?P[A-Za-z0-9\-=_]{11})(\&)?.*", re.UNICODE)
    match = regex.match(url)
    if not match: return url
    video_id = match.group('id')
    
    video_w = "320"
    video_h = "240"
    if size and "x" in size:
        (video_w, video_h) = size.split('x')
    
    youtube_iframe = """
    <iframe src="http://www.youtube.com/embed/%s?fs=1&feature=oembed" frameborder="0" allowfullscreen width="%spx" height="%spx"></iframe>
    """ % (video_id, video_w, video_h)
    
    repl = re.compile(r"(http://)?(www\.)?(youtube\.com/watch\?v=)?(?P[A-Za-z0-9\-=_]{11}[^\b]*)", re.UNICODE)
    text = re.sub(repl, youtube_iframe, url)
    return text
youtube.is_safe = True # Don't escape HTML

TinyMCE для Django

Прикручиваем tinymce к django. Я случайно наткнулся на такое исполнение прикручивания tinymce к django.

1. Создаем в папке проекта папку wysiwyg, а в ней файл __init__.py (код которого приведен ниже)

#!/usr/bin/python
# -*- encoding: utf-8 -*-

from django.db.models import Field
from django.forms import Textarea
from settings import MEDIA_URL

class WidgetWYSIWYG(Textarea):
    def __init__(self, *args, **kwargs):
        super(WidgetWYSIWYG, self).__init__(attrs={'class': 'wysiwygEditor vLargeTextField'}, *args, **kwargs)
    class Media:
        js = (
            MEDIA_URL+'common/tiny_mce/tiny_mce.js',
            MEDIA_URL+'common/filebrowser/js/TinyMCEAdmin.js',
            )

class WYSIWYGField(Field):
    def get_internal_type(self):
        return "TextField"

    def formfield(self, **kwargs):
        defaults = {'widget': WidgetWYSIWYG}
        defaults.update(kwargs)
        return super(WYSIWYGField, self).formfield(**defaults)

2. Теперь мы можем создать свою модель и вместо поля models.TextField использовать WYSIWYGField. Смотрим код models.py ниже.

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from django.db import models
import datetime
from wysiwyg import WYSIWYGField

# Create your models here.
class News(models.Model):
    """
    Новости
    """
    publish = models.BooleanField(verbose_name=u"Опубликовать", default=True)
    created = models.DateField(verbose_name=u"Дата", default=datetime.date.today)
    title = models.CharField(verbose_name=u"Заголовок", max_length=250)
    preview = models.TextField(verbose_name=u"Краткое описание")
    text = WYSIWYGField(verbose_name=u"Текст")

    def __unicode__(self):
        return self.title

    class Meta:
        ordering = ('-created',)
        verbose_name = u"Новость"
        verbose_name_plural = u"Новости"

Русифицируем D-Link DIR 320

Пользуюсь вот таким зверьком уже много времени и только сегодня захотелось его русифицировать.

Моя прошивка 1.10 а модель само сабой D-Link DIR 320.

Русификатор работает на версиях от 1.1 и выше Для русификации интерфейса скачайте специальный Language Pack (langpack_ru.bin) с FTP
сервера D-Link ftp.dlink.ru/pub/Router/DIR-320/Firmware/ и сохраните файл на жестком диске
компьютера. Еще раз зайдите в меню Maintenance ? Firmware Update. В пункте Language Pack
Upgrade нажмите на кнопку Обзор и укажите путь к файлу русификатора и нажмите Apply.

Вот и все после роутер ребутнется и станет рускоговорящим.

Поиск по умолчанию в мазиле

Задолбали меня программы которые без ведома в моем браузере меняют настройки. Я как правило сразу удаляю такой софт не дающий право на выбор. В топку их с чертями небесными. А вот как я это исправляю в мазиле:
в адресной строке вбиваем «about:config».
ставим значения
browser.search.defaultenginename = Google
browser.search.selectedengine = Google
keyword.URL = http://www.google.ru/search?hl=ru&q=

Стандартные шрифты Windows

На веб‑страницах имеет смысл использовать только те шрифты, которые установлены на компьютерах пользователей. Вот перечень таких шрифтов.

Шрифт Семейство Windows Office Образец шрифта
(текст)
Arial sans‑serif 3.1, 95, NТ 3.5 97 Образец шрифта
Arial Black sans‑serif 95, 2000 97 Образец шрифта
Arial Narrow sans‑serif 4.3 Образец шрифта
Arial Unicode MS sans‑serif 2000 Образец шрифта
Book Antiqua serif 98 4.3 Образец шрифта
Bookman Old Style serif 4.3 Образец шрифта
Calibri sans‑serif Vista 2007 Образец шрифта
Cambria serif Vista 2007 Образец шрифта
Candara sans‑serif Vista 2007 Образец шрифта
Century serif 2000 Образец шрифта
Century Gothic sans‑serif 95 4.3 Образец шрифта
Comic Sans MS cursive 95, 2000 97 Образец шрифта
Consolas monospace Vista 2007 Образец шрифта
Constantia serif Vista 2007 Образец шрифта
Corbel sans‑serif Vista 2007 Образец шрифта
Courier New monospace 3.1, 95, NT 3.5 97 Образец шрифта
Franklin Gothic Medium sans‑serif XP 97 Образец шрифта
Garamond serif 97 Образец шрифта
Georgia serif 95, 2000 97 Образец шрифта
Impact sans‑serif 95, 2000 4.3 Образец шрифта
Lucida Console monospace 95, NT 3.5 Образец шрифта
Lucida Sans Unicode sans‑serif 95, NT 3.5 Образец шрифта
Microsoft Sans Serif sans‑serif 2000 Образец шрифта
Mistral cursive 97 Образец шрифта
Monotype Corsiva cursive 4.3 Образец шрифта
Palatino Linotype serif 2000 2003 Образец шрифта
Segoe Print cursive Vista 2007 Образец шрифта
Segoe Script cursive Vista 2007 Образец шрифта
Segoe UI sans‑serif Vista 2007 Образец шрифта
Sylfaen serif XP Образец шрифта
Tahoma sans‑serif 98, 2000 97 Образец шрифта
Times New Roman serif 3.1, 95, NT 3.5 97 Образец шрифта
Trebuchet MS sans‑serif 95, 2000 97 Образец шрифта
Verdana sans‑serif 95, 2000 97 Образец шрифта

Резайл (Thumbnail) изображения в bitrix №2

Метод создает уменьшенную копию изображения sourcePath.

bool
CreateThumbnail( 
 string sourcePath,
 string previewPath,
 int maxWidth,
 int maxHeight
);
sourcePath Абсолютный путь к исходному изображению, для которого необходимо сделать уменьшенную копию.
previewPath Абсолютный путь к файлу, в который будет сохранена уменьшенная копия изображения.
maxWidth Максимальная ширина уменьшенного изображения.
maxHeight Максимальная высота уменьшенного изображения
<?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/classes/general/wizard.php");

$success = CWizardUtil::CreateThumbnail($_SERVER["DOCUMENT_ROOT"]."/big.gif",$_SERVER["DOCUMENT_ROOT"]."/small.gif", 100, 100);

require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");
?>