0 Пользователей и 1 Гость просматривают эту тему.
  • 20 Ответов
  • 1603 Просмотров
*

voron121

  • Захожу иногда
  • 220
  • 1 / 0
  • Метод тыка и мата помогает в кодинге
Доброго времени суток уважаемые форумчание. Появилась необходимость вывести список статей в форме Joomla. То есть список статей и на против каждой статьи будет чекбокс. Обычно для того что бы вывести данные из бд в списке или в форме я использую тип поля sql . Но запись вот такого типа

Код: php
			<field name="sttour" 
type="sql"
query="SELECT id, title FROM #__сountry"
key_field="title"
value_field="title"
label="COM_TOUR_FORM_STRANA_R">
<option value="">Please select your option</option>
</field>
вернет выпадающий список с данными. Есть ли метод при котором по аналогии с выпадающим списком я бы мог вывести данные с чекбоксами ?
*

saharin88

  • Захожу иногда
  • 291
  • 20 / 1
  • JoomWork
делайте свое поле
checkboxesarticles.php
Код
class JFormFieldCheckboxesArticles extends JFormFieldCheckboxes 
{


}

потом в манифест файле для fieldset укажите addfieldpath="путь к папке гле лежит файл, от корня"

в закладки добавьте типы полей
« Последнее редактирование: 04.07.2016, 20:27:23 от saharin88 »
*

voron121

  • Захожу иногда
  • 220
  • 1 / 0
  • Метод тыка и мата помогает в кодинге
спс, буду пробовать тогда свой класс изобретать ) А не подскажите где можно примеры глянуть по написанию своего типа поля  ^-^? Видел ман на англискойм (на форуме тема поднималась) но с языками у меня не большая трабла и большую часть инфы я просто не понял да и не полностью там рассписанно было что к чему :(
*

saharin88

  • Захожу иногда
  • 291
  • 20 / 1
  • JoomWork
спс, буду пробовать тогда свой класс изобретать ) А не подскажите где можно примеры глянуть по написанию своего типа поля  ^-^? Видел ман на англискойм (на форуме тема поднималась) но с языками у меня не большая трабла и большую часть инфы я просто не понял да и не полностью там рассписанно было что к чему :(
в классе JFormFieldCheckboxes  есть свойство checkedOptions (это как раз массив опций где каждая опция это тоже массив из двух значений с ключами value и text), вам нужно переопределить его, например в конструкторе, посмотрите подробнее сам класс, его методы, свойства и все поймете
*

voron121

  • Захожу иногда
  • 220
  • 1 / 0
  • Метод тыка и мата помогает в кодинге
ок, буду курить доки и пробовать )  спс
*

voron121

  • Захожу иногда
  • 220
  • 1 / 0
  • Метод тыка и мата помогает в кодинге
Нужен хелп .
Следуя рекомендациям на форуме  написал свой класс для чекбоксов. В кратце - форма, в которой будут выводится чекбоксы что то вроде фильтра товаров. В файле с переопределение чекбоксов сл код:

Код: php
<?php 
defined('_JEXEC') or exit;
class JFormFieldCitys extends JFormField {
       protected $type = 'Citys';
      public function getInput() {

      $db = JFactory::getDbo();
      $query = $db->getQuery(true);
      $query->select('*');
      $query->from('#__resort');
      if (JLanguageMultilang::isEnabled()) {
            $query->where('language in (' . $db->quote(JFactory::getLanguage()->getTag()). ',' . $db->quote('*'). ')');
      }

      $db->setQuery($query);
      $citys_list = $db->loadObjectList();
      $var_list ='';
      foreach($citys_list as $citys){
            $var_list.= '<div><input name="'.$this->name.'" type="checkbox" value="'.$citys->title.'">'.$citys->title.'</div>';
      }
      return $var_list;
      }
}



в файле манифесте с формами я описываю чекбоксы сл образом (чуть позже станет ясно почему именно так)

Код: xml
	
<fields name="resort">
<field
name="City"
type="Citys"
label="COM_TOUR_CITYS">
</field>
</fields>

и во вьюхе вывожу следующий код который и отображает чекбоксы

Код: php
<?php foreach ($this->form->getGroup('resort') as $field) : ?>
     <?php echo $field->getControlGroup(); ?>
<?php endforeach; ?>

