TITAN-UZ
С нами с 27 февраля 2014; Место в рейтинге пользователей: #56Динамическое обновление цены товара 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'));
}
}