Топики пользователя «adminko»

[EVO] WebSignUp Кодировка UTF-8 в письмах о регистрации

Статья повествует о фиксе проблемы с кодировками на некоторых почтовых говносервисах, типа mail.сру. При регистрации веб пользователя на почту приходит лажа.


( Читать дальше )

[Evo] Вариант создания тегов в дереве MODx

Disclaimer Эта статья носит скорее обучающий характер, и не претендует на высоко профессиональность. В статье используются разные техники использоания гибкости MODx.
Картинка результата для затравки




( Читать дальше )

[EVO] SEO теги для товаров Shopkeeper (внешние таблицы)

Дано: MODx 1.0.5 + Shopkeeper (товары в внешних таблицах)
Проблема: сделать уникальные SEO (title, description, keywords) для товаров
Решение:
1) создаем ТВ параметры seo_title, seo_keywords, seo_description, прикручиваем их к шаблону товара
2) В чанке head где у вас выводится !DOCTYPE и теги на нужные места впедаливаем вызов сниппета seo

  <head>
    <title>[!seo? &type=`title` !]</title>
    <meta name="keywords" content="[!seo? &type=`keywords` !]" />
    <meta name="description" content="[!seo? &type=`description` !]" />

3) Пишем сниппет seo
<?php
$id = ereg_replace("/\D/", "", $_GET['p']);
if ($id == "") {
    switch ($type) {
        case "title":         return "[*seo_title*] :: [(site_name)]"; break;
        case "keywords":      return "[*seo_keywords*]"; break;
        case "description":   return "[*seo_description*]"; break;        
    }

}

$seo_tags = $modx->db->getRow($modx->db->query("
            select c.pagetitle,
                   (select value from `modx_catalog_tmplvar_contentvalues` where contentid = c.id and tmplvarid = 17) as 'seo_title', 
                   (select value from `modx_catalog_tmplvar_contentvalues` where contentid = c.id and tmplvarid = 15) as 'seo_keywords', 
                   (select value from `modx_catalog_tmplvar_contentvalues` where contentid = c.id and tmplvarid = 16) as 'seo_description'                                       
            from `modx_catalog` c
            where c.id = '".$id."'"));
switch ($type) {
    case "title":         return $seo_tags['seo_title'] == "" ? $seo_tags['pagetitle']." :: [(site_name)]" : $seo_tags['seo_title']." :: [(site_name)]"; break;
    case "keywords":      return $seo_tags['seo_keywords']; break;
    case "description":   return $seo_tags['seo_description']; break;        
}
?>


Универсально на всех страницах сайта при заполненном тв выводится корректные теги, вывод сделал через сниппет, так как так будет легче контролить и глобально менять например ключевые по всему сайту.
Сниппет не мешает статичным страницам и помогает страницам товара стать более оптимизированными, уникальными.

Советую также сделать проверку на существование товара и корректной выдачи, описано здесь

[EVO] Обработка 404 для Shopkeeper (внешние таблицы)

Дано: MODx 1.0.5 + Shopkeeper база товаров в внешней таблице
Проблема: при вводе несуществующего идентификатора товара выводится пустая страница с 200 кодом, надо отдавать 404
Решение:
Пишем плагин Check404
Код
if ($_GET['p'] != "") {
    $check = $modx->db->getRow($modx->db->query("select count(*) as 'cnt' from `modx_catalog` where id = '".ereg_replace("/\D/", "", $_GET['p'])."'"));
    if ($check['cnt'] == 0) {
        $modx->sendErrorPage();
    }
}

Вешаем на событие OnWebPageInit