মডিউল ডিরেক্টরিতে অবস্থিত চিত্রের জন্য থিম চিত্র শৈলী


10

সম্ভবত এটি খুব বেশি একটি ড্রুপাল 6 ভিউ পয়েন্ট থেকে এসেছে তবে ...

যখন চিত্রটি মডিউল ফোল্ডারে থাকে তখন আমি কোনও চিত্রকে কোনও চিত্রের শৈলীতে কীভাবে থিম করব? এটি আমার ব্যাটি চালাচ্ছে এবং আমি জানি যে আমি সাদামাটা কিছু মিস করছি।

এখানে আমি উদাহরণস্বরূপ কোডগুলি দেখানোর চেষ্টা করছি:

$file_uri = 'public://sites/all/modules/my_module/logo.jpg';
$data['logo'] = theme('image_style', array('style_name' => 'medium', 'path' => $file_uri));

এমনকি যদি আমি file_build_uri () ব্যবহার করি তবে আমার অস্তিত্ব নেই এমন কোনও ফাইলে যাওয়ার পথটি শেষ করি। যদি আমি চিত্রটি ফাইল ডিরেক্টরিতে স্থানান্তর করি এবং $ file_uri কে 'সর্বজনীন: //logo.jpg' এ পরিবর্তন করি তবে এটি ঠিক কাজ করে।

মডিউল কোডের অংশ হিসাবে আমার কি ফাইল ডিরেক্টরিতে ছবিটি অনুলিপি করা দরকার? যদি তা হয় তবে কি এই হাস্যকর নয়?

আমি কী মিস করছি? এই জাতীয় কিছু কীভাবে করবেন সে সম্পর্কে ডকুমেন্টেশন রয়েছে? আমি ড্রুপাল ডকুমেন্টেশন খনির জন্য এক ঘন্টারও বেশি সময় ব্যয় করেছি এবং সম্পূর্ণ শুকিয়ে এসেছি।


সর্বজনীন: //sites/all/modules/my_module/logo.jpg কার্যকরভাবে সাইট / ডিফল্ট / ফাইল / সাইট / সমস্ত / মডিউল / মাই_মডিউল / লোগো.জেপিজি অনুবাদ করে - এজন্য উপরের কাজ করে না। আমার কাছে থাকা প্রশ্নটি অনুমান করুন, কেবল থিম_ইমেজ_স্টাইলের মাধ্যমে ফাইলটি চালানোর জন্য কীভাবে আমি অনুলিপি করব?
প্রাইরিহিপ্পো

উত্তর:


4

দুর্ভাগ্যক্রমে যে নকশা দ্বারা। থেকে theme_image_style()গ্রহণযোগ্য প্যারামিটার ডক্স 'বিবরণ:

পাথ: ড্রুপাল ফাইল ডিরেক্টরি সম্পর্কিত ইমেজ ফাইলের পাথ এই ফাংশনটি ফাইল ডিরেক্টরিগুলির বাইরের চিত্রগুলি বা দূরবর্তী অবস্থানের হোস্ট করা চিত্রগুলির সাথে কাজ করে না । এটি 'ইমেজ / ইমেজ.জপিজি' এর মতো ফর্ম্যাটে থাকতে হবে বা 'পাবলিক: //images/image.jpg' এর মতো স্ট্রিম র‌্যাপার ব্যবহার করা উচিত।

জোর আমার।

মনে হচ্ছে চিত্র স্টাইল সিস্টেমটি কেবল সর্বজনীন ফাইল ডিরেক্টরিগুলির প্রসঙ্গে কাজ করে (সম্ভবত ব্যক্তিগতও, আমি নিশ্চিত নই)।

আমি সম্প্রতি একটি অনুরূপ পরিস্থিতিতে দৌড়েছি এবং এটি নিজের কোড করা শেষ করেছি (যদিও আমি মূল চিত্র মডিউলটি থেকে অনেক ধার নিয়েছি)।


ধন্যবাদ - সত্যই কামনা করুন যে এটি এইভাবে কাজ করে না তবে আমি মনে করি যে বিকাশকারীরা কেন এই পদ্ধতিটি বেছে নিয়েছে আমি তা যুক্তিযুক্ত করতে পারি।
প্রেরিহিপ্পো

