Вытащить значение элемента, ZOO 3.x

  • 19 Ответов
  • 2868 Просмотров

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

*

Оффлайн eragon

Хочу поправить вывод title материала, добавить в него значение одного из поля, для этого правим файлик /components/com_zoo/controllers/default.php, а именно функцию item(), где он и задается.

Чтобы вытащить содержимого некого элемента используем $this->item->getElement('elementID');, но вот досада, полученное содержимое имеет не понятный тип данных, объект?

Как его обработать, чтобы корректно можно было получить содержимое нашего элемента?


------------------------------------
Например на странице в руководстве Accessing element data написано, что есть функция public function get($name, $default = null);, но вызвать ее не удается, функция в функции.

*

Оффлайн MetaSpirit

  • ******
  • 1383
  • [+]106 / [-]0
  • Пол: Мужской
  • R.A.S.Lab[.org]
    • Просмотр профиля
    • R.A.S.Lab[.org]
Re: Вытащить значение элемента, ZOO 3.x
« Ответ #1 : 12.01.2013, 23:09:45 »
Код: (php) [Выделить]
$elm = $this->item->getElement('elementID');
$value = $elm->get('value');
P.S. 'value' значение, которое нужно вытащить
R.A.S.Lab[.org]: ZOOvirtue - корзина для ZOO, Яндекс.Карты для ZOO, ItemPanes - табы для ZOO, ZOOlendar - календарь для ZOO  и др.
Создание расширений для YOOtheme ZOO на заказ. Становитесь в очередь.

*

Оффлайн eragon

Re: Вытащить значение элемента, ZOO 3.x
« Ответ #2 : 12.01.2013, 23:55:47 »
Код: (php) [Выделить]
$elm = $this->item->getElement('elementID');
$value = $elm->get('value');
P.S. 'value' значение, которое нужно вытащить
Спасибо, работает :)

*

Оффлайн verstalshik

Re: Вытащить значение элемента, ZOO 3.x
« Ответ #3 : 28.03.2013, 00:53:19 »
как сам код оформили, не подскажете?
❶ НЕ СПРАВЛЯЕШЬСЯ САМ???  Поможем тут...  ❷ Калькулятор доставки - ЗАКАЖИ!!!...  ❸ Каталог компаний - ЖМИ!!!...  ❹ НОВИЧКИ! ВСЕ сюда! Первая консультация БЕСПЛАТНО!!

*

Оффлайн verstalshik

Re: Вытащить значение элемента, ZOO 3.x
« Ответ #4 : 30.03.2013, 20:03:25 »
вот слепил конструкцию, чтобы для разных языков разные титлы были, вроде пашет, что тут упростить можно, МАСТЕРА?
$elm = $this->item->getElement('8d9059a6-b3b4-4e79-ad5c-ef609d65aee8');
$value = $elm->get('value');
$elm = $this->item->getElement('ed392eab-3a51-4a70-b9a4-ba2a9917346b');
$value2 = $elm->get('value');
$document = & JFactory::getDocument();
$curlang = $document->language;
if ($curlang == "ru-ru")
$title = $this->item->name;
if ($curlang == "en-gb")
$title = $value;
if ($curlang == "es-es")
$title = $value2;
❶ НЕ СПРАВЛЯЕШЬСЯ САМ???  Поможем тут...  ❷ Калькулятор доставки - ЗАКАЖИ!!!...  ❸ Каталог компаний - ЖМИ!!!...  ❹ НОВИЧКИ! ВСЕ сюда! Первая консультация БЕСПЛАТНО!!

*

Оффлайн MetaSpirit

  • ******
  • 1383
  • [+]106 / [-]0
  • Пол: Мужской
  • R.A.S.Lab[.org]
    • Просмотр профиля
    • R.A.S.Lab[.org]
