Форум русской поддержки Joomla!® CMS
04.12.2016, 10:12:22 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1] 2  Все   Вниз
  Добавить закладку  |  Печать  
Автор

Добавление поля с редактором (подробного описания description1)

 (Прочитано 1689 раз)
0 Пользователей и 1 Гость смотрят эту тему.
McCafferty
Осваиваюсь на форуме
***

Репутация: +3/-0
Offline Offline

Сообщений: 58


« : 10.12.2013, 16:27:11 »

Перешел на JoomShopping, все понравилось много всего, но не хватало дополнительных полей, согласно инструкции (автор не я) все сделал, все супер работает, добавил сразу несколько полей, а вот как вывести эти новые поля корзине ? кто подскажет?

Инструкция как вывести поле в карточке товара:

Добавление поля с редактором (подробного описания description1)

1) Добавление формы редактирования в админке:
administrator\components\com_jshopping\views\product_edit\tmpl\description.php
(добавляем строки после аналогичных для существующего поля)

Код:
   $description1 = "description1_".$lang->language;

Код:
<tr>
    <td  class="key">Дополнительное поле:</td>
    <td>
        <?php
           $editor1 = &JFactory::getEditor();
           print $editor1->display('description1'.$lang->id,  
              $row->$description1 , '100%', '350', '75', '20');
        ?>
    </td>
</tr>
После вставки в админке на странице редактирования товара должно появиться поле, но вводимые в него данные сохраняться не будут, т.к. необходимо добавить еще поля в БД и контроллер, который будет согласовывать их согласовывать.

2) Добавление контроллера для формы в админке:
administrator\components\com_jshopping\controllers\products.php

Код:
$post['description1_'.$lang->language] =
    JRequest::getVar('description1'.$lang->id,'','post',"string", 2);


3) Добавление полей в базу данных
Заходим с помощью phpMyAdmin в таблицу _jshopping_products базы данных, выбираем вкладку «Структура». В зависимости от количества языков на сайте добавляем одно или несколько полей с нужным нам названием.



После данных манипуляций наше поле в админке должно успешно сохраняться.
Теперь необходимо вывести его, например, в шаблон карточки товара.

4) Получение значения поля
Открываем файл \components\com_jshopping\tables\product.php, находим функцию getDescription() и добавляем строки:

Код:
$description1 = $lang->get('description1');

и

Код:
$this->description1 = $this->$description1;


5) Вывод поля в шаблон
В шаблон карточки товара \components\com_jshopping\templates\default\product\product_default.php в необходимом месте прописываем:

Код:
<?php print $this->product->description1; ?>

кстати в FAQе не хватает ее Azn
« Последнее редактирование: 10.12.2013, 16:31:02 от McCafferty » Записан
McCafferty
Осваиваюсь на форуме
***

Репутация: +3/-0
Offline Offline

Сообщений: 58


« Ответ #1 : 10.12.2013, 17:38:58 »

Ладно сам нашел решение как вывести в корзине, вдруг кому пригодится
Код:
<?php
$product = &JTable::getInstance('product', 'jshop');

$product->load($prod['product_id']);

$product->getDescription();

print trim($product->description1);?>
« Последнее редактирование: 08.01.2014, 20:37:32 от McCafferty » Записан
koshsh
Давно я тут
****

Репутация: +8/-0
Offline Offline

Пол: Мужской
Сообщений: 275



« Ответ #2 : 08.01.2014, 19:30:27 »

Спасибо! как раз то что надо, сделал все по шагам и заработало  drink

--------------------------------------

решил добавить дополнительное поле для категории, столкнулся с проблемой, в базу все сохраняется, но вывести не получается.
Пробовал выводить так:
<?php print $this->new_field; ?>
<?php print $this->category->new_field; ?>
Но эффеккта никакого...
« Последнее редактирование: 27.02.2014, 19:45:23 от koshsh » Записан
koshsh
Давно я тут
****

Репутация: +8/-0
Offline Offline

Пол: Мужской
Сообщений: 275



« Ответ #3 : 02.03.2014, 18:36:21 »

1) В файл /administrator/components/com_jshopping/views/category/tmp/edit.php добавил это:
Код:
$urlwebsite = "urlwebsite_".$lang->language;
      <tr>
        <td  class="key">
           Адрес проекта (Пример www.website.ru):
         </td>
         <td>
           <textarea name = "<?php print $urlwebsite;?>" cols = "50" rows="1"><?php echo $row->$urlwebsite ?></textarea>
         </td>
       </tr>