Что же в итоге: почти то что мне нужно но не совсем. На фронтенде выводятся чекбоксы и они выводят нужные данные. Однако т.к форма представленна как фильтр записей то в условии выборки записей из БД есть вот такой код :

Код: php
if ($formdata['resort'] != NULL) {
  $query->where( 'resort  IN ( ' .  "'" . implode("', '",  $formdata['City']). "'" .' )');
}

То есть мне нужно выбрать записи в которых  resort находится в интервале данных которые мне передает массив из формы. Однако на фронтенде чекбоксы выводятся вот в таком виде

Код: html4strict
<div class="controls">
      <div><input name="jform[resort][City]" type="checkbox" value="дубаи">дубаи</div>

      <div><input name="jform[resort][City]" type="checkbox" value="Куршавель ">Куршавель </div>

      <div><input name="jform[resort][City]" type="checkbox" value="Кириловка">Кириловка</div>

</div>

То есть у чекбоксов нет индекса по типу jform[resort][City1] jform[resort][City2] и так далее , что в принципе логично ведь в манифесте объявлено поле с типом City и таким же именем а все остальные действия производятся в файле с классом.

Собственно вопрос: как мне добавить индекс в массив чекбоксов что бы на фронтенде выводило jform[resort][City1] jform[resort][City2 и так далее  ? Что то совсем в тупик зашел :(


*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Никогда не передавали массив через форму?
Код: php
$var_list.= '<div><input name="'.$this->name.'[]" type="checkbox" value="'.$citys->title.'">'.$citys->title.'</div>';
интернет-блог: http://websiteprog.ru
*

voron121

  • Захожу иногда
  • 220
  • 1 / 0
  • Метод тыка и мата помогает в кодинге
Никогда не передавали массив через форму?
Код: php
$var_list.= '<div><input name="'.$this->name.'[]" type="checkbox" value="'.$citys->title.'">'.$citys->title.'</div>';

Честно говоря нет :(.
Спасибо, вот и был мой тупняк ) Помогло :) Вроде бы теперь все оки  :D
« Последнее редактирование: 13.07.2016, 01:09:29 от voron121 »
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Дальше я надеюсь вы уже сами додумаетесь? ну и славненько  ;)
интернет-блог: http://websiteprog.ru
*

voron121

  • Захожу иногда
  • 220
  • 1 / 0
  • Метод тыка и мата помогает в кодинге
Дальше я надеюсь вы уже сами додумаетесь?

Нуууу как бы надеялся но пока хз - в print_r массив есть, а вот в запросе в БД в моделе что то не так - вместо диапозона значений просто пробел 

Код: php
[resort] => Array ( [City] => Array ( [0] => дубаи [1] => Куршавель [2] => Кириловка ) ) )
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Цитировать
вместо диапозона значений просто пробел

Нет там никаких диапозонов. Не выражайтесь так, это сбивает с толку реально.

Код: php
$query->where( 'resort  IN ( ' .  "'" . implode("', '",  $formdata['resort']['City']). "'" .' )');


Так не работает чтоли?

Кстатии у вас в коде потенциальная sql иньекция. Вы внутри массива кавычки не экранируете. Еще одним дырявым компонентом станет больше  :laugh:?
« Последнее редактирование: 13.07.2016, 01:30:46 от zomby6888 »
интернет-блог: http://websiteprog.ru
*

voron121

  • Захожу иногда
  • 220
  • 1 / 0
  • Метод тыка и мата помогает в кодинге
Нет там никаких диапозонов. Не выражайтесь так, это сбивает с толку реально.

Код: php
$query->where( 'resort  IN ( ' .  "'" . implode("', '",  $formdata['resort']['City']). "'" .' )');


Так не работает чтоли?

Кстатии у вас в коде потенциальная sql иньекция. Вы внутри массива кавычки не экранируете


все работает. только что разобрался. я, по не внимательности, изначально пытался вложить  чекбоксы в массив resort и в итоге, после внесения правок у меня получился трех уровневый массив. Исправил манифест - все оки :)

За кавычки - да, есть такое, пока что не добрел до них т.к работы много, работа для меня немного (да что уж тут скрывать - ох как много) не знакомая в плане создания компонента с нуля, по этому сначала хочу написать работающий  прототип, который уже после буду доводить до идеала, если есесн получится :)
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Вы только не торопитесь прототип на JED выкладывать а то у Joomla расширений и так репутация не айс)
интернет-блог: http://websiteprog.ru
*