Re: Вытащить значение элемента, ZOO 3.x
« Ответ #5 : 31.03.2013, 21:12:56 »
Как вариант:
Код: (php) [Выделить]
$document = & JFactory::getDocument();
$curlang = strtolower($document->language);
if ($curlang == "ru-ru") {
$title = $this->item->name;
} elseif ($curlang == "en-gb") {
$title = $this->item->getElement('8d9059a6-b3b4-4e79-ad5c-ef609d65aee8')->get('value');
} elseif ($curlang == "es-es") {
$title = $this->item->getElement('ed392eab-3a51-4a70-b9a4-ba2a9917346b')->get('value');
}
R.A.S.Lab[.org]: ZOOvirtue - корзина для ZOO, Яндекс.Карты для ZOO, ItemPanes - табы для ZOO, ZOOlendar - календарь для ZOO  и др.
Создание расширений для YOOtheme ZOO на заказ. Становитесь в очередь.

*

Оффлайн verstalshik

Re: Вытащить значение элемента, ZOO 3.x
« Ответ #6 : 31.03.2013, 23:25:31 »
класс, так тоже работает!! кода меньше - клиенту приятнее!!)))
СПС, Метаспирит! очередной раз убеждаюсь в вашем профессионализме!
интересно, ваш код меньше запросов делает? по идее, мой код сначала эти value готовит, потом отдает, а у вас как бы на лету все...
❶ НЕ СПРАВЛЯЕШЬСЯ САМ???  Поможем тут...  ❷ Калькулятор доставки - ЗАКАЖИ!!!...  ❸ Каталог компаний - ЖМИ!!!...  ❹ НОВИЧКИ! ВСЕ сюда! Первая консультация БЕСПЛАТНО!!

Re: Вытащить значение элемента, ZOO 3.x
« Ответ #7 : 27.12.2013, 08:01:45 »
Как вариант:
Код: (php) [Выделить]
$document = & JFactory::getDocument();
$curlang = strtolower($document->language);
if ($curlang == "ru-ru") {
$title = $this->item->name;
} elseif ($curlang == "en-gb") {
$title = $this->item->getElement('8d9059a6-b3b4-4e79-ad5c-ef609d65aee8')->get('value');
} elseif ($curlang == "es-es") {
$title = $this->item->getElement('ed392eab-3a51-4a70-b9a4-ba2a9917346b')->get('value');
}