2) В файл /administrator/components/com_jshopping/controllers/categories.php  добавил это:
Код:
$post['urlwebsite_'.$lang->language] = JRequest::getVar('urlwebsite_'.$lang->language,'','post',"string", 2);

3) добавил поля в базу (проверил из админки все сохраняется)

4) В файл /components/com_jshopping/tables/category.php там где getDescription() добавил это:
Код:
$urlwebsite = $lang->get('urlwebsite'); 
и это:
$this->urlwebsite = $this->$urlwebsite;

5) пытаюсь вывести поле, но не получается, ничего не выводит, подскажите пожалуйста что я делаю не так?


Записан
dmitry_stas
Профи
********

Репутация: +794/-4
Offline Offline

Сообщений: 7738



« Ответ #4 : 02.03.2014, 19:07:30 »

1. непонятно, зачем website для разных языков - свое поле? одного urlwebsite мало?
2. лишнее
4. см. по пункту 1.
5. в выборке товаров из базы нет вашего нового поля. потому что выбирается только то, что указано в \components\com_jshopping\lib\jtableauto.php function getBuildQueryListProductDefaultResult
Записан
koshsh
Давно я тут
****

Репутация: +8/-0
Offline Offline

Пол: Мужской
Сообщений: 275



« Ответ #5 : 03.03.2014, 11:17:15 »

Спасибо за ответ dmitry_stas

Цитировать
5. в выборке товаров из базы нет вашего нового поля. потому что выбирается только то, что указано в \components\com_jshopping\lib\jtableauto.php function getBuildQueryListProductDefaultResult
Вы меня немного не поняли, описанный способ отлично работает для товаров и без вмешательства в другие файлы компонента, но я создаю новое поле для категорий и хочу вывести его в списке категорий, но не получается...

не увидел в приведенном вами файле связи с категориями
Записан
dmitry_stas
Профи
********

Репутация: +794/-4
Offline Offline

Сообщений: 7738



« Ответ #6 : 03.03.2014, 11:29:28 »

Вы меня немного не поняли

прекрасно вас понял

не увидел в приведенном вами файле связи с категориями

это прыскорбно Azn а с учетом того, что в указанной функции всего то 3 строки, так еще и странно Azn даже не знаю что тут сказать, надо наверное еще раз прочесть п.5, и еще раз посмотреть то, что возвращает функция
Записан
koshsh
Давно я тут
****

Репутация: +8/-0
Offline Offline

Пол: Мужской
Сообщений: 275



« Ответ #7 : 03.03.2014, 12:53:00 »

Читаю 5 пункт снова ) и вставляю  cat.`".$lang->get('urlwebsite')."` as urlwebsite в список того что возвращает функция, однако ничего не выводится а на фронте появляются ошибки:
Код:
Warning: Invalid argument supplied for foreach() in /components/com_jshopping/lib/functions.php on line 657
Warning: Invalid argument supplied for foreach() in /components/com_jshopping/lib/functions.php on line 427

Записан
dmitry_stas
Профи
********

Репутация: +794/-4
Offline Offline

Сообщений: 7738



« Ответ #8 : 03.03.2014, 13:33:24 »

вы для чего поле urlwebsite создали? для категории чтоли? оно у вас для товара создано, причем тут cat ?
Записан
koshsh
Давно я тут
****

Репутация: +8/-0
Offline Offline

Пол: Мужской
Сообщений: 275



« Ответ #9 : 03.03.2014, 17:54:41 »

Цитировать
вы для чего поле urlwebsite создали? для категории чтоли? оно у вас для товара создано, причем тут cat ?

Да именнно для категорий а не для товаров
Записан
dmitry_stas
Профи
********

Репутация: +794/-4
Offline Offline

Сообщений: 7738



« Ответ #10 : 03.03.2014, 18:06:37 »

тьфу ты... перечитал еще раз...
Вы меня немного не поняли
получается что таки да, не понял. теперь это вдвойне прыскорбно Azn

Цитировать
пытаюсь вывести поле, но не получается, ничего не выводит
как именно и где именно выводите?
Записан
koshsh
Давно я тут
****

Репутация: +8/-0
Offline Offline

Пол: Мужской
Сообщений: 275



« Ответ #11 : 03.03.2014, 18:45:13 »

Я создаю новое поле для категорий и хочу вывести его в списке категорий, но не получается...

