Василий Наумкин

Василий Наумкин

С нами с 08 декабря 2012; Место в рейтинге пользователей: #1
Василий Наумкин
23 июня 2015, 05:54
1
+1
На bash я такое написать не смогу, но сделал на Python:
#!/usr/bin/python3
# -*- coding: utf-8 -*-

import sys
import os
import re


def rename(file_path):
    global duplicate
    base_path = os.path.dirname(os.path.realpath(file_path))
    filename = os.path.basename(file_path)
    extension = os.path.splitext(filename)[1]

    new_filename = re.sub(r'[^0-9\_\-]', '', filename)
    new_filepath = base_path + '/' + new_filename + extension
    if new_filepath == file_path:
        print(new_filename + extension)
        return

    while os.path.isfile(new_filepath):
        tmp_filename = os.path.basename(new_filepath)
        tmp_basename = os.path.splitext(tmp_filename)[0]
        idx = 1
        match = re.search(r'.*?\-(\d+)$', tmp_basename)
        if match:
            idx = int(match.group(1)) + 1
            new_filename = re.sub(r'\-(\d+)$', '-' + str(idx), tmp_basename)
        else:
            new_filename += '-' + str(idx)
        new_filepath = base_path + '/' + new_filename + extension
    try:
        os.rename(file_path, new_filepath)
        print("{0} => {1}".format(filename, new_filename + extension))
    except Exception as e:
        print(e)


if __name__ == "__main__":
    if len(sys.argv) < 2:
        exit("Нужно указать имя файла или директории")
    path = os.path.realpath(sys.argv[1].strip())

    if os.path.isdir(path):
        files = os.listdir(path)
        for file in files:
            rename(path + '/' + file)
    elif os.path.isfile(path):
        rename(path)

Файл нужно сделать исполняемым, проверить наличие Python3 и путь к нему на сервере, а затем вызывать с указанием имени файла или путём к директории.

Скрипт переименует все файлы так, что останутся только символы 0-9- и _.

Если файл с новым именем уже есть в директории, то ему (имени) будет добавлена цифра на конце. Во время работы скрипта выводятся имена всех обработанных файлов.

Благодарность можно перечислять вот здесь.

Скрипт поставляется «как есть» — вы используете его на свой страх и риск. Претензии по работе скрипта не принимаются.
Василий Наумкин
23 июня 2015, 04:55
0
Ну и где оплата?
Василий Наумкин
23 июня 2015, 03:49
0
pdoTools 2.0 требует PHP 5.3+.

Если видишь белый экран, значит, у тебя 5.2-. Или обнови PHP (если хостинг разрешает) или установи старый pdoTools без шаблонизатора.
Василий Наумкин
22 июня 2015, 19:20
+6
Для чего нужно дома убираться? Только для чистоты?
Василий Наумкин
22 июня 2015, 17:32
0
Да, у mFilter2 свой собственный jQuery. Я его переписываю, в свободное время. Подумываю еще и свой новый браузер сделать, чтобы уж совсем всё было круто.

Шутка.

Если компонент был куплен — задавай вопрос нормально в техподдержке. Если нет, учись сам правильно подключать javascript и разбираться с его ошибками.
Василий Наумкин
22 июня 2015, 17:30
+1
Так и будет, если сохранять в черновики.

Одну кнопку убрать, другую переименовать — вопрос задать дольше выходит.
Василий Наумкин
22 июня 2015, 16:22
+1
По умолчанию в форме 3 кнопки: предпросмотр, публиковать, и сохранить в черновики.

Можно убрать ненужное.
Василий Наумкин
22 июня 2015, 16:19
0
Потому что до версии 1.2.2 jQuery подключался автоматически. Но покупатели сетовали на лишний код в странице и на то, что jQuery уже и так есть на большинстве сайтов, поэтому я его убрал.

Об этом есть запись в changelog.

Так что, включи jQuery.
Василий Наумкин
22 июня 2015, 15:17
0
$ is not defined — говорит, что не включено.

Какой смысл утверждать, что подключено, если твой браузер сам тебе говорит обратное? Нет такой переменной, ищи. Может, где то указан jQuery.noConflict().

Василий Наумкин
22 июня 2015, 15:08
0
Обожемой, подключи jQuery.
Василий Наумкин
22 июня 2015, 15:07
0
Краудфандинг времени? Было бы круто, но вряд ли получится.
Василий Наумкин
22 июня 2015, 14:04
+3
А, ясно.

Я уже думаю написать отдельный компонент для импорта\экспорта MS2, но всё времени не хватает.
Василий Наумкин
22 июня 2015, 13:16
0
CatalogFill не умеет работать с объектами miniShop2 — он просто ничего про них не знает.
Василий Наумкин
22 июня 2015, 12:36
0
Особенность INLINE чанков. Замени [[+thumb]] на {{+thumb}}.
Василий Наумкин
22 июня 2015, 11:11
+1
Суммы верные, неправильный только счетчик продаж.

Исправил, спасибо.
Василий Наумкин
22 июня 2015, 10:18
2
0
Держи. Присоединение свойств товара к соседнему ресурсу и получение ссылок на первую картинку из полей thumb и image.
[[!pdoNeighbors?
	&leftJoin=`{
		"Data":{"class":"msProductData", "on":"Data.id = modResource.id"}
	}`
	&select=`{
		"Data":"image,thumb"
	}`
	&tplPrev=`@INLINE <span class="link-prev"><img src="{{+thumb}}"><a href="{{+link}}">← {{+menutitle}}</a></span>`
	&tplNext=`@INLINE <span class="link-next"><img src="{{+thumb}}"><a href="{{+link}}">{{+menutitle}} →</a></span>`
	&showLog=`1`
]]
Чанки можно усложнить, чтобы добавить проверку на наличие картинки и вывод заглушки, если её нет.

Оплатить можно здесь.
Василий Наумкин
21 июня 2015, 17:28
+1
[[!pdoResources?
	&parents=`0`
	&resources=`678,33,559,18,2370,1546,6,12,17,11`
	&sortby=`ids`
]]
Василий Наумкин
21 июня 2015, 15:44
0
Оно бы, может, и записывалось в БД как null, если бы из админки не отправлялось вообще никакого значения для old_price. А так ExtJS поле отправляет 0 — оно и записывается в БД.

Но проблема даже не в этом, а в том, что
empty('0.00') !== true
То есть, такое значение не считается пустым в PHP.

Поправил это и выложил новую версию mSearch2 — можно обновляться.
Василий Наумкин
21 июня 2015, 06:26
+1
Интересно, мне одному не понятно, что это и зачем?