доброго времени суток, могли бы Вы мне пояснить куда именно вписывать этот код на странице /components/com_zoo/controllers/default.php? я нашел часть кода с комментарием // get page title, if exists, но я не очень силен в PHP (((
уже перепробовал все что в голову приходило, но у меня не выходит ничего (((
Мне нужно чтобы в Тайтле, к Имени страници (Итема), дописывались значения опций из элемента Select (которые в нем выбраны)

примерно так --- Зд модель Телевизора(это Имя) - *.маx, *.c4d, *.3ds, (это опции Селекта)

заранее благодарен за любую помощь
« Последнее редактирование: 27.12.2013, 08:05:41 от GrandKain801s »

*

Оффлайн MetaSpirit

  • ******
  • 1383
  • [+]106 / [-]0
  • Пол: Мужской
  • R.A.S.Lab[.org]
    • Просмотр профиля
    • R.A.S.Lab[.org]
Re: Вытащить значение элемента, ZOO 3.x
« Ответ #8 : 27.12.2013, 13:59:45 »
В шаблон айтема вставьте
R.A.S.Lab[.org]: ZOOvirtue - корзина для ZOO, Яндекс.Карты для ZOO, ItemPanes - табы для ZOO, ZOOlendar - календарь для ZOO  и др.
Создание расширений для YOOtheme ZOO на заказ. Становитесь в очередь.

Re: Вытащить значение элемента, ZOO 3.x
« Ответ #9 : 27.12.2013, 16:15:59 »
В шаблон айтема вставьте

если я правильно понял, то шаблон находится
/media/zoo/applications/product/templates/default/item.php ?
но результата не получил

есть другое, я вот на нашел - такой код и попробовал его вставить в выше указаный файл
$document =& JFactory::getDocument();
if ($category = $this->item->getPrimaryCategory()){
     $document->setTitle($this->item->name.' - '.$this->item->getElement('76d6096d-4152-4f61-a0da-036a6436f9ab')->get('value'));
}

в итоге получил тайтле Имя - (пустое место) где по сути должны были бы быть мои значения, и вообще есть ли смысл в этом
мне кажется есть, потому что если вписать в конце вместо ->get('value') к примеру ->config->get('name')
то получаю Имя (Айтема) - Формат (это имя Селекта данное ему мной)
значит, я считаю что тут если подобное срабатывает, значит направление верное (вроде бы), но вот как его довести?

прошу прощение, если мое предположение окажется полной ересью ))

*

Оффлайн MetaSpirit

  • ******
  • 1383
  • [+]106 / [-]0
  • Пол: Мужской
  • R.A.S.Lab[.org]
    • Просмотр профиля
    • R.A.S.Lab[.org]
Re: Вытащить значение элемента, ZOO 3.x
« Ответ #10 : 27.12.2013, 17:30:00 »
То что было описано, а именно ->get('value'), относится к полю текста, у селекта другой формат, посмотрите сам элемент.
R.A.S.Lab[.org]: ZOOvirtue - корзина для ZOO, Яндекс.Карты для ZOO, ItemPanes - табы для ZOO, ZOOlendar - календарь для ZOO  и др.
Создание расширений для YOOtheme ZOO на заказ. Становитесь в очередь.

Re: Вытащить значение элемента, ZOO 3.x
« Ответ #11 : 27.12.2013, 18:57:57 »
То что было описано, а именно ->get('value'), относится к полю текста, у селекта другой формат, посмотрите сам элемент.

к сожалению у меня с элементом Селект так ничего и не вышло, пересмотрел весь PHP этого элемента, и перепробовал все что в нем есть, (а может и не все, я столько комбинаций перепробовал, что сбился со счета и толку), но нет худа без добра
я реализовал то что хотел при помощи элемента Текст (как Вы выше мне объяснили) + поэтому же принципу я смог сделать вписывание Декскрипшна с определенного для этого элемента ТекстАриа

$document =& JFactory::getDocument();
if ($category = $this->item->getPrimaryCategory()){
     $document->setTitle($this->item->name.' - 3d модель - '.$this->item->getElement('c4124947-05a3-4ce5-97ee-c08848806390')->get('value'));
     $document->setDescription($this->item->getElement('83ba7366-d126-40f0-923e-3e7a94f0e773')->get('value'));
}

хотел еще как то оформить подобное для Keywords - стобы они брались с Тегов ЗУУ, но не нашел ИД этого эелемента, в конфиге, его просто нет (((
но думаю - это станет моим следущим "подвигом" немного позже )))

Благодарю  Вас MetaSpirit, спасибо Вам за оказанную помощь

*

Оффлайн MetaSpirit

  • ******
  • 1383
  • [+]106 / [-]0
  • Пол: Мужской
  • R.A.S.Lab[.org]
    • Просмотр профиля
    • R.A.S.Lab[.org]
Re: Вытащить значение элемента, ZOO 3.x
« Ответ #12 : 27.12.2013, 19:53:38 »
Если нужно, то все это реализовано в ZOOptimizere.
R.A.S.Lab[.org]: ZOOvirtue - корзина для ZOO, Яндекс.Карты для ZOO, ItemPanes - табы для ZOO, ZOOlendar - календарь для ZOO  и др.
Создание расширений для YOOtheme ZOO на заказ. Становитесь в очередь.

Re: Вытащить значение элемента, ZOO 3.x
« Ответ #13 : 27.12.2013, 19:54:59 »
если вдруг кому-то мой труд пригодится, немного усовершенствовал

$document =& JFactory::getDocument();
if ($category = $this->item->getPrimaryCategory()){
     $document->setTitle($this->item->name.' - 3d модель - '.$this->item->getElement('c4124947-05a3-4ce5-97ee-c08848806390')->get('value').' | CINEMA4D.801S ');
     $document->setDescription(' Скачать бесплатно '.$this->item->getElement('83ba7366-d126-40f0-923e-3e7a94f0e773')->get('value').' для Cinema 4d, в формате - '.$this->item->getElement('c4124947-05a3-4ce5-97ee-c08848806390')->get('value'));
}

в итоге получим

  <title>Средневековый дом - 3d модель - c4d, obj, 3ds | CINEMA4D.801S </title>
  <meta name="description" content=" Скачать бесплатно Low Poly 3д модель Дома времен Средневековья, с текстурами для Cinema 4d, в формате - c4d, obj, 3ds" />

Re: Вытащить значение элемента, ZOO 3.x
« Ответ #14 : 27.12.2013, 20:01:39 »
Если нужно, то все это реализовано в ZOOptimizere.

спасибо, но мне хотелось докопаться до истины, так сказать,
я в будущем планирую, заниматься разработками сайта, и это стало для меня первыми шишками в PHP

я понимаю - что это конечно не метод его изучения, но хоть какой-то, опыт )))
___________