тут:
/components/com_jshopping/templates/default_div/category/category_default.php


<?php print $this->urlwebsite; ?>
<?php print $this->category->urlwebsite; ?>
<?php print $category->urlwebsite; ?>
<?php print $this->product->urlwebsite; ?>
ничего не работает



Записан
dmitry_stas
Профи
********

Репутация: +794/-4
Offline Offline

Сообщений: 7738



« Ответ #12 : 03.03.2014, 18:57:42 »

где именно вы пытаетесь это вывести - для текущей категории, или же в цикле для подкатегорий?
Записан
koshsh
Давно я тут
****

Репутация: +8/-0
Offline Offline

Пол: Мужской
Сообщений: 275



« Ответ #13 : 03.03.2014, 19:48:59 »

Да, нужно вывести в цикле для подкатегорий, после этого кода:
<?php foreach($this->categories as $k=>$category){?>


Записан
dmitry_stas
Профи
********

Репутация: +794/-4
Offline Offline

Сообщений: 7738



« Ответ #14 : 03.03.2014, 19:50:06 »

\components\com_jshopping\tables\category.php function getSubCategories

добавьте в запрос ваше поле
Записан
koshsh
Давно я тут
****

Репутация: +8/-0
Offline Offline

Пол: Мужской
Сообщений: 275



« Ответ #15 : 03.03.2014, 20:01:45 »

Плюсанул! вопрос решен, все выводится, спасибо
Записан
McCafferty
Осваиваюсь на форуме
***

Репутация: +3/-0
Offline Offline

Сообщений: 58


« Ответ #16 : 11.04.2014, 15:10:08 »

Согласно данной темы можно не только поле с редактором добавить но и различные элементы формы.
С input text все отлично работает, сохраняется, а вот с селектами, чекбоксами как быть ? На каком шаге что править чтобы

На шаге один вставил
Код:
       <tr>
    <td  class="key">Халява:</td>
    <td>
            <input type="checkbox" name = "<?php echo $fealdsss?>" value = "<?php echo $row->$fealdsss?>" class = "inputbox" id="RadioGroup1_0">
            Сборка:Бесплатно!
          <br>
         
            <input type="checkbox" name = "<?php echo $fealdsss?>" value = "<?php echo $row->$fealdsss?>" class = "inputbox" id="RadioGroup1_1">
            Доставка:Бесплатно!
          <br>

    </td>
</tr>
остальное все тоже как и там... но не сохраняет.. Если вставить type="text"  то все сохраняет.
Подскажите как передать значение полей
Записан
dmitry_stas
Профи
********

Репутация: +794/-4
Offline Offline

Сообщений: 7738



« Ответ #17 : 11.04.2014, 17:23:28 »

нет никакой принципиальной разницы какой тип имеет инпут. другой вопрос - что у вас в value? посмотрите как устроена логика работы input type="checkbox"
Записан
McCafferty
Осваиваюсь на форуме
***

Репутация: +3/-0
Offline Offline

Сообщений: 58


« Ответ #18 : 11.04.2014, 17:44:50 »

я уже по всякому попробовал и в value подставлял то что надо передавать.. чекбокс не сохраняет галочку, соответсвенно ничего не передается
Записан
dmitry_stas
Профи
********

Репутация: +794/-4
Offline Offline

Сообщений: 7738



« Ответ #19 : 11.04.2014, 17:55:00 »

видимо не по всякому. вам что то говорит
Код
checked
?

посмотрите как устроена логика работы input type="checkbox"
Записан
McCafferty
Осваиваюсь на форуме
***

Репутация: +3/-0
Offline Offline

Сообщений: 58


« Ответ #20 : 11.04.2014, 18:41:38 »

видимо не по всякому. вам что то говорит
Код
checked
?
конечно, только смысл постановки его ? чтобы автоматом ставилась галочка ? пробовал, галочка стоит, в базе пусто.
если имеете ввиду в контроллере гдето писать, то я не программист и поэтому спрашиваю помощи
Записан
dmitry_stas
Профи
********

Репутация: +794/-4
Offline Offline

Сообщений: 7738



« Ответ #21 : 11.04.2014, 19:04:26 »

ну как мне вам еще помочь? я же все уже вроде сказал

нет никакой принципиальной разницы какой тип имеет инпут.

хоть текст, хоть селект, хоть радио и т.п. если инпут написан верно, то все сохраняется без каких либо дополнительных движений в контроллере.
Записан
McCafferty
Осваиваюсь на форуме
***

Репутация: +3/-0
Offline Offline

Сообщений: 58


« Ответ #22 : 11.04.2014, 20:48:30 »

Тогда вопрос, как правильно прописать, что я не так написал ?)
Записан
dmitry_stas
Профи
********