voron121

  • Захожу иногда
  • 220
  • 1 / 0
  • Метод тыка и мата помогает в кодинге
Вы только не торопитесь прототип на JED выкладывать а то у Joomla расширений и так репутация не айс)

не не не - это  врятли пойдет в мир ... думал конечно написать компонент, потом его выставить на тест, потом начать его продавать, заработать кучу денег и уехать отдыхать на моря :) (Joke) но нет - это только для 1 проекта + думаю  у Joomla и так много аналогов моего компонента + он не совершенен и еще куча минусов что бы его не выпускать в мир :)

А на счет репутации - вы знаете, видел множество работ на "CMS всея рунета Wordpress "  - то ли криворукие мне попадались, хотя я сам не ТЫЖ программист, то ли оно так и есть, но такой бред честно говоря . Как только пытаются выйти за пределы блога на WP  - все..., просто  большая Ж а не проект.  При чем и на самописах часто тоже  такое встречал . А вот Joomla, с моей точки зрения, весьма недооцененная CMS . Ей бы еще систему мультиязычности (в плане наполнения в бекенде) как у опенкарт - цены бы не было :)
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Цитировать
не не не - это  врятли пойдет в мир ... думал конечно написать компонент, потом его выставить на тест, потом начать его продавать, заработать кучу денег и уехать отдыхать на моря Azn (Joke) но нет - это только для 1 проекта + думаю  у Joomla и так много аналогов моего компонента + он не совершенен и еще куча минусов что бы его не выпускать в мир Azn

Ну в перспективе то вы можете стать вполне успешным разработчиком расширений. Лично мне ваша самокритичность нравится. Если приложить к этому упрямство и желание развиваться то можно и на морях отдыхать и работать)

Цитировать
А на счет репутации - вы знаете, видел множество работ на "CMS всея рунета Wordpress "  - то ли криворукие мне попадались, хотя я сам не ТЫЖ программист, то ли оно так и есть, но такой бред честно говоря . Как только пытаются выйти за пределы блога на WP  - все..., просто  большая Ж а не проект.  При чем и на самописах часто тоже  такое встречал . А вот Joomla, с моей точки зрения, весьма недооцененная CMS . Ей бы еще систему мультиязычности (в плане наполнения в бекенде) как у опенкарт - цены бы не было Azn

Не могу не согласится. Качество кода никак не зависит от платформы на котором он написан.
интернет-блог: http://websiteprog.ru
*

voron121

  • Захожу иногда
  • 220
  • 1 / 0
  • Метод тыка и мата помогает в кодинге
Цитировать
Ну в перспективе то вы можете стать вполне успешным разработчиком расширений. Лично мне ваша самокритичность нравится. Если приложить к этому упрямство и желание развиваться то можно и на морях отдыхать и работать)

Возможно, но у меня серьезнейшие пробелы в базовых знания, исправить которые не дает моя лень, вечная не хватка времени и не знания английского (никогда бы не подумал что в наше время, когда почти все есть на русском, буду чувствовать себя  не комфортно без знания английского :) ). Ну да ладно, это лирика, главное что теперь я умею писать свои классы для полей в Joomla :) Теперь я на одну ступеньку ближе к ТЫЖ программист :)
*

SmokerMan

  • Гуру
  • 5293
  • 720 / 26
А на счет репутации - вы знаете, видел множество работ на "CMS всея рунета Wordpress "  - то ли криворукие мне попадались, хотя я сам не ТЫЖ программист, то ли оно так и есть, но такой бред честно говоря . Как только пытаются выйти за пределы блога на WP  - все..., просто  большая Ж а не проект.  При чем и на самописах часто тоже  такое встречал . А вот Joomla, с моей точки зрения, весьма недооцененная CMS . Ей бы еще систему мультиязычности (в плане наполнения в бекенде) как у опенкарт - цены бы не было :)
на счет вашего вопроса, честно сказать он никак не относится ни к любой системе, т.к. это тупо основы)
на счет "мультиязычности" как вы выразились, Joomla так же как и другие системы этим обладает изначально, возможно тут есть место в вашей ограниченной знакомством с той или иной системой
*

voron121

  • Захожу иногда
  • 220
  • 1 / 0
  • Метод тыка и мата помогает в кодинге
Цитировать
возможно тут есть место в вашей ограниченной знакомством с той или иной системой

Ну может и так, хотя здесь с вами поспорю. Возможно я не совсем так выразился. В  Joomla есть мультиязычность, но  работать с мультиязычным сайтом на Joomla , если есть более 2-ух языков и много контента весьма проблематично. Проблематично в каком плане - к примеру в Opencart при редактировании товара или какой-либо иной записи у меня просто на 1 странице есть вкладки для наполнения информацией на том или ином языке (примерно так же и на WP). В Joomla? если брать из коробки, необходимо дублировать весь контент для каждого языка отдельно. Это в каком то плане удобнее, но с другой стороны, если на сайте 3 - 4 или олее языков, вызывает некоторые трудности в наполнении сайта .
*

SmokerMan

  • Гуру
  • 5293
  • 720 / 26
Проблематично в каком плане - к примеру в Opencart при редактировании товара или какой-либо иной записи у меня просто на 1 странице есть вкладки для наполнения информацией на том или ином языке (примерно так же и на WP). В Joomla? если брать из коробки, необходимо дублировать весь контент для каждого языка отдельно. Это в каком то плане удобнее, но с другой стороны, если на сайте 3 - 4 или олее языков, вызывает некоторые трудности в наполнении сайта .
я не совсем понял)
контент и так должен быть разным в чем проблемы то?
*

voron121

  • Захожу иногда
  • 220
  • 1 / 0
  • Метод тыка и мата помогает в кодинге
Цитировать
контент и так должен быть разным в чем проблемы то?

В юзабилити :)

Смотрите, если я пишу статью или добавляю новый пункт меню на сайте под упралением Joomla и на этом сайте к примеру 5 языков, то по сути мне нужно создать 5 пунктов меню, 5 статей или 5 других элементов для каждого языка. То есть на 1 действие  "создать статью" я делаю 5 действий для каждого языка.

 При работе с opencart (к примеру, не только в опенкарт есть такой подход) я просто 1 раз открываю страницу с редактированием материала и у меня есть 5 вкладок для каждого языка. То есть я получается раз открыл страницу, заполнил контент, для каждого языка в своей вкладке, и нажал "сохранить". При этом в БД opencart есть 2 таблицы (чаще их больше, просто для примера 2 берем ) :  product и product_description . В первой таблице хранятся данные, которые для всех языков одинаковы, на примере опенкарт это цена или артикуль, то есть то что не стоит переводить. А во второй таблице, product_description хранится текстовая информация для каждого языка, которая привязана по ид товара (ид товара хранится в таблице product) и просто подгружается при редактировании товара в админке.

То есть как бы удобнее для работы с мультиязычным сайтом  :) Но опять таки это лично мое мнение, и оно может не каждому подойти или понравиться :) 
*

SmokerMan

  • Гуру
  • 5293
  • 720 / 26
ну если вы в пример привели opencart, то по моему в том же джумшопинге и вирте  вроде так и сделано
суть конечно понятна, но я думаю это не делается по одной простой причине - в большинстве своем сайты делаются на 1 языке)
для такого удобства это можно сделать дополнениями, что я думаю вполне реализуемо, может даже они уже и есть)
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Шорткоды baforms в кастомном компоненте

Автор oxbeat

Ответов: 2
Просмотров: 276
Последний ответ 20.02.2024, 00:41:29
от oxbeat
Вывод дополнительного поля материала в модуле

Автор timofe

Ответов: 10
Просмотров: 1513
Последний ответ 06.10.2023, 14:02:24
от Mitriy
Вывести поля профиля Joomla

Автор romagromov

Ответов: 9
Просмотров: 600
Последний ответ 09.12.2022, 08:43:08
от sivers
Блок особенностей, как добавить в поле с информацией кнопку или ссылку Подробнее

Автор Alex from SPb

Ответов: 5
Просмотров: 331
Последний ответ 28.11.2022, 19:54:42
от marksetter
Добавление поля в форму регистрации

Автор Robert24

Ответов: 3
Просмотров: 444
Последний ответ 10.10.2022, 23:35:04
от Robert24