TITAN-UZ
С нами с 27 февраля 2014; Место в рейтинге пользователей: #80Динамическое обновление цены товара miniShop2 по курсу доллара, через Cron.
            Всем привет, друзья. Возникла у меня задача, сделать так, чтобы цены у товаров менялись в соответствии с курсом доллара, раз в сутки.         
        
        
        
    Как изменить rel="canonical" в "Человекопонятной навигации", выполненной по инструкции pdoPage?
            Подскажите, как исправить следующее.
Воспользовался инструкцией "Человекопонятная навигация"
В результате при переходе на страницу отличную от первой в исходном коде страницы meta тег rel=«canonical» ведет не на каноническую страницу (как было до изменений без параметров page-№), а на текущую, и выглядит следующим образом:
Немного переделал под свои нужды URLы страниц пагинации, но сути не меняет, rel=«canonical» все равно ведет на текущую страницу:
Подскажите, как сделать, чтобы rel=«canonical» при нахождении на любой странице пагинации вел на первую страницу пагинации, вот так:
Вот мой код шаблона:
Заранее, благодарю!
        
        
        
    Воспользовался инструкцией "Человекопонятная навигация"
В результате при переходе на страницу отличную от первой в исходном коде страницы meta тег rel=«canonical» ведет не на каноническую страницу (как было до изменений без параметров page-№), а на текущую, и выглядит следующим образом:
<link rel="canonical" href="https://mysite.ru/category/page-2"/>
<link rel="canonical" href="https://mysite.ru/category/page-3"/>Немного переделал под свои нужды URLы страниц пагинации, но сути не меняет, rel=«canonical» все равно ведет на текущую страницу:
<link rel="canonical" href="https://mysite.ru/category/page/2/"/>
<link rel="canonical" href="https://mysite.ru/category/page/3/"/>Подскажите, как сделать, чтобы rel=«canonical» при нахождении на любой странице пагинации вел на первую страницу пагинации, вот так:
<link rel="canonical" href="https://mysite.ru/category/"/>Вот мой код шаблона:
[[!pdoPage@MyPagination?
&element=`pdoResources`
&limit=`3`
&parents=`{$_modx->resource.id}`
&hideContainers=`1`
&fastMode=`1`
&sortby=`publishedon`
&sortdir=`ASK`
&pageLinkScheme=`[[+pageVarKey]]/[[+page]]/`
&includeTVs=`img_sh,alt_img_sh`
&tpl=`@FILE chunks/sh/sh.tpl` 
]]	  
	  
[[!+page.nav]]Код плагина:<?php
// Реагируем только на событие OnPageNotFound
if ($modx->event->name == 'OnPageNotFound') {
    // Определяем ключ запроса из настроек
    $req = $modx->getOption('request_param_alias');
    // Ловим нужный ключ страницы
    $pageVarKey = 'page';
    // Если в запросе повторяется наш шаблон "pageVarKey-page", то работаем дальше
    if (preg_match("#.*?(/{$pageVarKey}/(\d+))/#", $_REQUEST[$req], $matches)) {
        // Отрезаем ЧПУ строку и получаем точный адрес текущей страницы
        $uri = str_replace($matches[1], '', $matches[0]);
        // Ищем страницу по этому адресу
        $id = 0;
        // Сначала как есть, со слешем на конце
        if (!$id = $modx->findResource($uri)) {
            // Если не находим - то пробуем отрезать слэш и ищем повторно
            $id = $modx->findResource(rtrim($uri, '/'));
        }
        // Если ресурс найден
        if ($id) {
            // Добавляем номер страницы в глобальные массивы, чтобы pdoPage их там увидел
            $_GET[$pageVarKey] = $_REQUEST[$pageVarKey] = $matches[2];
            // И загружаем эту страницу
            $modx->sendForward($id);
        }
        // Если ресурс не был найден - ничего не делаем, возможно запрос поймает другой плагин
    }
}Заранее, благодарю!
Расшифровка json для вывода числа посетителей из Яндекс.Метрика API
            Здравствуйте! Прошу заранее прощения, мягко говоря не профи в программировании.
        
        
        
        
    [MIGX] - Большой и страшный. Multiple Formtabs. Как сделать слайдер с разными типами слайдов.
            Привет сообществу!