немного не по теме, не подскажите какие нибудь СТОЯЩИЕ книги или источник по изучению PHP, да-да, Google мне в руки, но может есть какие-то действительно хорошие труды на эту тему

*

Оффлайн MetaSpirit

  • ******
  • 1383
  • [+]106 / [-]0
  • Пол: Мужской
  • R.A.S.Lab[.org]
    • Просмотр профиля
    • R.A.S.Lab[.org]
Re: Вытащить значение элемента, ZOO 3.x
« Ответ #15 : 27.12.2013, 20:13:16 »
хаками далеко не продвинитесь,
основной труд - правильно поставленная задача и ее решение
R.A.S.Lab[.org]: ZOOvirtue - корзина для ZOO, Яндекс.Карты для ZOO, ItemPanes - табы для ZOO, ZOOlendar - календарь для ZOO  и др.
Создание расширений для YOOtheme ZOO на заказ. Становитесь в очередь.

*

Оффлайн likrion

Re: Вытащить значение элемента, ZOO 3.x
« Ответ #16 : 01.01.2014, 06:25:56 »
немного не по теме, не подскажите какие нибудь СТОЯЩИЕ книги или источник по изучению PHP, да-да, Google мне в руки, но может есть какие-то действительно хорошие труды на эту тему

https://www.youtube.com/user/MrBooravoi/videos

нажимайте на кнопку "ЕЩЕ"

внизу должны быть лекции по php с 1 по 4 уровень(с установки php до ООП)
лекции читает профессор мгту им.Баумана  - очнь понятно доступно для изучения с нуля самое то, + еще много полезной информации

каждая лекция в среднем по два с половиной часа, не поленитесь уделить себе недельку для изучения
« Последнее редактирование: 01.01.2014, 06:29:13 от likrion »
R331474010295

*

Оффлайн newvideo

Re: Вытащить значение элемента, ZOO 3.x
« Ответ #17 : 23.01.2017, 14:09:26 »
Думаю с тэгами будет сложнее, там массив, я пытаюсь получить значение тэгов на странице, где выведен элемент с тэгами, но ничего не получается.
Вот так устроен вывод в элементе
public function render($params = array()) {

$params = $this->app->data->create($params);

$values = array();
if ($params->get('linked')) {
foreach ($this->_item->getTags() as $tag) {
$values[] = '<a href="'.JRoute::_($this->app->route->tag($this->_item->application_id, $tag)).'">'.$tag.'</a>';
}
} else {
$values = $this->_item->getTags();
}

return $this->app->element->applySeparators($params->get('separated_by'), $values);
}

в странице пишу
$tagg = $this->_item->getTags() as $tag;
echo 'tagggg: '.$tagg;
Выдает синтаксическую ошибку  syntax error, unexpected T_AS

мне не нужны значения все в цикле, пойдет первый в списке, как его выковырять?
кто не работает, тот ест

*

Оффлайн robert

Re: Вытащить значение элемента, ZOO 3.x
« Ответ #18 : 23.01.2017, 14:17:13 »
Выдает синтаксическую ошибку  syntax error, unexpected T_AS
мне не нужны значения все в цикле, пойдет первый в списке, как его выковырять?
А цикла-то нету, вы просто изнасиловали PHP!
Не вникал в ZOO, но по контексту тут должен быть массив, так что это должно работать:
Код: (php-brief) [Выделить]
$tagg = $this->_item->getTags();
echo 'tagggg: '.$tagg[0];
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.

*

Оффлайн newvideo

Re: Вытащить значение элемента, ZOO 3.x
« Ответ #19 : 23.01.2017, 14:35:57 »
$tagg = $this->_item->getTags();
echo 'tagggg: '.$tagg[0];
Спасибо, помогло, плюс!))
Цикл я имел в виду в коде элемента, он же ищет все тэги - foreach кажется.
кто не работает, тот ест