Репутация: +794/-4
Offline Offline

Сообщений: 7738



« Ответ #23 : 11.04.2014, 21:07:16 »

откуда кто знает, если вы показываете кусок, а вся картина только вам видна?

что у вас в value?

что кроме вывода инпута сделано?
Записан
McCafferty
Осваиваюсь на форуме
***

Репутация: +3/-0
Offline Offline

Сообщений: 58


« Ответ #24 : 11.04.2014, 21:18:08 »

Остальное все как в 1 посте, заменил только description1 на fealdsss и  редактор
Показать текстовый блок

на
Код:
<input type="checkbox" name = "<?php echo $fealdsss?>" value = "<?php echo $row->$fealdsss?>" class = "inputbox">
            Сборка:Бесплатно!

Образец взял от других полей типа
Код:
<input type = "text" class = "inputbox" size = "80" name = "<?php echo $name?>" value = "<?php echo $row->$name?>" />
Записан
dmitry_stas
Профи
********

Репутация: +794/-4
Offline Offline

Сообщений: 7738



« Ответ #25 : 11.04.2014, 21:20:23 »

что содержит переменная $fealdsss ? вот вы ее выводите

Код
<?php echo $fealdsss?>

вы ее где то до этого определяете?
Записан
McCafferty
Осваиваюсь на форуме
***

Репутация: +3/-0
Offline Offline

Сообщений: 58


« Ответ #26 : 11.04.2014, 21:26:00 »

что содержит переменная $fealdsss ? вот вы ее выводите

Код
<?php echo $fealdsss?>

вы ее где то до этого определяете?

Да чуть выше
Код:
$fealdsss = "fealdsss_".$lang->language;
Записан
dmitry_stas
Профи
********

Репутация: +794/-4
Offline Offline

Сообщений: 7738



« Ответ #27 : 11.04.2014, 21:54:16 »

и какой при этом name у инпута? какой столбец в базе создан? вы можете написать все сразу?
Записан
McCafferty
Осваиваюсь на форуме
***

Репутация: +3/-0
Offline Offline

Сообщений: 58


« Ответ #28 : 12.04.2014, 12:48:10 »

и какой при этом name у инпута? какой столбец в базе создан? вы можете написать все сразу?

1) administrator\components\com_jshopping\views\product_edit\tmpl\description.php
Код:
$fealdsss = "fealdsss_".$lang->language;

Код:
<tr>
    <td  class="key">Дополнительное поле:</td>
    <td>
<input type="checkbox" name = "<?php echo $fealdsss?>" value = "<?php echo $row->$fealdsss?>" class = "inputbox">
            Сборка:Бесплатно!
    </td>
</tr>

2) administrator\components\com_jshopping\controllers\products.php
Код:
$post['fealdsss_'.$lang->language] =
    JRequest::getVar('fealdsss'.$lang->id,'','post',"string", 2);


3)  в таблице MySQL  _jshopping_products добавлена строчка "fealdsss_ru-RU"


4)  \components\com_jshopping\tables\product.php
Код:
$fealdsss = $lang->get('fealdsss');

Код:
$this->fealdsss = $this->$fealdsss;


5)  \components\com_jshopping\templates\default\product\product_default.php
Код:
<?php print $this->product->fealdsss; ?>

Вроде все
Записан
dmitry_stas
Профи
********

Репутация: +794/-4
Offline Offline

Сообщений: 7738



« Ответ #29 : 12.04.2014, 13:05:26 »

1. Вы понимаете как работает checkbox? Что должно быть в value? В примере - если отмечен запишется 1
Код
<input type="checkbox" name = "<?php echo $fealdsss?>" value = "1" class = "inputbox" <?php if ($row->$fealdsss) echo 'checked="checked"'?> />

2 - Лишнее. Удалите. Вместо этого нужно

Код
if (!isset($post['fealdsss_'.$lang->language])) $post['fealdsss_'.$lang->language] = 0;
соответственно, если не отмечен - запишется 0
« Последнее редактирование: 12.04.2014, 13:19:07 от dmitry_stas » Записан
Страниц: [1] 2  Все   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet