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


Фотография
- - - - -

Как сделать кнопку скачивания?

кнопка скачать

Лучший Ответ SmetDenis , 03 November 2015 - 08:02

Немного переделал весь класс. Попробуйте Перейти к сообщению


  • Закрытая тема Тема закрыта
Сообщений в теме: 10

#1 inte

inte

Отправлено 21 October 2015 - 14:16

Всем привет!

Занимаюсь каталогом программ и у меня есть тривиальная, на первый взгляд, проблема.

Элемент ссылка не импортируется/экспортируется и не умеет включать анкоры с фронта.

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

 

Хочу спросить, может кто решал эту задачу или знает рецепт?

 

Особенная проблема в том, некоторые разработчики меняют ссылки на новые версии файлов. А я работаю пакетно: спарсил набор данных (например: версия и ссылка/ссылки) и все обновляю импортом. А элемент Ссылка не умеет получать анкоры с CSV.

 

Как сделать нормальные кнопки с ссылками и анкорами?


  • 0

#2 isay777

isay777

Отправлено 21 October 2015 - 21:49

Пробовали поизвощаться с элементом download?


  • 0
ХОСТИНГ для сайтов jbzoo (все попугаи)

#3 inte

inte

Отправлено 22 October 2015 - 00:14

Пробовали поизвощаться с элементом download?

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


  • 0

#4 SmetDenis

SmetDenis

Отправлено 27 October 2015 - 13:47

Работа со ссылкой происходит в этом классе
media\zoo\applications\jbuniversal\framework\elements\user\link.php

Попробуйте добавить функцию
    /**
     * @param      $value
     * @param null $position
     * @return Item|void
     */
    public function fromCSV($value, $position = null)
    {
        if (strpos($value, JBCSVItem::SEP_CELL) === false) {
            $text = '';
            $link = $value;
        } else {
            list($link, $text) = explode(JBCSVItem::SEP_CELL, $value);
        }

        $this->_element->bindData(array(
            'text'  => $this->_getString($text),
            'value' => $this->_getString($link),
        ));

        return $this->_item;
    }
В импортируемом файле ссылка может выглядеть как
http://site.com/
либо
http://site.com/|||Текст ссылки

  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#5 inte

inte

Отправлено 29 October 2015 - 18:47

Работа со ссылкой происходит в этом классе
media\zoo\applications\jbuniversal\framework\elements\user\link.php

Попробуйте добавить функцию

    /**
     * @param      $value
     * @param null $position
     * @return Item|void
     */
    public function fromCSV($value, $position = null)
    {
        if (strpos($value, JBCSVItem::SEP_CELL) === false) {
            $text = '';
            $link = $value;
        } else {
            list($link, $text) = explode(JBCSVItem::SEP_CELL, $value);
        }

        $this->_element->bindData(array(
            'text'  => $this->_getString($text),
            'value' => $this->_getString($link),
        ));

        return $this->_item;
    }
В импортируемом файле ссылка может выглядеть как
http://site.com/
либо
http://site.com/|||Текст ссылки

Добавил. При попытке экспорта (для того, сделать файл импорта) получаю ошибку:

Parse error: syntax error, unexpected 'public' (T_PUBLIC) in /*******************/public_html/media/zoo/applications/jbuniversal/framework/elements/user/link.php on line 40

И ошибка, когда добавил функцию в класс JBCSVItemUserLink

Parse error: syntax error, unexpected end of file, expecting function (T_FUNCTION) in /*************************/public_html/media/zoo/applications/jbuniversal/framework/elements/user/link.php on line 52

Сообщение отредактировал inte: 29 October 2015 - 18:54

  • 0

#6 SmetDenis

SmetDenis

Отправлено 30 October 2015 - 08:49

Можете приложить файлы, которые вы изменили?
  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#7 inte

inte

Отправлено 30 October 2015 - 10:42

 

Добавил. При попытке экспорта (для того, сделать файл импорта) получаю ошибку:

Parse error: syntax error, unexpected 'public' (T_PUBLIC) in /*******************/public_html/media/zoo/applications/jbuniversal/framework/elements/user/link.php on line 40

И ошибка, когда добавил функцию в класс JBCSVItemUserLink

Parse error: syntax error, unexpected end of file, expecting function (T_FUNCTION) in /*************************/public_html/media/zoo/applications/jbuniversal/framework/elements/user/link.php on line 52

Код, при котором возникала последняя ошибка:

<?php
/**
 * JBZoo App is universal Joomla CCK, application for YooTheme Zoo component
 *
 * @package     jbzoo
 * @version     2.x Pro
 * @author      JBZoo App http://jbzoo.com
 * @copyright   Copyright (C) JBZoo.com,  All rights reserved.
 * @license     http://jbzoo.com/license-pro.php JBZoo Licence
 * @coder       Denis Smetannikov <denis@jbzoo.com>
 */

// no direct access
defined('_JEXEC') or die('Restricted access');


/**
 * Class JBCSVItemUserLink
 */
class JBCSVItemUserLink extends JBCSVItem
{
    /**
     * Export data to CSV cell
     * @return string
     */
    public function toCSV()
    {
        foreach ($this->_item->elements[$this->_identifier] as $key => $self) {
            $this->_item->elements[$this->_identifier][$key] = isset($self['value']) ? array('value' => rtrim($self['value'], '/')) : null;
        }
        return parent::toCSV();
    }
    
    public function fromCSV($value, $position = null)
    {
        if (strpos($value, JBCSVItem::SEP_CELL) === false) {
            $text = '';
            $link = $value;
        } else {
            list($link, $text) = explode(JBCSVItem::SEP_CELL, $value);
        }
 
        $this->_element->bindData(array(
            'text'  => $this->_getString($text),
            'value' => $this->_getString($link),
        ));
}

Ошибка:

Parse error: syntax error, unexpected end of file, expecting function (T_FUNCTION) in /*************/public_html/media/zoo/applications/jbuniversal/framework/elements/user/link.php on line 47


Сообщение отредактировал inte: 30 October 2015 - 10:44

  • 0

#8 SmetDenis

SmetDenis

Отправлено 02 November 2015 - 13:25

Мне кажется вы забыли закрывающую скобку у функции или класса

 

77xu_200x0.png


  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#9 inte

inte

Отправлено 02 November 2015 - 19:21

Мне кажется вы забыли закрывающую скобку у функции или класса

 

77xu_200x0.png

Да, действительно, пропущена... Спасибо большое!

Но после исправления ошибки, к сожалению не работает импорт ссылок вообще. Ни http://site.com/, ни http://site.com/|||Текст ссылки. Пустой элемент, даже если в нем что-то до этого хранилось.

 

Но было бы шикарно, если бы элемент можно было и экспортировать.


  • 0

#10 SmetDenis

SmetDenis

Отправлено 03 November 2015 - 08:02   Лучший Ответ

Немного переделал весь класс. Попробуйте

Прикрепленные файлы

  • Прикрепленный файл  link.php   1.77К   44 Количество загрузок:

  • 2
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.






Темы с аналогичным тегами кнопка, скачать

Click to return to top of page in style!