Перейти к содержимому


Правила форума

Внимание!!! Если не можете скачать, пожалуйста ознакомьтесь с условиями получения доступа с файлам форума. Правила форума


экспорт со ссылкой чпу для категорий и товаров.

чпу экспорт

Сообщений в теме: 7

#1 etdnepr

    Продвинутый пользователь

  • Download User
  • PipPipPip
  • 101 сообщений
Репутация: 0
Начинающий

Отправлено 30 июня 2017 - 00:32

На сайте установлен модуль ЧПУ от badisoft из этой темы
Также установлено дополнение для расширенного экспорта с возможностью выбора подкатегорий для экспорта.
Хочу в файл экспорта добавить колонку со ссылкой чпу для категорий и товаров.
Может кто подскажет как надо подрихтовать файл catalog_excel_export.php (я так понимаю именно его надо править), чтобы такой экспорт состоялся?
Насколько я понял, например для таблицы категорий надо к выборке из таблицы "префикс_caterories" увязать выборку из таблицы "префикс_cpu" с проверкой categoryID=ID (т.е. сопоставления id категорий) и соблюдением условия type=0 (т.е. для соответствующего id брать именно урл категорий).
Ну и для товаров +- логика, я так понимаю, подобная.
Не получается это все правильно записать в файл((
Спасибо всем за ответы и помощь в решении.

#2 badisoft

    Продвинутый пользователь

  • VIP
  • 5 006 сообщений
Репутация: 766
Мастер

Отправлено 30 июня 2017 - 10:12

Цитата

Может кто подскажет как надо подрихтовать файл catalog_excel_export.php (я так понимаю именно его надо править)
Вот инструкция по добавлению в CSV-файл обычной (штатной) ссылки на товар и категорию. Действуйте по аналогии.
==============================
Дополнение добавляет в экспортируемый CSV-файл столбец "Ссылка" со ссылкой на категорию и товар соответственно.

В файле catalog_excel_export.php

1. в функции _exportCategoryLine

перед

fputcsvex($f,$lines,$delimiter);


вставляем

# BEGIN добавляем ссылку
$lines[] = CONF_FULL_SHOP_URL."category_".$cat_data['categoryID'].".html";
# END добавляем ссылку


2. в функции _exportProducts

перед

fputcsvex($f,$lines,$delimiter);


вставляем

# BEGIN добавляем ссылку
$lines[] = CONF_FULL_SHOP_URL."product_".$row1['productID'].".html";
# END добавляем ссылку


3. после строки

$extra_columns_count = $cnt;


вставляем

# BEGIN добавляем ссылку
$lines[] = "Ссылка";
# END добавляем ссылку


http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#3 etdnepr

    Продвинутый пользователь

  • Download User
  • PipPipPip
  • 101 сообщений
Репутация: 0
Начинающий

Отправлено 01 июля 2017 - 09:36

Спасибо, Дмитрий! Но я так понимаю поле cpu из таблицы cpu надо таки выбрать в массив cat_data для соответствующей категории??

#4 badisoft

    Продвинутый пользователь

  • VIP
  • 5 006 сообщений
Репутация: 766
Мастер

Отправлено 01 июля 2017 - 11:20

Цитата

Но я так понимаю поле cpu из таблицы cpu надо таки выбрать в массив cat_data для соответствующей категории??
Естественно. Сама ЧПУ-ссылка волшебным образом ниоткуда не появится.
Либо в п.1 и п.2 надо добавить запрос к таблице cpu для получения соответствующей категории/товару ссылки, либо где-то ранее за пределами цикла делать общий запрос, формировать массивы категорий и товаров, а потом уже из этих массивов брать ЧПУ-ссылки. Скорее всего, так будет намного быстрее (один SQL-запрос плюс его обработка вместо SQL-запроса и обработки для каждой категории/товара).
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#5 etdnepr

    Продвинутый пользователь

  • Download User
  • PipPipPip
  • 101 сообщений
Репутация: 0
Начинающий

Отправлено 01 июля 2017 - 11:31

В этом то и завис)))
Я пытался добавить запрос сюда вот в таком виде, но 100 пудов, что неправильно получилось)) Потому как не работает
$q = db_query("select categoryID, name, description, sort_order, picture, meta_keywords, meta_description, title, cpu from ".
						CATEGORIES_TABLE,CPU_TABLE." ON ID = categoryID AND type = 0 where categoryID=".(int)$categoryID);

UPDATE

И так не пошло
$q = db_query("select categoryID, name, description, sort_order, picture, meta_keywords, meta_description, title from ".
					    CATEGORIES_TABLE." where categoryID=".(int)$categoryID);
			    $cat_data = db_fetch_row($q);
			    if (!$cat_data) return;
   
    $q = db_query("select ID, cpu from ".CPU_TABLE." on type = 0 where ID=".(int)$categoryID);
			    $cpu_data = db_fetch_row($q);
			    if (!$cpu_data) return;
   
*************
# BEGIN добавляем ссылку
$lines[] = CONF_FULL_SHOP_URL.$cpu_data['cpu'];
# END добавляем ссылку


#6 etdnepr

    Продвинутый пользователь

  • Download User
  • PipPipPip
  • 101 сообщений
Репутация: 0
Начинающий

Отправлено 02 июля 2017 - 11:51

Только обратил внимание, что название темы не указал. Ее нельзя отредактировать?

#7 badisoft

    Продвинутый пользователь

  • VIP
  • 5 006 сообщений
Репутация: 766
Мастер

Отправлено 02 июля 2017 - 12:28

Цитата

И так не пошло
Ээ...Уж извините, но Вы вообще хоть что-то работающее написали?
Не копируя по инструкции, а самостоятельно, из головы?
Там же бред написан, показывающий полное незнание того, что пишется.

Я же написал адгоритм, как ПРАВИЛЬНО сделать.
Один (один!) SQL-запрос, из которого получатся два массива - ЧПУ категорий и ЧПУ товаров, с индексом массива categoryID и productID соответственно. После чего ЧПУ категории в вышеприведенной инструкции берется как $category_array[$categoryID], ЧПУ товара аналогично.
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#8 badisoft

    Продвинутый пользователь

  • VIP
  • 5 006 сообщений
Репутация: 766
Мастер

Отправлено 04 июля 2017 - 19:52

Появилось время. Пишу из головы, т.е. не проверяя.
файл catalog_excel_export.php
		if (!strcmp($sub, "excel_export"))
		{
# BEGIN добавляем ссылку
$cpu = array();
$data = db_query("SELECT type, ID, cpu FROM ".DB_PRFX."cpu WHERE type<=1"); // выборка ссылок только для категорий и товаров, т.е. с type=0 и type=1
where ($row=db_fetch_assoc($data)) $cpu[$row['type']][$row['ID']] = $row['cpu'];
# END добавляем ссылку
		if ( CONF_BACKEND_SAFEMODE != 1 && (!isset($_SESSION["log"]) || !in_array(6,$relaccess))) //unauthorized

ну а дальше
в п.2 инструкции используем $cpu[0][$cat_data['categoryID']] - это текст ЧПУ-ссылки на категорию.
в п.3 инструкции используем $cpu[1][$row1['productID']] - это текст ЧПУ-ссылки на товар.
В обеих функциях надо, естественно, сделать global $cpu;
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)