В данной заметке вы узнаете, что такое Multiple Formtabs и как создать конфигурацию с разным набором данных. Ну и конечно же создадим с вами слайдер у которого будут разные типы слайдов, а в конце вас ждёт очень интересная история которую я долго не решался кому либо рассказать (если конечно вам интересно, но история интересная — поверьте). И так, примеры слайдов:
        
        
        
        
    В данной заметке вы узнаете, что такое Multiple Formtabs и как создать конфигурацию с разным набором данных. Ну и конечно же создадим с вами слайдер у которого будут разные типы слайдов, а в конце вас ждёт очень интересная история которую я долго не решался кому либо рассказать (если конечно вам интересно, но история интересная — поверьте). И так, примеры слайдов:
- Изображение на фоне
 - Видео на фоне
 - Сплошной цвет на фоне
 
Оптимизация сайта на MODX
            Мне дали задание оптимизировать сайт https://mebmart.by для https://developers.google.com/speed/pagespeed/insights/. Я с задачей оптимизации сталкиваюсь первый раз. К сожалению, инструкций по оптимизации сайта на MODX не нашел. Поэтому хочу сделать такую инструкцию. Надеюсь, в комментариях, более опытные разработчика подскажут что и как еще можно сделать.
        
        
        
        
    Стоимость товара для каждой позиции в корзине
            Все привет!
Как вывести общую стоимость каждой позиции в корзине?
Раньше выводил:
Подскажите, кто сталкивался.
Спасибо!
Решение:
Вывод в корзине:
Спасибо за помощь Андрею)
        
        
        
    Как вывести общую стоимость каждой позиции в корзине?
Раньше выводил:
[[+price:mpy=`[[+count]]`]]Сейчас в чанке корзины вывод значений {$product.price}А как подключить к выводу phx я не понимаю.Подскажите, кто сталкивался.
Спасибо!
Решение:
Вывод в корзине:
<div class="group">
   <div class="weight">
        <span>{$product.weight}</span> гр./шт.
   </div>
   <div class="total_weight">
        <span>{$product.count * $product.weight}</span> гр.
    </div>
</div>
<div class="group">
    <div class="price">
         <span>{$product.price}</span> руб./шт.
     </div>
     <div class="total_price">
         <span>{$product.cost}</span> рублей
     </div>
</div>Скрипт на обновление сумм:$( '#msCart input[name="count"]' ).change( function(){
        var id = $( this ).parents('.product-cart-list') // родитель инпута и div-ов с суммой;
        var count  = parseInt($( this ).val()); 
        var price  = parseInt(id.find('.price span').text());
        var weight = parseInt(id.find('.weight span').text());
 
        id.find(' .total_price span' ).html( count * price );
        id.find(' .total_weight span' ).html( count * weight );
});PSСпасибо за помощь Андрею)
pdoPage+pdoResource, как определить в &tpl первую/последнюю запись на странице?
            Вывожу на странице список ресурсов используя pdoPage+pdoResource.
Смысл такой, что &limit у меня должен быть четным и я должен оборачивать в результаты парами.
К примеру если у меня &limit=`12`, то у меня на каждой странице должно быть 6 пар, то есть 6 в которых будет по 2 результата. Как я понял, это можно сделать через &tplFirst, &tplLast, &tplOdd и т.п., но это кощунство, шаблон каждого результата достаточно велик, это 4 чанка на 99,9% одинаковых, отличия будут в отрытом/закрытом div. Если что-то надо подправить в шаблоне вывода, править придется во всех четырех!
По этому хотел вот узнать, может есть какие то плейсхолдеры, которые можно использовать в чанке-шаблоне? В принципе по [[+idx]] я могу понять четный или нет, но не могу понять, как в чанке определить, является ли данный шаблон первым или последним выводом на странице? Конечно если знать заранее &limit, можно высчитать…
        
        
        
        
    Смысл такой, что &limit у меня должен быть четным и я должен оборачивать в результаты парами.
