Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Baco

Користувачі
  • Публікації

    2 247
  • З нами

  • Відвідування

Повідомлення, опубліковані користувачем Baco

  1. Странно, спервые такое вижу, перепроверил все контроллеры, выхлоп всюду правильный:

    7b5cef33effd32e27fc1d131a5148a2e773c59ce

    По при переходе по урлу, путь получается такого плана:

    http://domen.ru/admin/http:/domen.ru/image/cache/data/muzhskoyniz/dzhinsy_absolut_joy_2001233-40x40.jpg

    Откуда берётся HTTP_SERVER я не могу найти, и так по всем контроллерам, будь то опции, товары или категории, сперва грешил на шаблонизатор в списке товаров для фильтрации, оказалось - зря.

    Кто ранее встречал такую проблему (ocStore 1.5.5.1.2) просьба отписать, в какую сторону копать, а то самому интересно, где ж оно добавляет...

     

    p.s. Файлы (админку и каталог систем) сравнивал через Araxis Merge - разница фактически не существенна, model_tool_image - так же родная...

  2. В новой версии модификаторы - это укороченный вариант vQmod-а, тут он называется: OCMOD, имеет те же инструкции по XML файлу что и vQmod, кроме:
    ignoreif, log
    а именно:
    Replace, Before, After, Regex, Offset, Limit, Index
    В состав для аплоадера (админка) каталога в сжатом (.zip предположительно) виде, рекомендовано вносить 3-ри файла:

    • install.sql
    • install.php
    • install.xml

    ( Но можно и сам XML подгружать)

     

    Только почему то стоит жосткая проверка на окончание загружаемых файлов:

    if (
       substr($this->request->files['file']['name'], -10) != '.ocmod.zip' 
    && substr($this->request->files['file']['name'], -10) != '.vqmod.zip' 
    && substr($this->request->files['file']['name'], -10) != '.ocmod.xml' 
    && substr($this->request->files['file']['name'], -10) != '.vqmod.xml'
       ) {
    	$json['error'] = $this->language->get('error_filetype');
        }
    

    Так что получается названия загружаемых файлов должны иметь одно из таких окончаний:

    .ocmod.zip

    .vqmod.zip

    .ocmod.xml

    .vqmod.xml

     

    Тоесть структура должна быть примерно такого вида:

    upload_mod_name //Каталог
    -->install.sql  //Файл запросов к базе (на забыть проверить окончание строки на [;]
    -->install.php  //Скрипт выполнения
    -->install.xml  //Файл с инструкциями для модификации
    
    

    Сам же пример XML файла должен выглядеть примерно так:

    <?xml version="1.0" encoding="utf-8"?>
    <modification>
        <name>Modification Default</name>
        <version>1.0</version>
        <author>OpenCart Ltd</author>
        <link>http://www.opencart.com</link>
        <file path="catalog/controller/common/home.php">
            <operation>
                <search><![CDATA[
                $data['column_left'] = $this->load->controller('common/column_left');
                ]]></search>
                <add position="replace"><![CDATA[
                test123
                ]]></add>
            </operation>
        </file>  
    </modification>
    

    Так же есть возможность использовать для одинаковых инструкций при модификации нескольких файлов, делать их декларирование в одной строке:

    <file path="system/{engine,library}/{action,loader,config,language}*.php">
    

    Более подробно по синтаксису описано тут...

     

    P.S. Прикрепил к загрузке нового vQmod-а для 2.0

    opencart-2-0-0-x-vqmod-2-4-1-1.zip

    • +1 2
  3. попробуйте точку заменить нижним подчеркиванием и в базе подправьте и соотв. почистите всё в папке кеш, главное что бы оригинальные названия были адекватными...

  4. Названия фото, каталогов и любых файлов, содержащих кириллицу, пробелы и прочие спецсимволы, кроме цифробуквенных (и несколько допустимых символов) названий на латыни приводит к тому, что при переносе по фтп протоколу они "крякозябрятся", что приводит к невозможности считать менеджером названия и соответственно отобразить в админке.

    Выход:

    1. Сделайте архив на сервере 1 (из которго переносите рисунки) каталога image и распакуйте в точности на сервере 2

    2. Проверьте и исправьте все названия, которые не соответствуют цифробуквенному набору в названиях файлов на латыни.

  5. <!-- *********************************************************************************** -->
    <!-- *** Part of OpenShop project: http://OpenShop.org.ua (c) MaxD                   *** -->
    <!-- *********************************************************************************** -->
    <!-- Redistribution in any form without written permission is prohibited.                -->
    
    <modification>
    	<id><![CDATA[Executes PHP code included into info pages, text blocks, products and categories descriptions]]></id>
    	<version><![CDATA[1.7]]></version>
    	<vqmver><![CDATA[]]></vqmver>
    	<author><![CDATA[MaxD http://OpenShop.org.ua]]></author>
    
        <file name="catalog/view/theme/*/template/information/information.tpl">
    		<operation>
    			<search position="replace"><![CDATA[ echo $description ]]></search>
    			<add><![CDATA[ eval('?>'.$description.'<?php ') ]]></add>
    		</operation>
    	</file>
    
        <file name="catalog/view/theme/*/template/product/product.tpl">
            <operation>
                <search position="replace"><![CDATA[ echo $description ]]></search>
                <add><![CDATA[ eval('?>'.$description.'<?php ') ]]></add>
            </operation>
        </file>
    
        <file name="catalog/view/theme/*/template/product/category.tpl">
            <operation>
                <search position="replace"><![CDATA[ echo $description ]]></search>
                <add><![CDATA[ eval('?>'.$description.'<?php ') ]]></add>
            </operation>
        </file>
    
        <file name="catalog/view/theme/*/template/module/welcome.tpl">
            <operation>
                <search position="replace"><![CDATA[ echo $message ]]></search>
                <add><![CDATA[ eval('?>'.$message.'<?php ') ]]></add>
            </operation>
        </file>
    	
    </modification>
    

    Или же тут выкачать...

  6. Извиняюсь, не так понял код... есть ли ещё мысли про адаптацию под 1.5.4.1?

    Так а что, не работает то что процитировав - поправил ? на скорую руку проверил у себя, выводит норм...

  7.  

    есть модуль похожих товаров, который выдаёт похожие товары по тегам, он абсолютно рабочий, ноработает на версиях не выше 1.5.1.3, нужно адаптировать под 1.5.4.1

    Кусок кода совсем не большой, поэтому привожу тут:

    <modification>
    	<id>Automatic Relate</id>
    	<version>1.0.1</version>
    	<vqmver>2.1</vqmver>
    	<author>Palcet - =^_^=.ru && Baco modificated</author>
    	<file name="catalog/model/catalog/product.php">
    		<operation>
    			<search position="after">
    			<![CDATA[
    			$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_related pr LEFT JOIN " . DB_PREFIX . "product p ON (pr.related_id = p.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pr.product_id = '" . (int)$product_id . "' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'");
    			]]>
    			</search>
    			<add>
    			<![CDATA[	
    			if($query->num_rows==0)
    		{
    			$sql="  select *,p.product_id as related_id  
    			
    			
    			FROM " . DB_PREFIX . "product p
    LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON ( p.product_id = p2s.product_id )
    WHERE p.product_id
    IN (
    SELECT product_id
    FROM " . DB_PREFIX . "product_description
    WHERE tag
    IN (
    SELECT tag
    FROM " . DB_PREFIX . "product_description
    WHERE product_id=".(int)$product_id."))
    			
    			AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "' limit 100";
    			
    			$query = $this->db->query($sql);
    			   
    		}
    			]]>
    			</add>
    		</operation>
    	</file>
    </modification>
    

    Вроде как то так...

  8. Вы конечно извините, но к чему собственно хотели применить в этой строке стиль ?

     

     

    <?php
    if ($category['category_id'] == '1038') {
        echo 'style="color:red;"';
    }
    ?>

    Вам бы почитать может сначала основы, потом с вопросами такими на форум ?!!

  9. Вижу, что все супер :) Непонятно только чем тут bootstrap помешает, если это полностью свой тег options. Зачем column-sm-6?

     

    Я жуть как хочу увидеть реальный пример вреда для унификации из-за bootstrap. Это же творческая задача! Если кто-то придумает хотя бы гипотетический пример, то отпишите, пожалуйста. Я придумал два, но слабенькие.

    Та я так предположил просто, что сегодня я использую класс для селектора option а завтра под 2.0 надо уже будет как то выкручиваться... но это не аргумент во вред или пользу bootstrap и вообще, это не моя кухня, я по коду больше...

  10. Если я правильно понял, то в этом примере для передачи массива name="option" вы используете селектор родительского класса. Зачем? Почему? Это ошибка в логике скрипта, я считаю. Уж если хочется проверить родителя, то это должен быть .product-info, который по сути был зарезервирован для карточки товара. Если bootstrap помешает допускать эту ошибку, то это только в плюс. Только для 2.0 это уже #product т.е. это уже явное резервирование.

    не, я бутстрап пока не юзаю (просто в будущее глянул), по поводу скриптуса, то тут можно глянуть логику что и зачем я так беру..

  11. Ну вставлю свои пару копеек, так как частенько использую "вытяжки" данных при "пост" передачах в аяксе именно по селекторам... то ранее хоть понимание было какое то типа: 

    data: $('.options input[type=\'hidden\'], .options #option-value-'+product_option_value_id),
    

    а теперь получается, что как то в голове записывать данные типа:

    data: $('.column-sm-6 input[type=\'hidden\'], .column-sm-6 #option-value-'+product_option_value_id),
    

    но это такое, никто ведь id (#) не отменял... главное что бы экология в самом коде была, а шаблоны верстать думаю что и без бутстрапа можно, ведь тот факт, что он в дефолте прописан, совсем не значит, что так и должно быть в проектировании ИМ...

  12. Первое и самое основное - создать в файле стилей нужного блока аттрибуты и прикрутить например к какому то id (#), далее - создать контроллер в каталоге catalog\controller\common\column_below_content.php следующего содержания:

    <?php  
    class ControllerCommonColumnBelowContent extends Controller {
    	protected function index() {
    		$this->load->model('design/layout');
    		$this->load->model('catalog/category');
    		$this->load->model('catalog/product');
    		$this->load->model('catalog/information');
    		
    		if (isset($this->request->get['route'])) {
    			$route = (string)$this->request->get['route'];
    		} else {
    			$route = 'common/home';
    		}
    		
    		$layout_id = 0;
    		
    		if ($route == 'product/category' && isset($this->request->get['path'])) {
    			$path = explode('_', (string)$this->request->get['path']);
    				
    			$layout_id = $this->model_catalog_category->getCategoryLayoutId(end($path));			
    		}
    		
    		if ($route == 'product/product' && isset($this->request->get['product_id'])) {
    			$layout_id = $this->model_catalog_product->getProductLayoutId($this->request->get['product_id']);
    		}
    		
    		if ($route == 'information/information' && isset($this->request->get['information_id'])) {
    			$layout_id = $this->model_catalog_information->getInformationLayoutId($this->request->get['information_id']);
    		}
    		
    		if (!$layout_id) {
    			$layout_id = $this->model_design_layout->getLayout($route);
    		}
    				
    		if (!$layout_id) {
    			$layout_id = $this->config->get('config_layout_id');
    		}
    
    		$module_data = array();
    		
    		$this->load->model('setting/extension');
    		
    		$extensions = $this->model_setting_extension->getExtensions('module');		
    		
    		foreach ($extensions as $extension) {
    			$modules = $this->config->get($extension['code'] . '_module');
    			
    			if ($modules) {
    				foreach ($modules as $module) {
    					if ($module['layout_id'] == $layout_id && $module['position'] == 'footer_bottom' && $module['status']) {
    						$module_data[] = array(
    							'code'       => $extension['code'],
    							'setting'    => $module,
    							'sort_order' => $module['sort_order']
    						);				
    					}
    				}
    			}
    		}
    		
    		$sort_order = array(); 
    	  
    		foreach ($module_data as $key => $value) {
          		$sort_order[$key] = $value['sort_order'];
        	}
    		
    		array_multisort($sort_order, SORT_ASC, $module_data);
    		
    		$this->data['modules'] = array();
    		
    		foreach ($module_data as $module) {
    			$module = $this->getChild('module/' . $module['code'], $module['setting']);
    			
    			if ($module) {
    				$this->data['modules'][] = $module;
    			}
    		}
    
    		if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/common/column_below_content.tpl')) {
    			$this->template = $this->config->get('config_template') . '/template/common/column_below_content.tpl';
    		} else {
    			$this->template = 'default/template/common/column_below_content.tpl';
    		}
    								
    		$this->render();
    	}
    }
    ?>
    

    Сам же column_below_content.tpl может содержать приметно такой вывод:

    <?php if ($modules) { ?>
    <div id="column_below_content">
      <?php foreach ($modules as $module) { ?>
      <?php echo $module; ?>
      <?php } ?>
    </div>
    <?php } ?>
    

    ну и на последок - добавить в админке соотв. схему (layout_id)  и всё должно завестись с пол оборота...

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.