9

আমি কেবল এটি পেরিয়ে এসেছি এবং হ্যান্ডেল করার জন্য কোডটি লিখতে হয়েছিল।

theme_image_style()পৃষ্ঠার অনুরোধটি কার্যকর করার সময় এটি কার্যকরভাবে চিত্র ডেরিভেটিভগুলি তৈরি করতে ক্লোন করে। প্রজন্ম সুরক্ষা সমস্যাগুলিকে বাইপাস করে যা অন্যথায় সাধারণত ৪০৪ টি ট্রিগার করে, তবে এর অর্থ পৃষ্ঠায় প্রথমবার পরিদর্শন করার সময় একটি ধীর পাতা।

আমি কেবল সর্বজনীন ফাইল স্কিমা ব্যবহার করছি, তবে আমি ব্যক্তিগত ফাইল স্কিমা ভিত্তিক শৈলীর সাথে এটি ব্যর্থ হওয়ার প্রত্যাশা করব।

    /**
     * Implements hook_theme().
     */
    function MODULE_theme() {
      return array(
        'remote_image_style' => array(
          'variables' => array(
            'style_name' => NULL,
            'path' => NULL,
            'width' => NULL,
            'height' => NULL,
            'alt' => '',
            'title' => NULL,
            'attributes' => array(),
          ),
        ),
      );
    }

    /**
     * Returns HTML for an image using a specific image style.
     *
     * Clones theme_image_style() with the additional step of forcing the creation
     * of the derivative to bypass any 404 issues.
     */
    function theme_remote_image_style($variables) {
      // Determine the dimensions of the styled image.
      $dimensions = array(
        'width' => $variables['width'],
        'height' => $variables['height'],
      );
      image_style_transform_dimensions($variables['style_name'], $dimensions);

      $variables['width'] = $dimensions['width'];
      $variables['height'] = $dimensions['height'];

      $image_style_dest_path = image_style_path($variables['style_name'], $variables['path']);
      if (!file_exists($image_style_dest_path)) {
        $style = image_style_load($variables['style_name']);
        image_style_create_derivative($style, $variables['path'], $image_style_dest_path);
      }
      $variables['path'] = file_create_url($image_style_dest_path);
      return theme('image', $variables);
    }

2

theme_image_style() পিএইচপি এর স্ট্রিম মোড়ক ব্যবহার করে কোনও ইউআরআই গ্রহণ করে সত্যিকারের পথ নয়।

input://এটি একটি পিএইচপি এর স্ট্রিম মোড়ক, যদিও public://, private://এবং , ব্যক্তিগত এবং অস্থায়ী ফোল্ডারগুলিকে temporary://উপস্থাপনের জন্য দ্রুপালের স্ট্রিম মোড়কে sites/default/files

আপনি স্পষ্টভাবে একটি চিত্র একটি মডিউল পাওয়া সঙ্গে একটি চিত্র শৈলী ব্যবহার করার প্রয়োজন হলে, আপনি চেক করতে চান পারে system_stream_wrapper মডিউল যা যোগ করা module://, theme://, profile://এবং library://প্রবাহ চাদরে।

বিজ্ঞপ্তি: এটি বর্তমান প্রশ্নের তুলনায় অপ্রাসঙ্গিক হতে পারে তবে যেহেতু এটি অন্যান্য পোস্টগুলিতে উল্লেখ করা হয়েছে, তাই আমি দূরবর্তী_প্রবাহ_আপনার মডিউলটিতেও উল্লেখ করতে চাই যা কোনও URL এর জন্য http: //, https: //, বা ফিড ব্যবহার করে সমর্থন যোগ করে: / । যদিও উল্লিখিত হিসাবে, এই স্ট্রিম র‌্যাপারগুলি কেবল পঠনযোগ্য এবং কোনও লেখার ক্রিয়াকলাপ সম্পাদন করতে পারে না তবে আমি বিশ্বাস করি এটি এর image_style_url()সাথে সম্পর্কিত ফাংশনগুলির সাথে ব্যবহৃত হতে পারে theme_image_style()

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.