К примеру если у меня &limit=`12`, то у меня на каждой странице должно быть 6 пар, то есть 6 в которых будет по 2 результата. Как я понял, это можно сделать через &tplFirst, &tplLast, &tplOdd и т.п., но это кощунство, шаблон каждого результата достаточно велик, это 4 чанка на 99,9% одинаковых, отличия будут в отрытом/закрытом div. Если что-то надо подправить в шаблоне вывода, править придется во всех четырех!
По этому хотел вот узнать, может есть какие то плейсхолдеры, которые можно использовать в чанке-шаблоне? В принципе по [[+idx]] я могу понять четный или нет, но не могу понять, как в чанке определить, является ли данный шаблон первым или последним выводом на странице? Конечно если знать заранее &limit, можно высчитать…
Как в 14 раз снизить нагрузку на базу данных MySQL
            Tickets
Если кратко, то таблица modx_tickets_views — критически увеличивает нагрузку на базу данных MySQL. Уменьшить нагрузку можно отключив (если включен) счетчик просмотра неавторизованными пользователями tickets.count_guests или обнулить (очистить)/удалить таблицу modx_tickets_views из базы данных MySQL.
 
        
        
        
        
    Если кратко, то таблица modx_tickets_views — критически увеличивает нагрузку на базу данных MySQL. Уменьшить нагрузку можно отключив (если включен) счетчик просмотра неавторизованными пользователями tickets.count_guests или обнулить (очистить)/удалить таблицу modx_tickets_views из базы данных MySQL.
Fenom вместо getImageList MIGx
            Есть обработка MIGx полей через Fenom с условиями:
Решение
        
        
        
    {set $rows = json_decode($_modx->resource.tv_name, true)}
{foreach $rows as $_list $row}
	{if $_last==1}
		'какойто коТ'
	{/if}
{/foreach}Все замечательно работает, но если мне к примеру помимо _last нужны поля idx, _alt, _first и прочее, как быть в таком случае? Неужели без getImageList все же не обойтись?Решение
{set $rows = json_decode($_modx->resource.migx_tv, true)}
{set $idx = 0}
{foreach $rows as $idxArr => $row}
	{set $row['idx'] = $idx++} {* idx от созданной переменной с инкриментом*}
	{set $row['idxForeach'] = $row@index} {* idx от foreach*}
	{*set $idxMIGX = $row['MIGX_id']*} {* idx от MIGX*}
	{if $row@first} 
		{set $row['_first'] = 'first item'}
	{/if}
	{if $row@last} 
		{set $row['_last'] = 'last item'}
	{/if}
	{if !($idx % 2)}
		{set $row['_alt'] = 'odd item'}
	{/if}
	{$row | print_r}
{/foreach}        Редирект URL со слэшем в конце на без слэша
            Это не вопрос, а решение.
Ниже код плагина, который решает задачу: редирект URL со слэшем в конце на URL без слэша в конце.
Гугл/яндекс в течение часа дал ответ на обратную задачу (редирект без слэша в конце на со слэшем).
Делюсь доработкой с надеждой, что это вылезет в топ и поможет сохранить время следуюшим поколениям :)
Также сделаны настройки по пунктам 1-6 отсюда.
Плагин настраивается на событие OnLoadWebDocument:
        
        
        
    Ниже код плагина, который решает задачу: редирект URL со слэшем в конце на URL без слэша в конце.
Гугл/яндекс в течение часа дал ответ на обратную задачу (редирект без слэша в конце на со слэшем).
Делюсь доработкой с надеждой, что это вылезет в топ и поможет сохранить время следуюшим поколениям :)
Также сделаны настройки по пунктам 1-6 отсюда.
Плагин настраивается на событие OnLoadWebDocument:
<?php
if ($modx->event->name == 'OnLoadWebDocument') {
  $request = $_SERVER['REQUEST_URI'];
  $params = '';
  if (strpos($request, '?') !== false) {
  	list($request, $params) = explode('?', $request);
  }
  $uri = $request;
  if(!empty($uri) && strpos($uri, '.') === false && substr($uri, -1, 1) == '/') {
    $uri = substr($uri, 0, -1);
    if (!empty($params)) {
      $uri .= '?' . $params;
    }
    $modx->sendRedirect($uri, array('responseCode' => 'HTTP/1.1 301 Moved Permanently'));
  }
}